anchor.diff:          | Patterns.Var var ->
               Var var.Name
           | Patterns.Value (value, ty) ->
  -            if ty = typeof<int> then Val (I (value :?> int))
  -            elif ty = typeof<single> then Val (F (value :?> single))
  +            if ty = typeof<bool> then Val (Bool (value :?> bool))
  +            elif ty = typeof<int> then Val (Int (value :?> int))
  +            elif ty = typeof<single> then Val (Single (value :?> single))
               elif ty = typeof<Map<string, Term> -> Term> then Fun (value :?> (Map<string, Term> -> Term))
               else failwith "Unsupported Val or Fun type."
           | Patterns.Let (var, q, q2) -> 
  
positive.code:             | (term, term2) -> Subquery.le term term2
          | If (predicate, consequent, alternate) ->
              match Subquery.eval terms predicate with
              | B b -> if b then Subquery.eval terms consequent else Subquery.eval terms alternate
              | Err _ as err -> err
              | _ -> Err "Invalid If predicate; B required."
          | GetX subquery ->
              match Subquery.eval terms subquery with V3 v -> F v.X | Err _ as err -> err | _ -> Err "Invalid GetX argument; V3 required."
          | GetY subquery ->
              match Subquery.eval terms subquery with V3 v -> F v.Y | Err _ as err -> err | _ -> Err "Invalid GetY argument; V3 required."
          | GetZ subquery ->
              match Subquery.eval terms subquery with V3 v -> F v.Z | Err _ as err -> err | _ -> Err "Invalid GetZ argument; V3 required."
          | GetPosition subquery ->
              match Subquery.eval terms subquery with Box3 box -> V3 box.Position | Err _ as err -> err | _ -> Err "Invalid GetPosition argument; Box3 required."
          | GetSize subquery ->
              match Subquery.eval terms subquery with Box3 box -> V3 box.Size | Err _ as err -> err | _ -> Err "Invalid GetSize argument; Box3 required."
          | Intersects (subquery, subquery2) ->
              match (Subquery.eval terms subquery, Subquery.eval terms subquery2) with
              | (Box3 box, Box3 box2) -> B (box.Intersects box2)
              | (V3 v, Box3 box) | (Box3 box, V3 v)-> B (box.Intersects v)
              | ((Err _ as err), _) -> err
              | (_, (Err _ as err)) -> err
              | (_, _) -> Err "Invalid Intersect arguments."
          | Or (subquery, subquery2) ->
              match (Subquery.eval terms subquery, Subquery.eval terms subquery2) with
              | (B b, B b2) -> B (b || b2)
              | ((Err _ as err), _) -> err
              | (_, (Err _ as err)) -> err
              | (_, _) -> Err "Invalid Or arguments; two B's required."
          | And (subquery, subquery2) ->
              match (Subquery.eval terms subquery, Subquery.eval terms subquery2) with
              | (B b, B b2) -> B (b && b2)
              | ((Err _ as err), _) -> err
              | (_, (Err _ as err)) -> err
              | (_, _) -> Err "Invalid And arguments; two B's required."
          | Not subquery ->
              match Subquery.eval terms subquery with
              | B b -> B (not b)
              | Err _ as err -> err
              | _ -> Err "Invalid Not argument; B required."
          | Val term ->
  
negative.code:             | _ -> Err "Invalid Fst argument; Pair required."
          | At (subquery, subquery2) ->
              match (Subquery.eval terms subquery, Subquery.eval terms subquery2) with
              | (Terms terms2, Int index) ->
                  match Seq.tryItem index terms2 with
                  | Some item -> item
                  | None -> Bool false
              | ((Err _ as err), _) -> err
              | (_, (Err _ as err)) -> err
              | (_, _) -> Err "Invalid At arguments; Terms and I required."
  