anchor.diff:      else
           let cs = conjuncts |> Seq.filter (fun (x: Z3.BoolExpr) -> not x.IsTrue) |> Array.ofSeq
           match cs with
  +        // True is the zero of and.
           | [||] -> ctx.MkTrue ()
           | [| x |] -> x
           | xs -> ctx.MkAnd (xs)
  
positive.code:     else
          let ds = disjuncts |> Seq.filter (fun (x: Z3.BoolExpr) -> not x.IsFalse) |> Array.ofSeq
          match ds with
          | [||] -> ctx.MkFalse ()
          | [| x |] -> x
          | xs -> ctx.MkOr (xs)
  
  /// Makes an And from a pair of two expressions.
  let mkAnd2 (ctx: Z3.Context) l r =
      match l, r with
      | (ZFalse, _) | (_, ZFalse) -> ctx.MkFalse ()
      | _ -> ctx.MkAnd [| l; r |]
  
  /// Makes an Or from a pair of two expressions.
  let mkOr2 (ctx: Z3.Context) l r =
      match l, r with
      | (ZTrue, _) | (_, ZTrue) -> ctx.MkTrue ()
      | _ -> ctx.MkOr [| l; r |]
  
  /// Makes not-equals.
  let mkNeq (ctx: Z3.Context) l r =
  
negative.code: 
  let mkNot (ctx: Z3.Context) x =
      match x with
      // Simplify obviously false or true exprs to their negation.
      | ZFalse -> ctx.MkTrue ()
      | ZTrue -> ctx.MkFalse ()
      | _ -> ctx.MkNot x
  