coq:消除forall量词

时间:2016-03-14 17:46:45

标签: coq coq-tactic

我想证明以下定理:

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?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

可能是最简单的?

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.