anchor.diff:  
       let starlingR =
           match (requestFromStage opts.stage) with
  +        // Handle pseudo-requests here, as it's cleaner than doing so in
  +        // runStarling.
  +        | Some Request.List ->
  +            ok (Response.List (Map.map (fun _ -> fst) requestMap))
           | Some otype -> runStarling times optS backendS verbose otype opts.input
           | None -> fail Error.BadStage
   
  
positive.code: 
  /// Map of -s stage names to Request items.
  let requestMap =
      Map.ofList [ ("parse", Request.Frontend Lang.Frontend.Request.Parse)
                   ("collate", Request.Frontend Lang.Frontend.Request.Collate)
                   ("model", Request.Frontend Lang.Frontend.Request.Model)
                   ("guard", Request.Frontend Lang.Frontend.Request.Guard)
                   ("graph", Request.Frontend Lang.Frontend.Request.Graph)
                   ("graphOptimise", Request.GraphOptimise)
                   ("axiomatise", Request.Axiomatise)
                   ("goalAdd", Request.GoalAdd)
                   ("termgen", Request.TermGen)
                   ("reify", Request.Reify)
                   ("flatten", Request.Flatten)
                   ("semantics", Request.Semantics)
                   ("termOptimise", Request.TermOptimise)
                   ("symproof", Request.SymProof)
                   ("proof", Request.Proof)
                   ("reifyZ3", Request.Z3 Backends.Z3.Types.Request.Translate)
                   ("z3", Request.Z3 Backends.Z3.Types.Request.Combine)
                   ("sat", Request.Z3 Backends.Z3.Types.Request.Sat)
                   ("mutranslate", Request.MuZ3 Backends.MuZ3.Types.Request.Translate)
                   ("mufix", Request.MuZ3 Backends.MuZ3.Types.Request.Fix)
                   ("musat", Request.MuZ3 Backends.MuZ3.Types.Request.Sat)
                   ("hsf", Request.HSF) ]
  
  /// Converts an optional -s stage name to a request item.
  /// If none is given, the latest stage is selected.
  let requestFromStage ostage =
      Map.tryFind (withDefault "sat" ostage) requestMap
  
  /// Type of possible outputs from a Starling run.
  [<NoComparison>]
  type Response =
      /// The result of frontend processing.
      | Frontend of Lang.Frontend.Response
      /// Stop at graph optimisation.
  
negative.code: /// Pretty-prints a response.
  let printResponse mview =
      function
      | List l -> printMap Indented String String l
      | Frontend f -> Lang.Frontend.printResponse mview f
      | GraphOptimise g ->
          printUVModelView printGraph mview g
  