coq:消除forall量词

coq: elimination of forall quantifier

我想证明下面的定理:

Theorem Frobenius (A: Set) (q: Prop) (p: A -> Prop) :
  (q \/ forall x : A, p x) -> (forall x : A, q \/ p x).

我已经得到了以下证明:

Proof.
intro.
intro.
destruct H.
left.
assumption.

但现在我处于一种不知所措的境地。以下内容由我支配:

A : Set
q : Prop
p : A -> Prop
H : forall x : A, p x
x : A

我想证明以下子目标:

q \/ p x

如何消除给定前提中的 forall 量词

forall x : A, p x

即:我如何插入我的具体 x : A 以便我可以推断出:p x ?

您可以用specialize (specialize (H x)) 在H 中实例化通用量化的x

可能是最简单的?

Theorem Frobenius (A: Set) (q: Prop) (p: A -> Prop) :
  (q \/ forall x : A, p x) -> (forall x : A, q \/ p x).
intro H.

elim H.
intros Hl x.
left.
exact Hl.

intros Hr x.
right.
apply Hr.