anchor.diff:  /// case and failure messages.
   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)
  
positive.code:     | Flatten of UFModel<STerm<SMGView, SMVFunc>>
      /// The result of term optimisation.
      | TermOptimise of UFModel<STerm<SMGView, SMVFunc>>
      /// The result of Z3 backend processing.
      | Z3 of Backends.Z3.Types.Response
      /// The result of MuZ3 backend processing.
  
negative.code:                  else id)
  
          match request with
          | Request.Proof   -> phase proof Response.Proof
          | Request.HSF     -> phase (filterIndefinite >> hsf) Response.HSF
          | Request.Z3 rq   -> phase (maybeApprox >> filterDefinite >> z3 reals rq) Response.Z3
          | Request.MuZ3 rq -> phase (filterIndefinite >> muz3 reals rq) Response.MuZ3
  