Coq Setoid重写要求平凡态射?

Coq Setoid重写要求平凡态射?,coq,Coq,当我在目标U==U上调用setoid\U rewrite(kron\U 1\r U)时,我得到以下错误⊗ I 1(其中==为材料等效物和⊗是kron): 我试着证明Morphisms.Proper(mat_equiv===>flip impl)(mat_equiv U),这很简单-它源自于mat_equiv是一个等价关系(我已经声明过了) 你知道会发生什么事,我怎么解决吗 (相关的声明态射是从==和=到=的kron,以及从=到的混合态iff。后者在这里不明确,但我在前面的证明中使用了它,通常我可

当我在目标
U==U上调用
setoid\U rewrite(kron\U 1\r U)
时,我得到以下错误⊗ I 1
(其中
==
材料等效物
kron
):

我试着证明
Morphisms.Proper(mat_equiv===>flip impl)(mat_equiv U)
,这很简单-它源自于
mat_equiv
是一个等价关系(我已经声明过了)

你知道会发生什么事,我怎么解决吗


(相关的声明态射是从
==
=
=
的kron,以及从
=
的混合态iff
。后者在这里不明确,但我在前面的证明中使用了它,通常我可以重写。)

您需要确保类型类机器能够找到适当的
实例,以便进行此重写。你把引理声明为实例了吗?(如果不是太复杂,要点可能有助于诊断问题…)哪个引理
Morphisms.Proper(mat_equiv==>flip impl)(mat_equiv U)
?我只是断言——我不清楚Coq为什么需要它。(另外,我不知道如何使用
add参数态射
实例
.Morphisms.property不是记录?)是的,这个引理。你的意思是说你在有问题的证据中间断言了它?我认为,有权使用这些代码真的会有所不同。是的,我做到了。这里是
表示门正确的引理:@Rand00我看了你的要点,
kron\u 1\u r
逻辑证明了一个等式。eq
,而不是
mat\u equiv
,因此标准重写应该可以工作。
Ltac call to "setoid_rewrite (orient) (glob_constr_with_bindings)" failed.
setoid rewrite failed: Unable to satisfy the following constraints:
In environment:
W : WType
u : Unitary W
ρ : Square (2 ^ ⟦ W ⟧)
H : Mixed_State ρ
U : Square (2 ^ ⟦ W ⟧)
HeqU : U = denote_unitary u
do_subrelation := Morphisms.do_subrelation : Morphisms.apply_subrelation

?p : "Morphisms.Proper (mat_equiv ==> flip impl) (mat_equiv U)"