anchor.diff:      | Lt of Subquery * Subquery
       | Le of Subquery * Subquery
       | If of Subquery * Subquery * Subquery
  -    | Intersect of Subquery * Subquery
  -    | Or of Subquery list
  -    | And of Subquery list
  +    | Intersects of Subquery * Subquery
  +    | Or of Subquery * Subquery
  +    | And of Subquery * Subquery
       | Not of Subquery
       | Val of Term
       | Var of string
  
positive.code:             if ty = typeof<int> then Val (I (value :?> int))
              elif ty = typeof<single> then Val (F (value :?> single))
              else failwith "Unsupported value type."
          | Patterns.Let (var, q, q2) -> 
              Let (var.Name, Subquery.unquote q, Subquery.unquote q2)
          | Patterns.IfThenElse (predicate, consequent, alternative) ->
              If (Subquery.unquote predicate, Subquery.unquote consequent, Subquery.unquote alternative)
          | Patterns.Call (_, info, args) ->
              match (info.Name, args) with
              | ("at", [arg; arg2]) -> At (Subquery.unquote arg, Subquery.unquote arg2)
              | ("head", [arg]) -> Head (Subquery.unquote arg)
              | ("tail", [arg]) -> Tail (Subquery.unquote arg)
              | ("not", [arg]) -> Not (Subquery.unquote arg)
              | ("op_Equality", [arg; arg2]) -> Eq (Subquery.unquote arg, Subquery.unquote arg2)
              | ("op_LessThan", [arg; arg2]) -> Lt (Subquery.unquote arg, Subquery.unquote arg2)
              | ("op_LessThanOrEqual", [arg; arg2]) -> Le (Subquery.unquote arg, Subquery.unquote arg2)
  
negative.code:             | (false, _) -> Err "Non-existent term."
          | Fun fn ->
              fn terms
          | Subqueries subqueries ->
              Terms (List.map (Subquery.eval terms) subqueries)
  
      static member evalMany (terms : Map<string, Term>) (subqueries : Subquery seq) =
          let mutable result = true
  