在证明了一个存在语句之后,为这个定理的某些见证人引入一个常数符号通常是非常方便的。
作为一个简单的例子,它写起来要简单得多(用典型的数学符号表示)
∀x. ∅ ⊆ x.
比写
∀x. ∃y. empty(y) and y ⊆ x.
我希望在Coq中复制这种效果。这是我遇到的基本场景和导致错误的尝试(现在使用真正的Coq代码):
Variable A:Type.
Hypothesis inhabited: exists x:A, x=x.
Definition inhabitant:A.
destruct inhabited.
(*Error: Case analysis on sort Type is not allowed for inductive definition ex.*)
我想知道这个错误信息甚至意味着什么,如果有办法解决这个问题。谢谢!
答案 0 :(得分:4)
您的问题与通常的Prop vs Type
区别有关。你的证人的存在在于Prop
(参见类型ex
的定义),所以你无法检查它以建立一个具体的术语,你需要在Type
中证明这一事实
您正在寻找sig
(或类似sigS
或sigT
)的变体,其符号为:
Hypothesis inhabited : {x : A | x = x }.