anchor.diff:  
   type [<StructuralEquality; NoComparison>] Subquery =
       | Eq of Term
  -    | Gt of Number
  -    | Ge of Number
  -    | Lt of Number
  -    | Le of Number
  +    | Gt of Term
  +    | Ge of Term
  +    | Lt of Term
  +    | Le of Term
       | Not of Subquery
       | And of Subquery list
       | Or of Subquery list
  
positive.code: 
      static member eval term subquery =
          match subquery with
          | Eq term  ->
              Subquery.equalTo term term
          | Gt c ->
              match term with
              | Number c2 -> match (c, c2) with (Z i, Z i2) -> i > i2 | (R s, R s2) -> s > s2 | _ -> false
              | _ -> false
          | Ge c ->
              match term with
              | Number c2 -> match (c, c2) with (Z i, Z i2) -> i >= i2 | (R s, R s2) -> s >= s2 | _ -> false
              | _ -> false
          | Lt c ->
              match term with
              | Number c2 -> match (c, c2) with (Z i, Z i2) -> i < i2 | (R s, R s2) -> s < s2 | _ -> false
              | _ -> false
          | Le c ->
              match term with
              | Number c2 -> match (c, c2) with (Z i, Z i2) -> i <= i2 | (R s, R s2) -> s <= s2 | _ -> false
              | _ -> false
          | Not subquery ->
              not (Subquery.eval term subquery)
          | And subqueries ->
  
negative.code:         match (term, term2) with
          | (Tag tag, Tag tag2) -> strEq tag tag2
          | (Entity entityId, Entity entityId2) -> entityId = entityId2
          | (Z i, Z i2) -> i = i2
          | (R i, R i2) -> i = i2
          | (Terms terms, Terms terms2) ->
              if terms.Length = terms2.Length
              then List.forall2 Subquery.equalTo terms terms2
  