type auto_params = nterm list option * (string*string) list
-(* The additional a is for abstract *)
-type 'term aauto_params = 'term list option * (string*string) list
-
-type 'term just = [`Term of 'term | `Auto of 'term aauto_params]
+type just = [`Term of nterm | `Auto of auto_params]
type ntactic =
| NApply of loc * nterm
(* Not the best idea to use a string directly, an abstract type for identifiers would be better *)
| Assume of loc * string * nterm * nterm option (* loc, identifier, type, eqty *)
| Suppose of loc * nterm *string * nterm option (* loc, assumption, identifier, eqass *)
- | By_just_we_proved of loc * nterm just * nterm * string option * nterm option (* loc,
+ | By_just_we_proved of loc * just * nterm * string option * nterm option (* loc,
justification, conclusion, identifier, eqconcl *)
| We_need_to_prove of loc * nterm * string option * nterm option (* loc, newconclusion,
identifier, equivnewcon *)
- | Bydone of loc * nterm just
- (*
- | ExistsElim of loc * nterm just * string * nterm * nterm * string
- | AndElim of loc * nterm just * nterm * string * nterm * string
- *)
+ | Bydone of loc * just
+ | ExistsElim of loc * just * string * nterm * nterm * string
+ | AndElim of loc * just * nterm * string * nterm * string
+ (*
+ | RewritingStep of
+ loc * (string option * nterm) option * nterm *
+ [ `Term of nterm | `Auto of auto_params
+ | `Proof | `SolveWith of nterm ] *
+ bool (* last step*)
+ *)
+ | RewritingStep of
+ loc * nterm * [ `Term of nterm | `Auto of auto_params | `Proof | `SolveWith of nterm ] * bool (* last step*)
+ | Obtain of
+ loc * string * nterm
+ | Conclude of
+ loc * nterm
+ | Thesisbecomes of loc * nterm * nterm option
+ | We_proceed_by_induction_on of loc * nterm * nterm
+ | We_proceed_by_cases_on of loc * nterm * nterm
+ | Byinduction of loc * nterm * string
+ | Case of loc * string * (string * nterm) list
+ (* This is a debug tactic to print the stack to stdout, can be safely removed *)
+ | PrintStack of loc
type nmacro =
| NCheck of loc * nterm