diff options
author | 2014-11-08 15:28:19 +0100 | |
---|---|---|
committer | 2014-11-08 17:13:58 +0100 | |
commit | 91c2a866e7827c0ede0539cb49f924b68db569a9 (patch) | |
tree | a92efd5e411676e34910b54ed58b637bf731dc57 /tactics | |
parent | c9728f6eba0d4391992e89bdd9886d46fdf16004 (diff) |
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).
Diffstat (limited to 'tactics')
-rw-r--r-- | tactics/auto.ml | 1 | ||||
-rw-r--r-- | tactics/class_tactics.ml | 1 | ||||
-rw-r--r-- | tactics/equality.ml | 2 | ||||
-rw-r--r-- | tactics/rewrite.ml | 3 |
4 files changed, 7 insertions, 0 deletions
diff --git a/tactics/auto.ml b/tactics/auto.ml index 18beedf95..43aa84e7a 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 1e6caca57..a90d1e912 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 425e9f290..4da80811b 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 a96bc5e42..149dc2545 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; |