in
pp_t t ^ " in " ^ pp_hyp_pattern hyp ^ " \\vdash " ^ pp_term_ast goal
+let pp_intros_specs = function
+ | None, [] -> ""
+ | Some num, [] -> Printf.sprintf " names %i" num
+ | None, idents -> Printf.sprintf " names %s" (pp_idents idents)
+ | Some num, idents -> Printf.sprintf " names %i %s" num (pp_idents idents)
+
let rec pp_tactic = function
| Absurd (_, term) -> "absurd" ^ pp_term_ast term
| Apply (_, term) -> "apply " ^ pp_term_ast term
| Decompose (_, term) ->
sprintf "decompose %s" (pp_term_ast term)
| Discriminate (_, term) -> "discriminate " ^ pp_term_ast term
- | Elim (_, term, using) ->
+ | Elim (_, term, using, num, idents) ->
sprintf "elim " ^ pp_term_ast term ^
(match using with None -> "" | Some term -> " using " ^ pp_term_ast term)
- | ElimType (_, term) -> "elim type " ^ pp_term_ast term
+ ^ pp_intros_specs (num, idents)
+ | ElimType (_, term, using, num, idents) ->
+ sprintf "elim type " ^ pp_term_ast term ^
+ (match using with None -> "" | Some term -> " using " ^ pp_term_ast term)
+ ^ pp_intros_specs (num, idents)
| Exact (_, term) -> "exact " ^ pp_term_ast term
| Exists _ -> "exists"
| Fold (_, kind, term, pattern) ->