如何证明(forall x,P x / \ Q x) - > (forall x,P x)[在Coq中]

时间:2009-05-07 14:59:32

标签: proof coq

如何证明(forall x,P x / \ Q x) - > (forall x,P x)在Coq?已经尝试了几个小时,无法弄清楚如何将先行者分解为Coq可以消化的东西。 (显然,我是个新手)。

5 个答案:

答案 0 :(得分:4)

你可以通过应用H来更快地完成它,但是这个脚本 应该更清楚。

Lemma foo : forall (A:Type) (P Q: A-> Prop), (forall x, P x /\ Q x) -> (forall x, P x).
intros.
destruct (H x). 
exact H0.
Qed.

答案 1 :(得分:2)

尝试

elim (H x).

答案 2 :(得分:2)

实际上,当我发现这个时,我想出了这个:

Mathematics for Computer Scientists 2

在第5课中,他解决了完全相同的问题并使用“cut(P x / \ Q x)”将目标从“P x”重写为“P x / \ Q x - > P x” 。从那里你可以做一些操作,当目标只是“P x / \ Q x”时,你可以应用“forall x:P x / \ Q x”,其余的很简单。

答案 3 :(得分:2)

Assume ForAll x: P(x) /\ Q(x)
   var x; 
      P(x) //because you assumed it earlier
   ForAll x: P(x)
(ForAll x: P(x) /\ Q(x)) => (ForAll x: P(x))

直截了当地,如果对于所有x,P(x)和Q(x)成立,那么对于所有x,P(x)成立。

答案 4 :(得分:-1)

这是答案:

Lemma fa_dist_and   (A : Set) (P : A -> Prop) (Q: A -> Prop): 

(forall x, P x) /\ (forall x, Q x) <-> (forall x : A, P x /\ Q x).

Proof.

split.

intro H.

(destruct H).

intro H1.

split.

(apply H).

(apply H0).

intro H.

split.

intro H1.

(apply H).

intro H1.

(apply H).

Qed.

您可以在此文件中找到其他已解决的练习:https://cse.buffalo.edu/~knepley/classes/cse191/ClassNotes.pdf