anchor.diff:              Translator.mkQuantifiedEntailment
                   ctx
                   z3Vars
  -                (ctx.MkAnd [| boolToZ3 reals id ctx (mkNot def)
  -                              Translator.translateVFunc reals id ctx fm view |])
  +                (ctx.MkAnd [| boolToZ3 shouldUseRealsForInts id ctx (mkNot def)
  +                              Translator.translateVFunc
  +                                  shouldUseRealsForInts id ctx funcDecls view |])
                   unsafeapp
           Option.iter fixedpoint.AddRule viewImpliesDef
   
  
positive.code: module Run =
      open Starling.Core.Z3.Expr
  
      let genViewDefRule reals (ctx : Z3.Context) fm (fixedpoint : Z3.Fixedpoint) (unsafeapp : Z3.BoolExpr) view def =
          let defImpliesView =
              Translator.mkRule reals id ctx fm def Multiset.empty view
          Option.iter fixedpoint.AddRule defImpliesView
  
          // TODO(CaptainHayashi): de-duplicate this with mkRule.
  
negative.code:         let z3Vars =
              Set.toArray
                  (Set.map
                      (fun (var : TypedVar) ->
                          ctx.MkConst
                              (valueOf var,
                               Translator.typeToSort
                                  shouldUseRealsForInts ctx (typeOf var)))
                      vars)
  
          // Introduce 'V ^ ¬D(V) -> unsafe'.
  