code: func (c *Compiler) checkSafetyRuleBodies() {
  	for _, name := range c.sorted {
  		m := c.Modules[name]
  		WalkRules(m, func(r *Rule) bool {
  			safe := ReservedVars.Copy()
  			safe.Update(r.Head.Args.Vars())
  			r.Body = c.checkBodySafety(safe, m, r.Body, r.Loc())
  			return false
  		})
  	}
  }
docs: // checkSafetyRuleBodies ensures that variables appearing in negated expressions or non-target
  // positions of built-in expressions will be bound when evaluating the rule from left
  // to right, re-ordering as necessary.