code: func ParseRuleFromCallEqExpr(module *Module, lhs, rhs *Term) (*Rule, error) {
  
  	call, ok := lhs.Value.(Call)
  	if !ok {
  		return nil, fmt.Errorf("must be call")
  	}
  
  	rule := &Rule{
  		Location: lhs.Location,
  		Head: &Head{
  			Location: lhs.Location,
  			Name:     call[0].Value.(Ref)[0].Value.(Var),
  			Args:     Args(call[1:]),
  			Value:    rhs,
  		},
  		Body:   NewBody(NewExpr(BooleanTerm(true).SetLocation(rhs.Location)).SetLocation(rhs.Location)),
  		Module: module,
  	}
  
  	return rule, nil
  }
docs: // ParseRuleFromCallEqExpr returns a rule if the term can be interpreted as a
  // function definition (e.g., f(x) = y => f(x) = y { true }).