let tactical_terminator = "."
let tactic_terminator = tactical_terminator
+let command_terminator = tactical_terminator
let tactical_separator = ";"
let pp_term_ast term = CicAstPp.pp_term term
| `Elim -> "elim"
let pp_macro pp_term = function
+ (* Whelp *)
+ | WInstance (_, term) -> "whelp instance " ^ pp_term term
+ | WHint (_, t) -> "whelp hint " ^ pp_term t
+ | WLocate (_, s) -> "whelp locate " ^ s
+ | WElim (_, t) -> "whelp elim " ^ pp_term t
+ | WMatch (_, term) -> "whelp match " ^ pp_term term
+ (* real macros *)
| Abort _ -> "Abort"
| Check (_, term) -> sprintf "Check %s" (pp_term term)
| Hint _ -> "hint"
sprintf "alias num (instance %d) = \"%s\"" instance desc
let pp_command = function
- | Qed _ -> "Qed"
+ | Qed _ -> "qed"
| Set (_, name, value) -> sprintf "Set \"%s\" \"%s\"" name value
| Inductive (_, params, types) ->
let pp_params = function
let pp_tactical tac = pp_tactical tac ^ tactical_terminator
let pp_tactic tac = pp_tactic tac ^ tactic_terminator
-
+let pp_command tac = pp_command tac ^ command_terminator
+
+let pp_executable = function
+ | Macro (_,x) -> pp_macro_ast x
+ | Tactical (_,x) -> pp_tactical x
+ | Command (_,x) -> pp_command x
+
+let pp_comment = function
+ | Note (_,str) -> sprintf "(* %s *)" str
+ | Code (_,code) -> sprintf "(** %s. **)" (pp_executable code)
+
+let pp_statement = function
+ | Executable (_, ex) -> pp_executable ex
+ | Comment (_, c) -> pp_comment c