我最近看到這種錯誤的一個很好的協議:錯誤信息「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