証明方法(forall x、P x / \ Q x)-> (forall x、P x)[In Coq]
質問
どのように証明するか(forall x、P x / \ Q x)-> (forall x、P x)Coq?何時間も試してみましたが、Coqが消化できるものへの前件をどのように分解するかわかりません。 (私は明らかに初心者です:)
解決
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.
他のヒント
試用
elim (H x).
実際、私はこれを見つけたときにこれを見つけました:
レッスン5では、まったく同じ問題を解決し、" cut(P x / \ Q x)"を使用します。 " P x"から目標を書き換えます" P x / \ Q x-> P x"。そこからいくつかの操作を行うことができ、目標が単に「P x / \ Q x」である場合" forall x:P x / \ Q x"を適用できます。残りは簡単です。
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)AND Q(x)が成り立つ場合、すべてのxについてP(x)が成り立ちます。
所属していません StackOverflow