anchor.diff:      | Semantics
       /// Stop at term optimisation.
       | TermOptimise
  -    /// Output a fully-instantiated proof.
  -    | Proof
  +    /// Output a fully-instantiated proof with symbols.
  +    | SymProof
       /// Run the Z3 backend, with the given request.
       | Z3 of Backends.Z3.Types.Request
       /// Run the MuZ3 backend (experimental), with the given request.
  
positive.code: let printResult pOk pBad =
      either (printOk pOk pBad) (printErr pBad)
  
  /// Shorthand for the proof-output stage.
  let proof = bind (Core.Instantiate.Phase.run >> mapMessages Error.ModelFilterError)
  
  /// Shorthand for the HSF stage.
  let hsf = bind (Backends.Horn.hsfModel >> mapMessages Error.HSF)
  
negative.code:         printUFModelView (printSTerm printSMGView printSMVFunc) mview m
      | TermOptimise m ->
          printUFModelView (printSTerm printSMGView printSMVFunc) mview m
      | SymProof m ->
          printModelView
              (printTerm printSMBoolExpr printSMBoolExpr printSMBoolExpr)
              (fun _ -> Seq.empty)
  