Coq में सबूत अप्रासंगिक साबित?


18

क्या Coq में निम्नलिखित प्रमेय साबित करने का कोई तरीका है?

Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2.

EDIT : "क्या सबूत अप्रासंगिक है" के लिए एक संक्षिप्त विवरण देने का प्रयास (मुझे गलत या गलत होने पर किसी को सही करें)

मूल विचार यह है कि प्रस्ताव की दुनिया में (या कूक में Propसॉर्ट), जो आपको (और आपको चाहिए) वास्तव में परवाह करता है एक प्रस्ताव की उकसावे की क्षमता है, कि इसके प्रमाण, कई (या कोई नहीं) हो सकते हैं। यदि आपके पास कई सबूत हैं, तो साबित करने के दृष्टिकोण से, वे इस अर्थ में समान हैं कि वे एक ही प्रस्ताव को साबित करते हैं । इसलिए उनका भेद सिर्फ अप्रासंगिक है। यह देखने के कम्प्यूटेशनल बिंदु से अलग है जहां आप वास्तव में दो शब्दों के भेद के बारे में परवाह करते हैं, उदाहरण के लिए, मूल रूप से, आप नहीं चाहते हैं कि दोनों boolप्रकार के निवासी (या Setकॉक के शब्दों में), अर्थात् trueऔर falseसमान हों। लेकिन अगर आप उन्हें अंदर डालते हैं Prop, तो उनके साथ समान व्यवहार किया जाता है।


पेचीदा। मुझे यकीन है कि आपको Coq मेलिंग सूची पर मिनटों के भीतर जवाब मिल जाएगा। (यदि आप ऐसा करते हैं, तो यहां प्रतिक्रिया पोस्ट करना सुनिश्चित करें।)
डेव क्लार्क

2
हममें से जो उत्सुक हैं, आपके प्रश्न के बारे में क्या है, लेकिन Coq से परिचित नहीं हैं, क्या आप शायद एक वाक्य या दो जोड़ सकते हैं, जो यह बता सकता है कि अंग्रेजी में प्रमेय का क्या अर्थ है? (और शायद "प्रूफ अप्रासंगिकता" के बारे में क्या है?)
जोशुआ ग्रूचो

@ जोशुआ, मैं इसे विस्तार से समझाने के लिए पर्याप्त नहीं हूं, क्योंकि यह मेरे लिए भी नया है, इसीलिए इसने मुझे काफी समय तक हैरान किया। लेकिन वैसे भी, यहाँ मेरा प्रयास है (प्रश्न भाग में देखें)।
दिन

6
@Joshua, IIRC, रचनात्मक गणित के क्षेत्र में, जैसे एक निहितार्थ का एक सबूत एक समारोह / प्रक्रिया / एल्गोरिथ्म / निर्माण है कि धर्मान्तरित एक सबूत के एक एक करने के लिए सबूत की बी , और निर्माण है सबूत अप्रासंगिक अगर की जिसके परिणामस्वरूप सबूत B इस बात पर निर्भर नहीं है कि A के लिए कौन सा प्रमाण दिया गया है । बीबीबी
केवह

जवाबों:


28

सामान्य तौर पर प्रूफ अप्रासंगिकता 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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.