リストに存在する変数を証明することに問題があります。リストに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.
私は別の質問があります。リスト内の値に対してケース分析を行うには(リストのこの部分に存在するかどうか)これが私が証明している主題です。すべてのヘルプ感謝:a = b
とあなたは置き換えることができ、またはa <> b
とあなたのどちらか:
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.
おかげで、最初のもののために
ようこそ、ありがとうございました。私は別の質問があります。私は、適用を使用している間、 "統一することは不可能"というエラーが出ます。私は 'パターン'の戦術を使うことができることを見てきましたが、私はそれを正しく使うことができませんでした。私は以下のことを証明しました:〜(存在b:X、b l - > P b) - > (forall b:X、In b l - >〜P b) –
私の目標のforall表現を〜に存在させるように変更したいと思っています。 –
私は、 'fun'を生成しましたが、もう一度使用できなかったパターン(forall-> b:X、bl - >〜Pb) forallを〜に置き換えるためにmy_lemmaを適用する〜存在...パターンを適切に適用して適用する方法を導く方法を手伝ってもらえますか? –