anchor.diff:          { /// <summary>
             ///     List of definite viewdefs, as (view, def) pairs, to check.
             /// </summary>
  -          Definites : (Z3.BoolExpr * Z3.BoolExpr) list
  +          Definites : (VFunc * BoolExpr) list
             /// <summary>
             ///     Map of (view name, FuncDecl) bindings.
             /// </summary>
  
positive.code:      *)
  
      /// <summary>
      ///     Constructs a rule for initialising a variable.
      /// </summary>
      /// <param name="ctx">
  
negative.code: 
          List.iter
              (fun (view, def) ->
                   // TODO(CaptainHayashi): de-duplicate this with mkRule.
                   let vars =
                      seq {
                          yield! (varsInBool def)
                          for param in view.Params do
                              yield! (varsIn param)
                      }
                      |> Set.ofSeq
                      |> Set.map (fun (name, ty) ->
                                      ctx.MkConst (constToString name, typeToSort ctx ty))
                      |> Set.toArray
  
                   fixedpoint.AddRule (
                      ctx.MkForall (vars,
                                    ctx.MkImplies (ctx.MkAnd [| def |> mkNot |> boolToZ3 ctx
                                                                translateVFunc ctx fm view |],
                                                   unsafeapp))))
              ds
  
          Map.iter (fun (s : string) g -> fixedpoint.AddRule (g, ctx.MkSymbol s :> Z3.Symbol)) rs
  