0
Require Import ProofWeb.

Variables x y z a : D.
Variables p: D * D * D -> Prop.

Theorem letra_a : (all x, p(a,x,x) /\  (all x, ( all y, ( all z, p(x,y,z))) -> p(f(x),y,f(z)))) -> p(f(a),a,f(a)).
Proof.
intros.
imp_e (p(a,a,a)).
destruct H. 

ここで問題が発生します。p(a、a、a)-> p(fa、a、fa)が必要です。これは、すべてのx、すべてのy、すべてのz、p(x、y、z)から明らかです。 > p(fx、y、fz)x、yおよびz = aをインスタンス化する必要がありますが、できません。私がすることはここでは受け入れられません。

f_all_e H0.

エラーが発生します:戦術的な失敗:(引数は全称記号ではないか、目標に適合しません)。

all_e(all x、all y、all z、p(x、y、z)-> p(fx、y、fz))を試してみると。エラー:戦術的失敗:(議論は全称記号ではありません)。

手伝ってもらえますか?私はCoqの情報をあちこちで掘り起こし、PDFを印刷し、試しましたが、それでもCoqの構文とロジックの流れを理解することができず、まだかなり迷っています。

ポインタを事前に感謝します!

見つかった解決策:

Theorem letra_c : (all y, q b y) /\ (all x, (all y, (q x y -> q (s x) (s y))) ) -> ( exi z, (q b z /\ q z (s (s b))) ).
Proof.
intros.
destruct H.
exi_i (s b).
con_i.
apply H.
imp_e (q b (s b)). 
all_e (all y, (q b y -> q (s b) (s y))).
all_e (all x, (all y0, (q x y0 -> q (s x) (s y0)))).
apply H0.
apply H.
Qed.
4

1 に答える 1

1
H : all x, p (a, x, x)
H0 : all x, all y, all z, p (x, y, z) -> p (f x, y, f z)
H1 : p (a, a, a)
============================
 p (f a, a, f a)

通常の Coq では、次のいずれかを実行できます。

  • apply H0p (a, a, a)、簡単に解決できる目標を達成します。

  • specialize (H0 a a a)、それはあなたを与えるでしょうH0: p (a, a, a) -> p (f a, a, f a);

  • またはexact (H0 _ _ _ H1)、すでに行って終了してください。

ここで、http://prover.cs.ru.nl/index.htmlを使用して目標を達成しようとしましたが、コマンドも見つかりません。

私はある種の前方の forall の排除、または後方の modus ponens について考えていたでしょうが、それを機能させることもできません。これに関するドキュメントはありますか?

于 2012-08-31T00:17:18.597 に答える