用Coq中的存在性证明定义常数
在证明了一个存在性陈述之后,引入一个常数符号来证明这个定理通常是非常方便的 作为一个简单的例子,它写起来要简单得多(用典型的数学符号) 比写作更重要用Coq中的存在性证明定义常数,coq,Coq,在证明了一个存在性陈述之后,引入一个常数符号来证明这个定理通常是非常方便的 作为一个简单的例子,它写起来要简单得多(用典型的数学符号) 比写作更重要 ∀x. ∃y. empty(y) and y ⊆ x. 我希望在Coq中复制这种效果。下面是我遇到的基本场景和导致错误的尝试(现在是真实Coq代码): 我想知道这个错误消息到底意味着什么,是否有任何方法可以绕过它。谢谢 您的问题与通常的道具与类型的区别有关。你的证人的存在在于Prop(参见类型ex的定义),因此你不能检查它来建立一个具体的术语,你
∀x. ∃y. empty(y) and y ⊆ x.
我希望在Coq中复制这种效果。下面是我遇到的基本场景和导致错误的尝试(现在是真实Coq代码):
我想知道这个错误消息到底意味着什么,是否有任何方法可以绕过它。谢谢 您的问题与通常的
道具与类型的区别有关。你的证人的存在在于Prop
(参见类型ex
的定义),因此你不能检查它来建立一个具体的术语,你需要在类型中证明这一事实
您正在寻找sig
(或类似sigS
或sigT
的变体)类型,其符号为:
Hypothesis inhabited : {x : A | x = x }.
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.*)
Hypothesis inhabited : {x : A | x = x }.