anchor.diff:  let mkEq (ctx: Z3.Context) = curry ctx.MkEq
   /// Curried wrapper over MkDiv.
   let mkDiv (ctx: Z3.Context) = curry ctx.MkDiv
  -
  -
  -/// Wrapper over MkNot.
  -let mkNot (ctx: Z3.Context) = ctx.MkNot
  
positive.code: let mkNeq (ctx: Z3.Context) l r =
      ctx.MkNot (ctx.MkEq (l, r))
  
  /// Makes an implication from a pair of two expressions.
  let mkImplies (ctx: Z3.Context) l r =
      (* l => r <-> ¬l v r.
  
negative.code:      *)
      match l, r with
      | (ZFalse, _) | (_, ZTrue) -> ctx.MkTrue ()
      | (x, ZFalse) -> mkNot ctx x
      | (ZTrue, x) -> x
      | _ -> ctx.MkImplies (l, r)
  
  