code: func builtinSetUnion(a ast.Value) (ast.Value, error) {
  
  	inputSet, err := builtins.SetOperand(a, 1)
  	if err != nil {
  		return nil, err
  	}
  
  	result := ast.NewSet()
  
  	err = inputSet.Iter(func(x *ast.Term) error {
  		n, err := builtins.SetOperand(x.Value, 1)
  		if err != nil {
  			return err
  		}
  		result = result.Union(n)
  		return nil
  	})
  	return result, err
  }
docs: // builtinSetUnion returns the union of the given input sets