+let pp_flavour = function
+ | `Definition -> "Definition"
+ | `Fact -> "Fact"
+ | `Goal -> "Goal"
+ | `Lemma -> "Lemma"
+ | `Remark -> "Remark"
+ | `Theorem -> "Theorem"
+
+let pp_command = function
+ | Abort -> "Abort"
+ | Check term -> sprintf "Check %s" (CicAstPp.pp_term term)
+ | Proof -> "Proof"
+ | Qed name ->
+ (match name with None -> "Qed" | Some name -> sprintf "Save %s" name)
+ | Quit -> "Quit"
+ | Redo None -> "Redo"
+ | Redo (Some n) -> sprintf "Redo %d" n
+ | Theorem (flavour, name, typ, body) ->
+ sprintf "%s %s: %s %s"
+ (pp_flavour flavour)
+ (match name with None -> "" | Some name -> name)
+ (CicAstPp.pp_term typ)
+ (match body with
+ | None -> ""
+ | Some body -> "\\def " ^ CicAstPp.pp_term body)
+ | Undo None -> "Undo"
+ | Undo (Some n) -> sprintf "Undo %d" n
+