在Coq标准库中,有一个名为comparison
的枚举类型,其中包含三个元素Eq,Lt,Gt
。这用于定义ZArith
中的小于或小于或等于运算符:m < n
定义为m ?= n = Lt
,m <= n
定义为{{1} }}。凭借Hedberg定理(标准库中的m ?= n <> Gt
),我可以证明UIP_dec
与证明无关,但是当涉及<
时,我遇到了问题,因为它被定义为负面。我发现这特别令人讨厌,因为如果在IMO中定义<=
,更自然的方式(<=
),我将能够证明证据不相关就好了。
背景:我使用了一些以前写过的Coq文件,其中作者使用证明不相关作为全局公理来避免引入setoids,出于审美原因,我宁愿没有公理。在我看来,我的选择是:
希望目前定义的最终m ?= n = Lt \/ m ?= n = Eq
仍然无法证明
使用我自己的定义,以证明证据不相关是可证明的(因为我希望尽可能地坚持标准库,所以不太满意)
使用setoids重做工作
答案 0 :(得分:3)
不,这在Coq中是不可证明的。它取决于函数扩展性的公理,即(forall x, f x = g x) -> f = g
。很容易证明所有否定都是在这个假设下无关的证明(因为False
证明是不相关的),并且如果没有它,任何否定都是不相关的证据是非常不可能的。