anchor.diff:      | Ge of string * Term
       | Lt of string * Term
       | Le of string * Term
  +    | If of string * (Term -> bool)
       | Not of Subquery
       | And of Subquery list
       | Or of Subquery list
  
positive.code:     static member singleton termName term = Term.dict [(termName, term)]
      static member zero = Term.dict []
  
  and [<StructuralEquality; NoComparison>] Subquery =
      | Is of string
      | Of of string * string
      | ByName of string * string
  
negative.code:             match terms.TryGetValue termName with
              | (true, term) -> Subquery.lesserEqual term term2
              | (false, _) -> false
          | If (termName, pred) ->
              match terms.TryGetValue termName with
              | (true, term) -> pred term
              | (false, _) -> false
          | Not subquery ->
              not (Subquery.eval terms subquery)
          | And subqueries ->
  