Saat ini saya harus belajar Coq dan tidak tahu bagaimana menghadapi or
:
Sebagai contoh, sesederhana itu, saya tidak melihat cara membuktikan:
Theorem T0: x \/ ~x.
Saya akan sangat menghargainya, jika seseorang dapat membantu saya.
Untuk referensi saya menggunakan lembar contekan ini .
Juga contoh bukti yang ada dalam pikiran saya: Di sini untuk negasi ganda:
Require Import Classical_Prop.
Parameters x: Prop.
Theorem T7: (~~x) -> x.
intro H.
apply NNPP.
exact H.
Qed.
NNPP
Jenisnya adalahforall p:Prop, ~ ~ p -> p.
, jadi curang untuk menggunakannya untuk membuktikanT7
. Ketika Anda mengimporClassical_Prop
Anda mendapatkanAxiom classic : forall P:Prop, P \/ ~ P.
apply classic.
selesaikan tujuan AndaT0
.Jawaban:
Anda tidak dapat membuktikannya dalam Coq "vanilla", karena didasarkan pada logika intuitionistic :
Ada beberapa cara Anda bisa menghadapi situasi seperti ini.
Kenalkan hukum menengah yang dikecualikan sebagai aksioma:
Tidak perlu lagi membuktikan apa pun setelah titik ini.
Perkenalkan beberapa aksioma yang setara dengan hukum menengah yang dikecualikan dan buktikan kesetaraannya. Ini hanya beberapa contoh.
Penghapusan negasi ganda adalah salah satu aksioma seperti:
Hukum Peirce adalah contoh lain:
Atau gunakan salah satu hukum De Morgan :
sumber
Axiom peirce
: Anda berdiri bukan hukum Peirce (dan sebenarnyatrivial
untuk membuktikan).Sebagaimana orang lain memberi tahu Anda, tautologi Anda bukan tautologi kecuali Anda menggunakan logika klasik. Tetapi karena Anda melakukan tautologi tentang nilai kebenaran yang dapat ditentukan, Anda dapat menggunakannya
bool
sebagai gantiProp
. Kemudian tautologi Anda berlaku:sumber