aboutsummaryrefslogtreecommitdiffhomepage
path: root/tactics
diff options
context:
space:
mode:
authorGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2014-11-08 15:28:19 +0100
committerGravatar Hugo Herbelin <Hugo.Herbelin@inria.fr>2014-11-08 17:13:58 +0100
commit91c2a866e7827c0ede0539cb49f924b68db569a9 (patch)
treea92efd5e411676e34910b54ed58b637bf731dc57 /tactics
parentc9728f6eba0d4391992e89bdd9886d46fdf16004 (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.ml1
-rw-r--r--tactics/class_tactics.ml1
-rw-r--r--tactics/equality.ml2
-rw-r--r--tactics/rewrite.ml3
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;