我正在尝试证明P ?x
,其中P : A -> Prop
和?x : A
是一个存在变量。我可以证明forall a:A, P a
,因此我需要将P ?x
概括为forall a:A, P a
。
如果?x是一个实例化的变量x,我可以简单地使用generalize x
来生成forall x:A, P x
。但是,当我尝试generalize ?x
时,Coq会返回语法错误。
这可能吗?我已经检查过,Coq似乎没有提供一种直观的方式来概括关于存在变量的陈述。
非常感谢任何帮助。
答案 0 :(得分:3)
P ?x
不等同于forall x, P x
,甚至也不暗示P ?x
。要证明a
,您需要找到一些P a
,a : A
成立。根据您的假设,找到一些a : A
就足够了。换句话说,您需要证明域不是空的(或者更确切地说,您需要证明域中元素的存在)。
此处,如果您有一些instantiate (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.
。愚蠢的例子:
{{1}}