गणितीय संरचना को परिभाषित करने के कई तरीके हैं, जो इस बात पर निर्भर करता है कि आप किन गुणों को परिभाषा मानते हैं। समतुल्य चरित्रों के बीच, जिसे आप परिभाषा के रूप में लेते हैं और जिसे आप वैकल्पिक लक्षण वर्णन के रूप में लेते हैं, वह महत्वपूर्ण नहीं है।
रचनात्मक गणित में, एक परिभाषा चुनना बेहतर होता है जो रचनात्मक तर्क को आसान बनाता है। प्राकृतिक संख्याओं के लिए, तर्क का मूल रूप प्रेरण है, जो पारंपरिक शून्य या उत्तराधिकारी परिभाषा को बहुत उपयुक्त बनाता है। संख्या के अन्य सेटों में ऐसी कोई प्राथमिकता नहीं है।
जब गैर-रचनात्मक सेटिंग में, कोटेशन पर तर्क दिया जाता है, तो यह कहा जाता है कि "समतुल्यता वर्ग का सदस्य चुनें"। रचनात्मक सेटिंग में, किसी सदस्य को कैसे चुनना है, इसका वर्णन करना आवश्यक है। इससे परिभाषाओं के साथ जाना आसान हो जाता है जो समतुल्य वर्गों के निर्माण के बजाय, प्रकार के प्रत्येक सदस्य के लिए एक वस्तु का निर्माण करते हैं।
उदाहरण के लिए, को परिभाषित करने के लिए, एक गणितज्ञ प्राकृतिक संख्याओं के अंतर के साथ खुश हो सकता है:
जबकि इस पर एक स्पष्ट भावना है (कोई "यह या यह"), रचनात्मक तर्क के लिए, यह सरल है अगर वस्तुओं की समानता प्रतिनिधित्व की समानता के साथ मेल खाती है। , इसलिए हम सापेक्ष पूर्णांकों को या तो प्राकृतिक संख्या के रूप में परिभाषित कर सकते हैं या किसी प्राकृतिक संख्या के ऋणात्मक को घटा सकते हैं:Z
Z:=N2/{((x,y),(x′,y′))∣x+y′=x′+y}
Inductive Z1 :=
| Nonnegative : nat -> Z1 (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
| Negative : nat -> Z1. (* ⟦Negative x⟧ = -⟦x⟧-1 *)
हालांकि, यह परिभाषा विषम रूप से विषम है, जो शून्य के लिए दो अलग-अलग अभ्यावेदन स्वीकार करने के लिए बेहतर बना सकती है:
Inductive Z2 :=
| Nonnegative : nat -> Z2 (* ⟦Nonnegative x⟧ = ⟦x⟧ *)
| Nonpositive : nat -> Z2. (* ⟦Nonpostitive x⟧ = -⟦x⟧ *)
या हम एक इमारत ब्लॉक के रूप में भीलों का उपयोग किए बिना सापेक्ष पूर्णांक बना सकते हैं:
Inductive Pos3 :=
| I : Pos3 (* ⟦I⟧ = 1 *)
| S3 : Pos3 -> Pos3 (* ⟦S3 x⟧ = ⟦x⟧+1 *)
Inductive Z3 :=
| N3 : Pos3 -> Z3 (* ⟦N3 x⟧ = -⟦x⟧ *)
| O3 : Z3 (* ⟦O3⟧ = 0 *)
| P3 : Pos3 -> Z3 (* ⟦P3 x⟧ = ⟦x⟧ *)
Coq मानक पुस्तकालय अभी तक एक और परिभाषा का उपयोग करता है: यह उनके अंकन से धनात्मक पूर्णांक का निर्माण करता है, आधार 2 है, क्योंकि अंक 1 एक अनुक्रम 0 या 1 के अनुक्रम के बाद है। यह फिर ऊपर से Z
जैसे निर्माण करता Z3
है Pos3
। इस परिभाषा में प्रत्येक पूर्णांक के लिए एक अद्वितीय प्रतिनिधित्व भी है। द्विआधारी संकेतन का उपयोग करने का विकल्प आसान तर्क के लिए नहीं है, लेकिन कार्यक्रमों से साक्ष्य से निकाले जाने पर अधिक कुशल कोड का उत्पादन करने के लिए।
तर्क में आसानी एक परिभाषा चुनने में एक प्रेरणा है, लेकिन यह कभी भी एक बीमा कारक नहीं है। यदि कुछ निर्माण किसी विशेष प्रमाण को आसान बनाते हैं, तो कोई उस परिभाषा का उपयोग उस विशेष प्रमाण में कर सकता है, और यह साबित कर सकता है कि निर्माण अन्य निर्माण के बराबर है जिसे मूल रूप से परिभाषा के रूप में चुना गया था।
तर्कसंगत संख्याओं के लिए, कोटेशन से बचना मुश्किल है, जब तक कि हम पूर्णांक का प्रतिनिधित्व कारकों के एक उत्पाद के रूप में शुरू नहीं करते हैं (जो कि कुछ मूलभूत संचालन जैसे कि जोड़ और कुल मिलाकर को परिभाषित करना मुश्किल है)। Coq मानक पुस्तकालय परिभाषित करता है के रूप में (अंश और हर), और एक ऑपरेटर को परिभाषित करता है की दो तत्वों की तुल्यता परीक्षण करने के लिए । यह परिभाषा बहुत आम है क्योंकि यह जितना आसान है उतना ही आसान है।NQ
N×N∗=?=
Q
वास्तविक संख्या मछली की पूरी अलग-अलग केतली है क्योंकि वे रचनात्मक नहीं हैं। वास्तविक संख्याओं को एक प्रेरक प्रकार के रूप में परिभाषित करना असंभव है (सभी आगमनात्मक प्रकार इनकार करने योग्य हैं)। इसके बजाय, वास्तविक संख्याओं की किसी भी परिभाषा को स्वयंसिद्ध, यानी गैर-रचनात्मक होना चाहिए। वास्तविक संख्याओं के मूल्य-उप सबसेट का निर्माण संभव है; ऐसा करने का तरीका इस बात पर निर्भर करता है कि आप किस सबसेट का निर्माण करना चाहते हैं।