diff options
| -rw-r--r-- | tactics/tactics.ml | 13 | ||||
| -rw-r--r-- | tactics/tactics.mli | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/tactics/tactics.ml b/tactics/tactics.ml index f27bf381b0..860c981264 100644 --- a/tactics/tactics.ml +++ b/tactics/tactics.ml @@ -319,6 +319,17 @@ let intros = tclREPEAT (intro_force false) let intro_erasing id = tclTHEN (thin [id]) (intro_using id) +let intros_replacing ids gls = + let rec introrec = function + | [] -> tclIDTAC + | id::tl -> + (tclTHEN (tclORELSE (intro_replacing id) + (tclORELSE (intro_erasing id) (* ?? *) + (intro_using id))) + (introrec tl)) + in + introrec ids gls + (* User-level introduction tactics *) let dyn_intro = function @@ -1623,7 +1634,7 @@ let abstract_subproof name tac gls = by (tclCOMPLETE (tclTHEN (tclDO (sign_length sign) intro) tac)); save_named true with e when catchable_exception e -> - (abort_current_goal(); raise e) + (abort_current_proof(); raise e) end; exact (applist ((Declare.construct_reference env' CCI na), (List.map (fun id -> VAR(id)) diff --git a/tactics/tactics.mli b/tactics/tactics.mli index 0f45a1e7cb..751a777390 100644 --- a/tactics/tactics.mli +++ b/tactics/tactics.mli @@ -63,6 +63,7 @@ val intro_using : identifier -> tactic val intro_using_warning : identifier -> tactic val intros_using : identifier list -> tactic val intro_erasing : identifier -> tactic +val intros_replacing : identifier list -> tactic val intros : tactic |
