सामान्य तौर पर प्रूफ अप्रासंगिकता Coq के पीछे सिद्धांत द्वारा निहित नहीं है। यहां तक कि समानता के लिए सबूत अप्रासंगिकता निहित नहीं है; यह Streicher के स्वयंसिद्ध K के बराबर है । दोनों को स्वयंसिद्ध के रूप में जोड़ा जा सकता है ।
ऐसे घटनाक्रम हैं जहां यह प्रमाण वस्तुओं के बारे में तर्क करने के लिए उपयोगी है, और सबूत अप्रासंगिकता को यह शून्य-असंभव बनाता है। संभवतः इन विकासों में वे सभी वस्तुएं होनी चाहिए जिनकी संरचना मायने रखती है Set, लेकिन मूल Coq सिद्धांत के साथ संभावना है।
सबूत अप्रासंगिकता का एक महत्वपूर्ण सबकेस है जो हमेशा धारण करता है। Streicher का स्वयंसिद्ध K हमेशा पर्णपाती डोमेन पर रहता है, अर्थात डिकिडेबल सेट पर समानता प्रमाण अद्वितीय हैं। Eqdep_decकोक मानक पुस्तकालय में मॉड्यूल में सामान्य प्रमाण है । यहाँ एक प्रवाल के रूप में आपका प्रमेय है (मेरा प्रमाण यहाँ आवश्यक रूप से सबसे सुरुचिपूर्ण नहीं है):
Require Bool.
Require Eqdep_dec.
Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.
Proof.
intros; apply Eqdep_dec.eq_proofs_unicity; intros.
destruct (Bool.bool_dec x y); tauto.
Qed.
इस विशेष मामले के लिए, यहां एक प्रत्यक्ष प्रमाण (सामान्य प्रमाण से प्रेरित Eqdep_dec.v) है। सबसे पहले, परिभाषित करते हैं कि हम एक कैनॉनिकल प्रमाण को परिभाषित करते हैं true=b(हमेशा की तरह कॉक में, यह पहले स्थिर होना आसान है)। फिर हम दिखाते हैं कि कोई भी प्रमाण true=bहोना चाहिए refl_equal true।
Let nu b (p:true = b) : true = b :=
match Bool.bool_dec true b with
| left eqxy => eqxy
| right neqxy => False_ind _ (neqxy p)
end.
Lemma bool_pcanonical : forall (b : bool) (p : true = b), p = nu b p.
Proof.
intros. case p. destruct b.
unfold nu; simpl. reflexivity.
discriminate p.
Qed.
यदि आप कोक् में शास्त्रीय तर्क जोड़ते हैं, तो आपको प्रमाण अप्रासंगिकता मिलती है। सहज रूप से कहें तो शास्त्रीय तर्क आपको प्रस्तावों के लिए एक निर्णय देता है, और यह स्वयंसिद्ध K के लिए पर्याप्त है। Coq मानक पुस्तकालय मॉड्यूल में एक प्रमाण है Classical_Prop।