let tactic_terminator = tactical_terminator
let command_terminator = tactical_terminator
-let pp_idents idents = "[" ^ String.concat "; " idents ^ "]"
+let pp_idents idents = "(" ^ String.concat " " idents ^ ")"
let pp_reduction_kind ~term_pp = function
| `Normalize -> "normalize"
String.concat " "
(List.map (fun (k,v) -> if v <> "" then k ^ "=" ^ v else k) params)
| Assumption _ -> "assumption"
+ | Cases (_, term, idents) -> sprintf "cases " ^ term_pp term ^
+ pp_intros_specs (None, idents)
| Change (_, where, with_what) ->
sprintf "change %s with %s" (pp_tactic_pattern where) (lazy_term_pp with_what)
| Clear (_,ids) -> sprintf "clear %s" (pp_idents ids)
(match terms with [] -> "" | _ -> " to " ^ terms_pp ~term_pp terms)
(match ident_opt with None -> "" | Some ident -> " as " ^ ident)
| Left _ -> "left"
- | LetIn (_, term, ident) -> sprintf "let %s in %s" (term_pp term) ident
+ | LetIn (_, term, ident) -> sprintf "letin %s \\def %s" ident (term_pp term)
| Reduce (_, kind, pat) ->
sprintf "%s %s" (pp_reduction_kind kind) (pp_tactic_pattern pat)
| Reflexivity _ -> "reflexivity"
| Thesisbecomes (_, term) -> "the thesis becomes " ^ term_pp term
| ExistsElim (_, term0, ident, term, ident1, term1) -> "by " ^ term_pp term0 ^ "let " ^ ident ^ ":" ^ term_pp term ^ "such that " ^ term_pp term1 ^ "(" ^ ident1 ^ ")"
| AndElim (_, term, ident1, term1, ident2, term2) -> "by " ^ term_pp term ^ "we have " ^ term_pp term1 ^ " (" ^ ident1 ^ ") " ^ "and " ^ term_pp term2 ^ " (" ^ ident2 ^ ")"
- | RewritingStep (_, term, term1, term2, cont) -> (match term with None -> " " | Some term -> "obtain " ^ term_pp term) ^ "=" ^ term_pp term1 ^ (match term2 with None -> "_" | Some term2 -> term_pp term2) ^ (match cont with None -> " done" | Some Cic.Anonymous -> "" | Some (Cic.Name id) -> " we proved " ^ id)
+ | RewritingStep (_, term, term1, term2, cont) -> (match term with None -> " " | Some (None,term) -> "conclude " ^ term_pp term | Some (Some name,term) -> "obtain (" ^ name ^ ") " ^ term_pp term) ^ "=" ^ term_pp term1 ^ (match term2 with `Auto params -> "_" ^ String.concat " " (List.map (fun (k,v) -> if v <> "" then k ^ "=" ^ v else k) params) | `Term term2 -> term_pp term2) ^ (if cont then " done" else "")
| Case (_, id, args) ->
"case" ^ id ^
String.concat " "
let pp_macro ~term_pp =
let term_pp = pp_arg ~term_pp in
+ let style_pp = function
+ | Declarative -> ""
+ | Procedural -> "procedural "
+ in
+ let prefix_pp prefix =
+ if prefix = "" then "" else sprintf " \"%s\"" prefix
+ in
function
(* Whelp *)
| WInstance (_, term) -> "whelp instance " ^ term_pp term
(* real macros *)
| Check (_, term) -> sprintf "check %s" (term_pp term)
| Hint _ -> "hint"
- | Inline (_, suri, "") -> sprintf "inline \"%s\"" suri
- | Inline (_, suri, prefix) -> sprintf "inline \"%s\" \"%s\"" suri prefix
+ | Inline (_, style, suri, prefix) ->
+ sprintf "inline %s\"%s\"%s" (style_pp style) suri (prefix_pp prefix)
let pp_associativity = function
| Gramext.LeftA -> "left associative"
let pp_comment ~term_pp ~lazy_term_pp ~obj_pp =
function
- | Note (_,str) -> sprintf "(* %s *)" str
+ | Note (_,"") -> sprintf "\n"
+ | Note (_,str) -> sprintf "(* %s *)\n" str
| Code (_,code) ->
- sprintf "(** %s. **)" (pp_executable ~term_pp ~lazy_term_pp ~obj_pp code)
+ sprintf "(** %s. **)\n" (pp_executable ~term_pp ~lazy_term_pp ~obj_pp code)
let pp_statement ~term_pp ~lazy_term_pp ~obj_pp =
function