From 91c2a866e7827c0ede0539cb49f924b68db569a9 Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Sat, 8 Nov 2014 15:28:19 +0100 Subject: Follow up to experimental eager evar unification in bcba6d1bc9: Observing that systematic eager evar unification makes unification works better, for instance in setoid rewrite (ATBR, SemiRing.v), we add a new flag use_evars_eagerly_in_conv_on_closed_terms which is put to true only in Rewrite.rewrite_core_unif_flags (empirically, this makes the "rewrite" from rewrite.ml working again on examples which were previously treated by use_metas_eagerly_in_conv_on_closed_terms). --- tactics/auto.ml | 1 + tactics/class_tactics.ml | 1 + tactics/equality.ml | 2 ++ tactics/rewrite.ml | 3 +++ 4 files changed, 7 insertions(+) (limited to 'tactics') diff --git a/tactics/auto.ml b/tactics/auto.ml index 18beedf953..43aa84e7ae 100644 --- a/tactics/auto.ml +++ b/tactics/auto.ml @@ -43,6 +43,7 @@ open Unification let auto_core_unif_flags_of st1 st2 useeager = { modulo_conv_on_closed_terms = Some st1; use_metas_eagerly_in_conv_on_closed_terms = useeager; + use_evars_eagerly_in_conv_on_closed_terms = false; modulo_delta = st2; modulo_delta_types = full_transparent_state; check_applied_meta_types = false; diff --git a/tactics/class_tactics.ml b/tactics/class_tactics.ml index 1e6caca57e..a90d1e912f 100644 --- a/tactics/class_tactics.ml +++ b/tactics/class_tactics.ml @@ -56,6 +56,7 @@ open Unification let auto_core_unif_flags st freeze = { modulo_conv_on_closed_terms = Some st; use_metas_eagerly_in_conv_on_closed_terms = true; + use_evars_eagerly_in_conv_on_closed_terms = false; modulo_delta = st; modulo_delta_types = st; check_applied_meta_types = false; diff --git a/tactics/equality.ml b/tactics/equality.ml index 425e9f2902..4da80811bd 100644 --- a/tactics/equality.ml +++ b/tactics/equality.ml @@ -103,6 +103,7 @@ type conditions = let rewrite_core_unif_flags = { modulo_conv_on_closed_terms = None; use_metas_eagerly_in_conv_on_closed_terms = true; + use_evars_eagerly_in_conv_on_closed_terms = false; modulo_delta = empty_transparent_state; modulo_delta_types = empty_transparent_state; check_applied_meta_types = true; @@ -175,6 +176,7 @@ let rewrite_conv_closed_core_unif_flags = { (* to rewrite "?x+2" in "y+(1+1)=0" or to rewrite "?x+?x" in "2+(1+1)=0" *) use_metas_eagerly_in_conv_on_closed_terms = true; + use_evars_eagerly_in_conv_on_closed_terms = false; (* Combined with modulo_conv_on_closed_terms, this flag allows since 8.2 *) (* to rewrite e.g. "?x+(2+?x)" in "1+(1+2)=0" *) diff --git a/tactics/rewrite.ml b/tactics/rewrite.ml index a96bc5e42e..149dc2545a 100644 --- a/tactics/rewrite.ml +++ b/tactics/rewrite.ml @@ -530,6 +530,7 @@ let rewrite_transparent_state () = let rewrite_core_unif_flags = { Unification.modulo_conv_on_closed_terms = None; Unification.use_metas_eagerly_in_conv_on_closed_terms = true; + Unification.use_evars_eagerly_in_conv_on_closed_terms = false; Unification.modulo_delta = empty_transparent_state; Unification.modulo_delta_types = full_transparent_state; Unification.check_applied_meta_types = true; @@ -552,6 +553,7 @@ let rewrite_unif_flags = { let rewrite2_unif_core_flags = { Unification.modulo_conv_on_closed_terms = Some conv_transparent_state; Unification.use_metas_eagerly_in_conv_on_closed_terms = true; + Unification.use_evars_eagerly_in_conv_on_closed_terms = true; Unification.modulo_delta = empty_transparent_state; Unification.modulo_delta_types = conv_transparent_state; Unification.check_applied_meta_types = true; @@ -576,6 +578,7 @@ let general_rewrite_unif_flags () = let core_flags = { Unification.modulo_conv_on_closed_terms = Some ts; Unification.use_metas_eagerly_in_conv_on_closed_terms = true; + Unification.use_evars_eagerly_in_conv_on_closed_terms = false; Unification.modulo_delta = ts; Unification.modulo_delta_types = ts; Unification.check_applied_meta_types = true; -- cgit v1.2.3