Coq中存在变量的推广

Coq中存在变量的推广,coq,Coq,我试图证明p?x,其中p:A->Prop和?x:A是一个存在变量。我可以证明所有a:a,PA的,所以我需要将P?x推广到所有a:a,PA的 如果?x是一个实例化变量x,我可以简单地使用generalizex为所有x:A,px生成。但是,当我尝试generalize?x时,Coq返回一个语法错误 这可能吗?我已经检查过了,Coq似乎没有提供一种直观的方法来概括关于存在变量的陈述 任何帮助都将不胜感激。p?x并不等同于所有x,px的,甚至也不意味着它。为了证明P?x,你需要找到一些a,这样P a就成

我试图证明
p?x
,其中
p:A->Prop
?x:A
是一个存在变量。我可以证明所有a:a,PA的
,所以我需要将
P?x
推广到
所有a:a,PA的

如果?x是一个实例化变量x,我可以简单地使用
generalizex
为所有x:A,px
生成
。但是,当我尝试
generalize?x
时,Coq返回一个语法错误

这可能吗?我已经检查过了,Coq似乎没有提供一种直观的方法来概括关于存在变量的陈述


任何帮助都将不胜感激。

p?x
并不等同于所有x,px
,甚至也不意味着它。为了证明
P?x
,你需要找到一些
a
,这样
P a
就成立了。根据你的假设,只需找到一些
a:a
。换句话说,您需要证明域不是空的(或者更准确地说,您需要证明域中存在元素)

在这里,如果您有一些
a:a
,您可以使用
实例化(1:=a)
。愚蠢的例子:

Parameter A : Set.
Parameter P : A -> Prop.
Goal (forall a, P a) -> A -> exists x, P x.
Proof.
  intros H a. eexists. instantiate (1 := a). apply H.
Qed.