Coq 无法用mathcomp'证明只有0小于1;鱼翅型
这个问题可能看起来很愚蠢,但我无法证明唯一的自然数 小于1等于0。我正在使用mathcomp的finType库,我想证明的目标是:Coq 无法用mathcomp'证明只有0小于1;鱼翅型,coq,proof,Coq,Proof,这个问题可能看起来很愚蠢,但我无法证明唯一的自然数 小于1等于0。我正在使用mathcomp的finType库,我想证明的目标是: Lemma ord0_eq1 (a : ordinal 1) : a = ord0. 问题是,如果我销毁a和ord0,我将获得以下目标: ∀ (m : nat) (i : (m < 1)%N), Ordinal i = Ordinal (ltn0Sn 0) 证明这个等式的唯一方法是证明所有i:0
Lemma ord0_eq1 (a : ordinal 1) : a = ord0.
问题是,如果我销毁a
和ord0
,我将获得以下目标:
∀ (m : nat) (i : (m < 1)%N), Ordinal i = Ordinal (ltn0Sn 0)
证明这个等式的唯一方法是证明所有i:0<1,i=(ltn0Sn 0)。
但是我不知道如何证明相同Prop
的两个证明之间的相等性,而不使用
证明无关,我不想在我的理论中添加公理。
一定有某种方法可以使用Ssreflect的反射功能来解决这个目标,但是我
我什么也没发现:我可以达到需要证明两者相等的程度
等式的证明,我可以使用UIP(身份证明的唯一性),但那是另一回事
axiom,我不想用它
我不敢相信我必须添加一条公理来证明这个目标:即
小于关系只能通过计算确定。应该有
证明所有(mn:nat)(ab:m的一种方法
谢谢
编辑:我使用的是mathcomp的ssrnat
库,而不是Coq的Arith
模块。“定义序数
类型的谓词是布尔等式,因此满足证明无关性。在这种情况下,您可以求助于val_inj
:
From mathcomp Require Import all_ssreflect.
Lemma ord0_eq1 (a : ordinal 1) : a = ord0.
Proof. by apply/val_inj; case: (val a) (valP a). Qed.
这是正确的答案,如果你想完成低级证明,你所需要的只是使用eq\u axiomK
我还没有真正理解这是如何工作的,但它看起来很有趣,所以我会去学习手册。非常感谢!
From mathcomp Require Import all_ssreflect.
Lemma ord0_eq1 (a : ordinal 1) : a = ord0.
Proof. by apply/val_inj; case: (val a) (valP a). Qed.