我最近看到这种错误的一个很好的协议:错误信息“setoid rewrite failed:UNDEFINED EVARS”是什么意思?
Error:
Tactic failure: setoid rewrite failed: Unable to satisfy the following constraints:
UNDEFINED EVARS:
?X1700==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 |- relation M] (internal placeholder) {?r}
?X1701==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 (do_subrelation:=do_subrelation)
|- Proper
(equiv ==>
[email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0}) (sm c)] (internal placeholder) {?p}
?X1705==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 |- relation M] (internal placeholder) {?r0}
?X1706==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 |- relation M] (internal placeholder) {?r1}
?X1707==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 (do_subrelation:=do_subrelation)
|- Proper
([email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==>
[email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==>
[email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0}) sg_op] (internal placeholder) {?p0}
?X1708==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0
|- ProperProxy
[email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} (- sm c mon_unit)] (internal placeholder) {?p1}
?X1710==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 |- relation M] (internal placeholder) {?r2}
?X1711==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0 (do_subrelation:=do_subrelation)
|- Proper
([email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==>
[email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==> flip impl) equiv] (internal placeholder) {?p2}
?X1712==[R M Re Rplus Rmult Rzero Rone Rnegate Me Mop Munit Mnegate sm H c
intermediate H0
|- ProperProxy
[email protected]{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} mon_unit] (internal placeholder) {?p3}
.
这是什么错误想告诉我?作为参考,我最近我对下面的引理工作中看到了这一点:
From MathClasses.interfaces Require Import
abstract_algebra vectorspace canonical_names.
From MathClasses.theory Require Import groups.
Lemma mult_munit `{Module R M} : forall c : R, sm c mon_unit = mon_unit.
intros.
rewrite <- right_identity.
assert (intermediate : mon_unit = sm c mon_unit & - sm c mon_unit).
{
rewrite right_inverse; reflexivity.
}
rewrite intermediate at 2.
rewrite associativity.
rewrite <- distribute_l.
assert (forall x y : M, x = y -> x & sm c mon_unit = y & sm c mon_unit).
{
intros.
rewrite H0.
reflexivity.
}
rewrite right_identity.
我经常会看到这样同时用数学类图书馆证明工作。
事实上,我在另一个引理中看到了一个类似的错误,并且事实证明它也是一个“sm”vs点的问题! – Langston