- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近经常看到这种错误:
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 ==>
?X1700@{__:=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
(?X1700@{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==>
?X1706@{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==>
?X1705@{__:=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
?X1706@{__:=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
(?X1705@{__:=R; __:=M; __:=Re; __:=Rplus; __:=Rmult; __:=Rzero;
__:=Rone; __:=Rnegate; __:=Me; __:=Mop; __:=Munit;
__:=Mnegate; __:=sm; __:=H; __:=c; __:=intermediate;
__:=H0} ==>
?X1710@{__:=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
?X1710@{__:=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.
我在使用数学类库进行证明时经常看到这种情况。
最佳答案
错误信息给了我们一个提示:|- 正确(相当于 ==> ...
.
重写失败,因为scalar_mult
函数(其符号为·
)缺少一个非常重要的属性:它不正确
。Proper
函数是一个尊重等价性的函数 - 请记住 Math-Classes 库中的所有内容都定义为等价性,甚至 =
也是 equiv< 的表示法
,而不是eq
。更正式地说,如果对于任何等效的 x
和 x'
(x'
),(一元)函数 f
就是正确。 >x = x'(数学类用语)),x
和 x'
的图像也是等效的:f x = f x'
.
当 x
不是一个时,我们需要这个 Proper
属性才能将 x
重写为 x'
“独立”变量,但将 f
应用于它。
修复错误的一种方法是在 Module
类型类的定义中添加一个附加字段:
sm_proper :> Proper ((=) ==> (=) ==> (=)) (·)
上面说 (·)
是一个二元函数,它的两个参数都是等价的。
像这样
Class Module (R M : Type)
{Re Rplus Rmult Rzero Rone Rnegate}
{Me Mop Munit Mnegate}
{sm : ScalarMult R M}
:=
{ lm_ring :>> @Ring R Re Rplus Rmult Rzero Rone Rnegate
; lm_group :>> @AbGroup M Me Mop Munit Mnegate
; lm_distr_l :> LeftHeteroDistribute (·) (&) (&)
; lm_distr_r :> RightHeteroDistribute (·) (+) (&)
; lm_assoc :> HeteroAssociative (·) (·) (·) (.*.)
; lm_identity :> LeftIdentity (·) 1
; sm_proper :> Proper ((=) ==> (=) ==> (=)) (·) (* new! *)
}.
例如SemiGroup
有一个类似的 &
字段:
Class SemiGroup {Aop: SgOp A} : Prop :=
{ sg_setoid :> Setoid A
; sg_ass :> Associative (&)
; sg_op_proper :> Proper ((=) ==> (=) ==> (=)) (&) }.
修改后一切都应该正常:
Lemma mult_munit `{Module R M} :
forall c : R, c · mon_unit = mon_unit.
Proof.
intro c.
rewrite <- right_identity.
assert (intermediate : mon_unit = c · mon_unit & - (c · mon_unit)) by
now rewrite right_inverse.
rewrite intermediate at 2.
rewrite associativity.
rewrite <- distribute_l.
rewrite right_identity.
apply right_inverse.
Qed.
我必须补充一点,还有另一种方法可以证明这个引理,但是 Coq 不知何故无法在没有轻推的情况下找到 LeftCancellation
类型类的实例(显然这个定律在每个组中都成立, MathClasses.theory.groups 已导入):
intro c.
enough ((c · mon_unit) & (c · mon_unit) = c · mon_unit & mon_unit).
apply (left_cancellation (&)) in H0.
assumption.
Print Instances LeftCancellation. (* ! *)
apply LeftCancellation_instance_0. (* this is ugly, but Coq doesn't use this instance, defined in MathClasses.theory.groups *)
rewrite <- distribute_l.
now rewrite !right_identity.
这是完整的开发过程:
From MathClasses.interfaces
Require Import abstract_algebra orders.
From MathClasses.theory
Require Import groups.
(** Scalar multiplication function class *)
Class ScalarMult K V := scalar_mult: K → V → V.
Instance: Params (@scalar_mult) 3.
Infix "·" := scalar_mult (at level 50) : mc_scope.
Notation "(·)" := scalar_mult (only parsing) : mc_scope.
Notation "( x ·)" := (scalar_mult x) (only parsing) : mc_scope.
Notation "(· x )" := (λ y, y · x) (only parsing) : mc_scope.
(** The inproduct function class *)
Class Inproduct K V := inprod : V → V → K.
Instance: Params (@inprod) 3.
Notation "⟨ u , v ⟩" := (inprod u v) (at level 51) : mc_scope.
Notation "⟨ u , ⟩" := (λ v, ⟨u,v⟩) (at level 50, only parsing) : mc_scope.
Notation "⟨ , v ⟩" := (λ u, ⟨u,v⟩) (at level 50, only parsing) : mc_scope.
Notation "x ⊥ y" := (⟨x,y⟩ = 0) (at level 70) : mc_scope.
(** The norm function class *)
Class Norm K V := norm : V → K.
Instance: Params (@norm) 2.
Notation "∥ L ∥" := (norm L) (at level 50) : mc_scope.
Notation "∥·∥" := norm (only parsing) : mc_scope.
(** Let [M] be an R-Module. *)
Class Module (R M : Type)
{Re Rplus Rmult Rzero Rone Rnegate}
{Me Mop Munit Mnegate}
{sm : ScalarMult R M}
:=
{ lm_ring :>> @Ring R Re Rplus Rmult Rzero Rone Rnegate
; lm_group :>> @AbGroup M Me Mop Munit Mnegate
; lm_distr_l :> LeftHeteroDistribute (·) (&) (&)
; lm_distr_r :> RightHeteroDistribute (·) (+) (&)
; lm_assoc :> HeteroAssociative (·) (·) (·) (.*.)
; lm_identity :> LeftIdentity (·) 1
; sm_proper :> Proper ((=) ==> (=) ==> (=)) (·)
}.
Lemma mult_munit `{Module R M} :
forall c : R, c · mon_unit = mon_unit.
Proof.
intro c.
rewrite <- right_identity.
assert (intermediate : mon_unit = c · mon_unit & - (c · mon_unit)) by
now rewrite right_inverse.
rewrite intermediate at 2.
rewrite associativity.
rewrite <- distribute_l.
rewrite right_identity.
apply right_inverse.
(* alternative proof, which doesn't quite work *)
Restart.
intro c.
enough ((c · mon_unit) & (c · mon_unit) = c · mon_unit & mon_unit).
apply (left_cancellation (&)) in H0.
assumption.
Print Instances LeftCancellation.
apply LeftCancellation_instance_0.
rewrite <- distribute_l.
now rewrite !right_identity.
Qed.
关于typeclass - 错误消息 "setoid rewrite failed: UNDEFINED EVARS"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40624302/
我一直在读到,如果一个集合“被释放”,它也会释放它的所有对象。另一方面,我还读到,一旦集合被释放,集合就会释放它的对象。 但最后一件事可能并不总是发生,正如苹果所说。系统决定是否取消分配。在大多数情况
我有一个客户端-服务器应用程序,它使用 WCF 进行通信,并使用 NetDataContractSerializer 序列化对象图。 由于服务器和客户端之间传输了大量数据,因此我尝试通过微调数据成员的
我需要有关 JMS 队列和消息处理的帮助。 我有一个场景,需要针对特定属性组同步处理消息,但可以在不同属性组之间同时处理消息。 我了解了特定于每个属性的消息组和队列的一些知识。我的想法是,我想针对
我最近开始使用 C++,并且有一种强烈的冲动 #define print(msg) std::cout void print(T const& msg) { std::cout void
我已经为使用 JGroups 编写了简单的测试。有两个像这样的简单应用程序 import org.jgroups.*; import org.jgroups.conf.ConfiguratorFact
这个问题在这里已经有了答案: Firebase messaging is not supported in your browser how to solve this? (3 个回答) 7 个月前关
在我的 C# 控制台应用程序中,我正在尝试更新 CRM 2016 中的帐户。IsFaulted 不断返回 true。当我向下钻取时它返回的错误消息如下: EntityState must be set
我正在尝试通过 tcp 将以下 json 写入 graylog 服务器: {"facility":"GELF","file":"","full_message":"Test Message Tcp",
我正在使用 Django 的消息框架来指示成功的操作和失败的操作。 如何排除帐户登录和注销消息?目前,登录后登陆页面显示 已成功登录为“用户名”。我不希望显示此消息,但应显示所有其他成功消息。我的尝试
我通过编写禁用qDebug()消息 CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT 在.pro文件中。这很好。我想知道是否可以
我正在使用 ThrottleRequest 来限制登录尝试。 在 Kendler.php 我有 'throttle' => \Illuminate\Routing\Middleware\Throttl
我有一个脚本,它通过die引发异常。捕获异常时,我想输出不附加位置信息的消息。 该脚本: #! /usr/bin/perl -w use strict; eval { die "My erro
允许的消息类型有哪些(字符串、字节、整数等)? 消息的最大大小是多少? 队列和交换器的最大数量是多少? 最佳答案 理论上任何东西都可以作为消息存储/发送。实际上您不想在队列上存储任何内容。如果队列大部
基本上,我正在尝试创建一个简单的 GUI 来与 Robocopy 一起使用。我正在使用进程打开 Robocopy 并将输出重定向到文本框,如下所示: With MyProcess.StartI
我想将进入 MQ 队列的消息记录到数据库/文件或其他日志队列,并且我无法修改现有代码。是否有任何方法可以实现某种类似于 HTTP 嗅探器的消息记录实用程序?或者也许 MQ 有一些内置的功能来记录消息?
我得到了一个带有 single_selection 数据表和一个命令按钮的页面。命令按钮调用一个 bean 方法来验证是否进行了选择。如果不是,它应该显示一条消息警告用户。如果进行了选择,它将导航到另
我知道 MSVC 可以通过 pragma 消息做到这一点 -> http://support.microsoft.com/kb/155196 gcc 是否有办法打印用户创建的警告或消息? (我找不到谷
当存在大量节点或二进制数据时, native Erlang 消息能否提供合理的性能? 情况 1:有一个大约 50-200 台机器的动态池(erlang 节点)。它在不断变化,每 10 分钟大约添加或删
我想知道如何在用户登录后显示“欢迎用户,您已登录”的问候消息,并且该消息应在 5 秒内消失。 该消息将在用户成功登录后显示一次,但在同一 session 期间连续访问主页时不会再次显示。因为我在 ho
如果我仅使用Welcome消息,我的代码可以正常工作,但是当打印p->client_name指针时,消息不居中。 所以我的问题是如何将消息和客户端名称居中,就像它是一条消息一样。为什么它目前仅将消
我是一名优秀的程序员,十分优秀!