📐 Lean 4 का उपयोग करके प्रपोज़िशनल लॉजिक प्रमाण: एक व्यावहारिक मार्गदर्शिका 🔗

यह पोस्ट Lean 4 प्रोग्रामिंग भाषा और प्रमेय प्रदर्शक (theorem prover) का उपयोग करके मौलिक प्रपोज़िशनल लॉजिक (propositional logic) अवधारणाओं और उनके औपचारिक कार्यान्वयन का एक तकनीकी विवरण प्रदान करती है।

चाहे आप एक गणितज्ञ हों जो प्रमाणों को औपचारिक रूप देना चाहते हैं या एक प्रोग्रामर जो टाइप थ्योरी (type theory) में गहराई से उतर रहे हैं, यह मार्गदर्शिका प्रथम सिद्धांतों से तर्कशास्त्र (logic) का पुनर्निर्माण करती है। हम बुनियादी तार्किक स्थिरांकों से शुरुआत करेंगे और पता लगाएंगे कि Lean 4 किस प्रकार करी-हावर्ड आइसोमोर्फिज्म (Curry-Howard Isomorphism)—यह सिद्धांत कि प्रपोज़िशन (कथन) टाइप हैं और प्रमाण प्रोग्राम हैं—का उपयोग करके तार्किक संरचनाओं को सुंदरता से मॉडल करता है।

📑 विषय-सूची 🔗


⚙️ प्रस्तावना: आधार तैयार करना 🔗

अपने तार्किक संयोजकों (logical connectives) को परिभाषित करने से पहले, हमें एक आधारभूत वातावरण तैयार करने की आवश्यकता है। Lean 4 में, यह आम तौर पर स्कोप और कम्प्यूटेशनल व्यवहार को नियंत्रित करने के लिए दो विशिष्ट कमांड का उपयोग करके किया जाता है।

namespace Basic

noncomputable section

🧩 मुख्य तार्किक संयोजक (Core Logical Connectives) 🔗

इस अनुभाग में, हम मानक गणितीय संकेतन को Lean 4 कोड से मैप करते हुए, तर्कशास्त्र के आधारभूत तत्वों को परिभाषित करेंगे।

✅ 1. सत्य / True (⊤) 🔗

सबसे सरल कथन (proposition) वह है जो सार्वभौमिक रूप से तार्किक रूप से मान्य है। प्रोग्रामिंग के संदर्भ में, ⊤\top एक Unit टाइप की तरह व्यवहार करता है—इसकी ठीक एक स्थिति होती है और यह कोई अतिरिक्त डेटा नहीं रखता है।

परिभाषा:

inductive True : Prop where
  | intro : True

चूँकि इसे एक एकल कंस्ट्रक्टर (intro) के साथ परिभाषित किया गया है, इसलिए True को “सिद्ध” करने का एकमात्र तरीका यही सटीक कंस्ट्रक्टर प्रदान करना है।

उदाहरण:

-- Proving True unconditionally
example : True := True.intro

-- Any proposition 'a' trivially implies True
example {a : Prop} : a → True := fun _ => True.intro

❌ 2. असत्य / False (⊥) 🔗

जहाँ True को प्रमाण के सहज अस्तित्व द्वारा परिभाषित किया जाता है, वहीं False को प्रमाण की पूर्ण अनुपस्थिति द्वारा परिभाषित किया जाता है। यह एक Empty टाइप (या Void टाइप) है।

परिभाषा:

inductive False : Prop

चूँकि False का कोई कंस्ट्रक्टर नहीं है, आप इसे कभी भी शून्य से इंस्टेंशिएट नहीं कर सकते। यह एक तार्किक विरोधाभास का प्रतिनिधित्व करता है।

विस्फोट का सिद्धांत (Ex Falso Quodlibet): यदि आप कभी भी अपने पास False का प्रमाण पाते हैं, तो तर्क टूट जाता है, और आप कुछ भी सिद्ध कर सकते हैं। Lean रिकर्सर False.elim का उपयोग करके इसे संभालता है।

-- From a falsehood, any proposition 'a' follows (⊥ → a)
def False.elim {a : Prop} (false_proof : False) : a := 
  false_proof.rec

🔄 3. निषेध / Negation (¬) 🔗

Lean 4 में, निषेध (negation) कोई आदिम, अंतर्निहित अवधारणा नहीं है। इसके बजाय, इसे निहितार्थ (implication) और False का उपयोग करके कार्यात्मक रूप से परिभाषित किया गया है। यह सिद्ध करने के लिए कि कथन aa असत्य है (जिसे ¬a\neg a द्वारा दर्शाया गया है), आपको एक ऐसा फ़ंक्शन प्रदर्शित करना होगा जहाँ aa को मान लेने से सीधे विरोधाभास (⊥\bot) उत्पन्न होता है।

परिभाषा:

def Not (a : Prop) : Prop := a → False

मुख्य प्रमेय:

-- Proving Negation: If assuming 'a' proves False, then Not 'a' is true.
theorem Not.intro {a : Prop} (h : a → False) : Not a := 
  fun ha => h ha

-- Double Negation Introduction (a → ¬¬a)
theorem not_not_intro {a : Prop} (ha : a) : Not (Not a) := 
  fun na => na ha  -- 'na' has type (a → False), so passing 'ha' yields False.

-- Modus Tollens: If (a → b) and (¬b), then (¬a)
theorem Not.imp {a b : Prop} (nb : Not b) (ab : a → b) : Not a := 
  fun ha => 
    have hb : b := ab ha
    nb hb

➡️ 4. निहितार्थ / Implication (→) 🔗

चूँकि Lean टाइप थ्योरी पर निर्भर करता है, इसलिए तार्किक निहितार्थ (a→ba \to b) को शाब्दिक रूप से एक फ़ंक्शन के रूप में माना जाता है। यह सिद्ध करने के लिए कि aa का अर्थ bb है, आपको एक ऐसा फ़ंक्शन लिखना होगा जो aa का कोई भी प्रमाण लेता है और bb का प्रमाण लौटाता है।

श्रृंखलाबद्ध निहितार्थ (Chained Implication) उदाहरण: यदि आप cc को aa में बदल सकते हैं, और bb को dd में बदल सकते हैं, तो आप a→ba \to b वाले फ़ंक्शन को c→dc \to d वाले फ़ंक्शन में बदल सकते हैं।

theorem imp_imp_imp {a b c d : Prop} 
  (ca : c → a) (bd : b → d) : (a → b) → (c → d) := 
  fun ab => fun hc => 
    have ha : a := ca hc
    have hb : b := ab ha
    bd hb

🔗 5. संयोजन / Conjunction (∧) 🔗

तार्किक संयोजन, जिसके लिए aa और bb दोनों का सत्य होना आवश्यक है, को एक structure के रूप में मॉडल किया जाता है। प्रोग्रामिंग के संदर्भ में, यह एक Product टाइप (एक स्ट्रक्ट या टपल) है जो साक्ष्य के दो अलग-अलग टुकड़ों को रखता है।

परिभाषा:

structure And (a b : Prop) : Prop where
  intro ::
  left : a
  right : b

मुख्य प्रमाण पैटर्न:

-- Introduction: Creating an And
example {a b : Prop} (ha : a) (hb : b) : And a b := 
  And.intro ha hb

-- Symmetry: a ∧ b → b ∧ a
theorem And.symm {a b : Prop} (h : And a b) : And b a := 
  And.intro h.right h.left

🔀 6. वियोजन / Disjunction (∨) 🔗

तार्किक वियोजन के लिए कथनों में से कम से कम एक का सत्य होना आवश्यक है। And के विपरीत, Or एक इंडक्टिव Sum टाइप (एक टैग किया गया यूनियन) है, क्योंकि प्रमाण बनाने के दो अलग-अलग, वैकल्पिक तरीके हैं।

परिभाषा:

inductive Or (a b : Prop) : Prop where
  | inl (h : a) : Or a b
  | inr (h : b) : Or a b

a∨ba \lor b को सिद्ध करने के लिए, आप aa के प्रमाण को inl (inject-left) कंस्ट्रक्टर में, या bb के प्रमाण को inr (inject-right) कंस्ट्रक्टर में लपेटते हैं।

उदाहरण:

-- Symmetry: a ∨ b → b ∨ a
theorem Or.symm {a b : Prop} (h : Or a b) : Or b a :=
  match h with
  | Or.inl ha => Or.inr ha
  | Or.inr hb => Or.inl hb

↔️ 7. तार्किक तुल्यता / Logical Equivalence (↔) 🔗

द्वि-निहितार्थ (Bi-implication), या “यदि और केवल यदि” (Iff), दर्शाता है कि दो कथन तार्किक रूप से समतुल्य हैं। इसे दोनों दिशाओं में निहितार्थ रखने वाली एक संरचना के रूप में परिभाषित किया गया है।

परिभाषा:

structure Iff (a b : Prop) : Prop where
  intro ::
  mp : a → b
  mpr : b → a

स्वतुल्यता (Reflexivity) उदाहरण:

-- Every proposition is equivalent to itself (a ↔ a)
theorem Iff.refl {a : Prop} : Iff a a :=
  Iff.intro (fun ha => ha) (fun ha => ha)

🎯 निष्कर्ष और मुख्य बातें 🔗

Lean 4 में प्रपोज़िशनल लॉजिक को शून्य से फिर से बनाकर, हम औपचारिक प्रणालियों की यांत्रिक सुंदरता को उजागर करते हैं:

  1. डिफ़ॉल्ट रूप से रचनात्मक (Constructive by Default): हम केवल यह कहने के बजाय कि कुछ सत्य है, यह परिभाषित करते हैं कि किसी सत्य का साक्ष्य रखने का क्या अर्थ है।
  2. टाइप के रूप में कथन (Propositions as Types): करी-हावर्ड मैपिंग के माध्यम से, तार्किक संयोजक सीधे मानक प्रोग्रामिंग संरचनाओं के अनुरूप होते हैं: निहितार्थ एक फ़ंक्शन है, And एक स्ट्रक्ट है, Or एक एनम (enum) है, True एक यूनिट है, और False वॉइड (void) है।
  3. प्रोग्राम के रूप में प्रमाण (Proofs as Programs): Lean में एक गणितीय प्रमाण लिखना एक टाइप-सुरक्षित फ़ंक्शन लिखने के समान है जो एक विशिष्ट सिग्नेचर को संतुष्ट करता है।

इन आधारभूत बिल्डिंग ब्लॉक्स में महारत हासिल करना अधिक जटिल गणितीय प्रमेयों, प्रेडिकेट लॉजिक और जटिल सॉफ़्टवेयर प्रणालियों के सत्यापन से निपटने के लिए आवश्यक महत्वपूर्ण आधार प्रदान करता है।


📚 मेरी निःशुल्क ई-बुक डाउनलोड करें 🔗

काउए की जीवनशैली का क्यूरेटेड ऑफ़लाइन संस्करण प्राप्त करें—🍏 स्वास्थ्य, 💰 धन, ❤️ प्रेम और 🧘 अर्थ को बेहतर बनाने के लिए एक व्यावहारिक मार्गदर्शिका।

काउए की जीवनशैली

काउए की जीवनशैली

📬 न्यूज़लेटर की सदस्यता लें 🔗

जब भी मैं बेहतर जीवन जीने पर नए निबंध, पुस्तक सारांश और व्यावहारिक गाइड प्रकाशित करूँ, तो सूचना प्राप्त करें। कोई स्पैम नहीं—कभी भी सदस्यता समाप्त करें।


💬 टिप्पणियाँ और चर्चा 🔗

क्या आपका कोई प्रश्न, दृष्टिकोण या सुझाव है? नीचे अपने विचार साझा करें। टिप्पणियाँ GitHub Discussions (विज्ञापन-मुक्त और स्पैम-मुक्त) द्वारा संचालित हैं—टिप्पणी करने या प्रतिक्रिया देने के लिए नीचे Sign in with GitHub पर क्लिक करें (निःशुल्क GitHub खाता बनाने में एक मिनट से भी कम समय लगता है)।



अंतिम अपडेट: 11 अक्टू॰ 2026.

अस्वीकरण (DISCLAIMER): इस साइट की सामग्री केवल सूचनात्मक और शैक्षिक उद्देश्यों के लिए है और यह चिकित्सा, मनोवैज्ञानिक, वित्तीय, निवेश, कर या कानूनी सलाह का गठन नहीं करती है। यहाँ प्रस्तुत विचार, संकलन और राय पूरी तरह से मेरे अपने हैं और मेरे नियोक्ता का प्रतिनिधित्व नहीं करते हैं। पुस्तकों, व्याख्यानों और लेखों के सारांश स्वतंत्र शैक्षिक टिप्पणियाँ हैं और उनके संबंधित लेखकों की बौद्धिक संपदा बने रहते हैं। संपादन, स्वरूपण और संश्लेषण में सहायता के लिए AI उपकरणों का उपयोग किया जा सकता है; यद्यपि सटीकता सुनिश्चित करने का हर संभव प्रयास किया जाता है, फिर भी त्रुटियाँ हो सकती हैं। गोपनीयता (PRIVACY): यह साइट वैकल्पिक न्यूज़लेटर सदस्यता (follow.it), टिप्पणियों (giscus / GitHub Discussions) और एम्बेडेड मीडिया (YouTube) के लिए तृतीय-पक्ष सेवाओं का उपयोग करती है, जो अपनी संबंधित गोपनीयता नीतियों के अनुसार आगंतुकों के IP पते और कुकीज़ को संसाधित कर सकती हैं।