anchor.diff:        raw : bool
         [<Option('s', HelpText = "The stage at which Starling should stop and output.")>]
         stage : string option
  +      [<Option('m', HelpText = "Show full model in term-refinement stages.")>]
  +      showModel: bool
         [<Option('O', HelpText = "Perform no optimisation stages.")>]
         noOptimise : bool
         [<Value(0, MetaName = "input", HelpText = "The file to load (omit, or supply -, for standard input).")>]
  
positive.code: 
  /// Runs Starling with the given options, and outputs the results.
  let mainWithOptions opts = 
      let input = opts.input
      let raw = opts.raw
      let optimise = not opts.noOptimise
      
      let starlingR = 
          match (requestFromStage opts.stage) with
          | Some otype -> runStarling optimise otype input
          | None -> fail Error.BadStage
      
      let pfn = 
          if raw then (sprintf "%A" >> Starling.Pretty.Types.String)
                 else printResponse   
      printResult pfn (List.map printError) starlingR
      |> Starling.Pretty.Types.print
      |> printfn "%s"
  
negative.code:     | HSF of Horn.Horn list
  
  /// Pretty-prints a response.
  let printResponse showModel =
      (* If a stage results in a model, and we pretty-print it, we
       * either print the whole model or just the axioms, depending on
       * the -m flag.
       *)
      let pmodel pA pD m =
          if showModel
          then printModel pA pD m
          else printNumHeaderedList pA m.Axioms
          
      function 
      | Frontend f -> Lang.Frontend.printResponse f
      | Destructure m -> pmodel (printPAxiom printCView) printDView m
      | Expand m -> pmodel (printPAxiom printGView) printDView m
      | Semantics m -> pmodel (printSAxiom printGView) printDView m
      | Frame m -> pmodel printFramedAxiom printDView m
      | TermGen m -> pmodel (printSTerm printGView printView) printDView m
      | Reify m -> pmodel (printSTerm printViewSet printView) printDView m
      | Flatten m -> pmodel (printSTerm printGView printVFunc) printDFunc m
      | Optimise m -> pmodel (printSTerm printGView printVFunc) printDFunc m
      | Z3 z -> Z3.Backend.printResponse z
      | HSF h -> Starling.Pretty.Horn.printHorns h
  
  