aboutsummaryrefslogtreecommitdiff
path: root/tactics
diff options
context:
space:
mode:
authorPierre-Marie Pédrot2015-11-17 12:39:35 +0100
committerPierre-Marie Pédrot2015-11-17 14:25:12 +0100
commitaf399d81b0505d1f0be8e73cf45044266d5749e5 (patch)
tree1723eebf74e332635ad08a1d5dc073363f051bcd /tactics
parent8e482fc932fa2b1893025d914d42dd17881c2fac (diff)
Performance fix for destruct.
The clenv_fchain function was needlessly merging universes coming from two evarmaps even though one was an extension of the other. A flag was added so that the tactic just retrieves the newer universes.
Diffstat (limited to 'tactics')
-rw-r--r--tactics/tactics.ml4
1 files changed, 3 insertions, 1 deletions
diff --git a/tactics/tactics.ml b/tactics/tactics.ml
index 0a013e95f7..0551787e3a 100644
--- a/tactics/tactics.ml
+++ b/tactics/tactics.ml
@@ -1319,7 +1319,9 @@ let simplest_elim c = default_elim false None (c,NoBindings)
*)
let clenv_fchain_in id ?(flags=elim_flags ()) mv elimclause hypclause =
- try clenv_fchain ~flags mv elimclause hypclause
+ (** The evarmap of elimclause is assumed to be an extension of hypclause, so
+ we do not need to merge the universes coming from hypclause. *)
+ try clenv_fchain ~with_univs:false ~flags mv elimclause hypclause
with PretypeError (env,evd,NoOccurrenceFound (op,_)) ->
(* Set the hypothesis name in the message *)
raise (PretypeError (env,evd,NoOccurrenceFound (op,Some id)))