Coq 无法用mathcomp'证明只有0小于1;鱼翅型

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

这个问题可能看起来很愚蠢,但我无法证明唯一的自然数 小于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<1,i=(ltn0Sn 0)。 但是我不知道如何证明相同
Prop
的两个证明之间的相等性,而不使用 证明无关,我不想在我的理论中添加公理。 一定有某种方法可以使用Ssreflect的反射功能来解决这个目标,但是我 我什么也没发现:我可以达到需要证明两者相等的程度 等式的证明,我可以使用UIP(身份证明的唯一性),但那是另一回事 axiom,我不想用它

我不敢相信我必须添加一条公理来证明这个目标:即 小于关系只能通过计算确定。应该有 证明所有(mn:nat)(ab:m无UIP或证明无关的
的一种方法

谢谢


编辑:我使用的是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.