我在驗證列表中的存在變量時遇到了問題。我怎麼能證明這樣的事情:Coq變量存在於列表中
Lemma exists_in_list_helper: forall (X : Type) (a : X) (P : X -> Prop),
(exists b : X, In b [a] -> P b) ->
P a.
Proof.
Admitted.
我還有一個問題。我如何對列表中的值進行個案分析(如果它存在於列表的這部分中)?這是我證明的主要引理。任何幫助表示讚賞:
Lemma in_list: forall (X : Type) (a : X) l (P : X -> Prop),
(a :: l <> [] /\ exists b : X, In b (a :: l) -> P b) ->
(P a /\ l = []) \/
(P a /\ l <> [] /\ exists b : X, In b l -> P b) \/
(P a /\ l <> [] /\ forall b : X, In b l -> ~ P b) \/
(~ P a /\ l <> [] /\ exists b : X, In b l -> P b).
Proof.
感謝,
謝謝你的回答。我有另一個問題。在使用apply時出現「Impossible to Unify」錯誤。我已經看到我們可以使用'模式'策略,但我無法正確使用它。我已經證明如下:〜(存在b:X,In b l - > P b) - > (全部b:X,In b l→P b)。 –
並希望將我的目標中的所有表達式更改爲〜exists .... –
我使用了模式(forall b:X,In bl - >〜P b),它產生了'有趣'但又無法使用申請my_lemma替換所有〜存在......你能幫助我如何正確使用模式來指導應用策略嗎? –