code: func builtinSetIntersection(a ast.Value) (ast.Value, error) {
  
  	inputSet, err := builtins.SetOperand(a, 1)
  	if err != nil {
  		return nil, err
  	}
  
  	// empty input set
  	if inputSet.Len() == 0 {
  		return ast.NewSet(), nil
  	}
  
  	var result ast.Set
  
  	err = inputSet.Iter(func(x *ast.Term) error {
  		n, err := builtins.SetOperand(x.Value, 1)
  		if err != nil {
  			return err
  		}
  
  		if result == nil {
  			result = n
  		} else {
  			result = result.Intersect(n)
  		}
  		return nil
  	})
  	return result, err
  }
docs: // builtinSetIntersection returns the intersection of the given input sets