क्यों बृहदान्त्र निरूपित करने के लिए कि एक मूल्य एक प्रकार का है?


19

पियर्स (2002) पृष्ठ 92 पर लिखकर टाइपिंग रिलेशन का परिचय देता है :

अंकगणितीय अभिव्यक्तियों के लिए टाइपिंग रिलेशन, जिसे "t: T" लिखा जाता है, को कई प्रकार के शब्दों को निर्दिष्ट करने वाले इंट्रेंस नियमों के एक सेट द्वारा परिभाषित किया गया है।

और फुटनोट कहता है कि प्रतीक _ का उपयोग अक्सर इसके बजाय किया जाता है: मेरा सवाल बस यही है कि सिद्धांतकार किस प्रकार का उपयोग करना पसंद करते हैं: ओवर ? यदि टाइप मानों का एक समूह है तो यह लिखने के लिए सही अर्थ है , कोई नए अंकन की आवश्यकता नहीं है।टी टी टीTtT

क्या यह इसी तरह से है कि कुछ सीएस लेखक पसंद करते हैं और यहां तक ​​कि यह भी सोचते हैं कि यह नोटेशन का दुरुपयोग है और इसे लिखा जाना चाहिए ?3n2=O(n2)3n2O(n2)


7
सदस्यता की भविष्यवाणी या तो सही या गलत हो सकती है, जबकि एक टाइपिंग डिक्लेरेशन को आमतौर पर एक तथ्यात्मक कथन के रूप में इंटरप्रेट किया जाता है जिसे सत्य घोषित किया जाता है या यह सत्य विशुद्ध रूप से वाक्यगत साधनों द्वारा प्राप्त किया जा सकता है। इसके विपरीत एक अभाज्य संख्या है, जिसके लिए सदस्यता की कोई वाक्यात्मक विधि नहीं है। xX x:X
मूसा अल-परेशानी

4
@ मूसा-परेशानी: यह गलत बयानी है कि क्या चल रहा है। इसे सच नहीं घोषित किया गया है, क्योंकि इसका मतलब यह होगा कि मैं "घोषणा" कर सकता हूं कि " false: int", उदाहरण के लिए। न तो यह मामला है कि निर्णय जरूरी "विशुद्ध रूप से वाक्यगत साधनों" द्वारा लिया जाना चाहिए, उदाहरण के लिए परिवारों के साथ एक श्रेणी के आंतरिक प्रकार के सिद्धांत के मामले में।
एंड्रेज बॉयर


2
में @ MusaAl-hassy की टिप्पणी करने के लिए जोड़ने के लिए, computatioal प्रकार सिद्धांत बॉब कांस्टेबल, स्टुअर्ट एलन, बॉब हार्पर, एट अल। की, टाइपिंग निर्णय के लिए नियमित रूप से प्रयोग किया जाता है क्योंकि इससे एक सदस्यता विधेय के अधिक समान है (देखें इस बात, स्लाइड 25, एक उदाहरण के लिए)।
xrq

3
निश्चित रूप से भी अंकन का दुरुपयोग है और वास्तव में लिखा जाना चाहिए λ n .3 एन 2हे ( λ n एन 2 ) ? (गणितज्ञ पसंद कर सकते हैं n 3 एन 2हे ( एन एन 2 ) ।)3n2O(n2)λn.3n2O(λn.n2)n3n2O(nn2)
ऑस्कर कनिंघम

जवाबों:


12

क्योंकि कोलन के दाईं ओर जो जरूरी है वह सेट नहीं है और जो कोलोन के बाईं ओर है, जरूरी नहीं कि वह उस सेट का सदस्य हो।

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

विशेष रूप से, कई प्रकार के सिद्धांतों में एक वाक्यात्मक सूत्रीकरण होता है। ऐसे नियम हैं जो एक प्रकार की चीज का कारण बनते हैं। जब टाइपिंग नियम एक सिद्धांत के लिए एक नींव के रूप में उपयोग किया जाता है, तो यह भेद करना महत्वपूर्ण है कि टाइपिंग के नियम क्या कहते हैं कि अतिरिक्त बाहरी ज्ञान को लागू करने से कोई भी प्रभावित हो सकता है। यह विशेष रूप से महत्वपूर्ण है यदि टाइपिंग नियम एक प्रूफ थ्योरी के लिए एक नींव हैं: सिद्धांत जो शास्त्रीय तर्क के साथ सेट सिद्धांत पर आधारित हैं और पसंद का स्वयंसिद्ध एक रचनात्मक तर्क में पकड़ सकता है या नहीं, उदाहरण के लिए। इस क्षेत्र में लाभदायक कागजात में से एक है चर्च के प्रकार का सरल सिद्धांत का एक निरूपण (1940)

शायद जिस तरह से और सेटों के बीच का अंतर सबसे स्पष्ट है, वह यह है कि सेटों के लिए सबसे बुनियादी नियम, अर्थात् दो सेट समान iff हैं, जिनके समान तत्व हैं, आमतौर पर प्रकारों के लिए लागू नहीं होते हैं। यहाँ पर बीयन्स बाउर का उत्तर और कुछ उदाहरणों के लिए संबंधित प्रश्न पर उनका उत्तर देखें । उस दूसरे सूत्र में पढ़ने लायक अन्य उत्तर हैं।

टाइप किए गए कैलकुलस में, यह कहने के लिए कि प्रकार सेट हैं वास्तव में प्रकारों को एक शब्दार्थ देना है। पथरी देना एक प्रकार-सिद्धांत संबंधी शब्दार्थ नहीं है। उदाहरण के लिए, मान लें कि आप फ़ंक्शंस वाली भाषा को परिभाषित कर रहे हैं। एक समारोह का एक प्रकार क्या है? कुल कार्य उनके ग्राफ द्वारा निर्धारित किए जाते हैं, जैसा कि हमें सेट सिद्धांत 101 में सिखाया जाता है। लेकिन आंशिक कार्यों के बारे में क्या? क्या आप सभी गैर-समाप्ति वाले कार्यों को एक ही शब्दार्थ देना चाहते हैं? आप पथरी के लिए सेट के रूप में प्रकारों की व्याख्या नहीं कर सकते हैं जो आपको उस प्रश्न का उत्तर देने तक पुनरावर्ती कार्यों की अनुमति देता है। 1970 के दशक की शुरुआत में प्रोग्रामिंग लैंग्वेज या केल्टी को एक डीनोटेशनल शब्दार्थ देना एक कठिन समस्या थी। यहां का सेमिनल पेपर कंप्यूटर भाषाओं (1971) के लिए एक गणितीय शब्दार्थ हैडाना स्कॉट और क्रिस्टोफर स्ट्रेचीहास्केल wikibook विषय के एक अच्छी प्रस्तुति है।

जैसा कि मैंने ऊपर लिखा है, उत्तर का एक दूसरा हिस्सा यह है कि भले ही आप एक सेट-थ्योरिटिकल शब्दार्थ देने में कामयाब रहे हों, लेकिन बृहदान्त्र के बाईं ओर की बात हमेशा सेट का एक तत्व नहीं होती है। मानों के प्रकार हैं, लेकिन इसलिए अन्य चीजें, जैसे कि भाव और चर । उदाहरण के लिए, टाइप की गई प्रोग्रामिंग भाषा में एक अभिव्यक्ति का एक प्रकार होता है, भले ही वह समाप्त न हो। आप conflate करने के लिए तैयार हो सकता है integerऔर Z , लेकिन (x := 0; while true; do x := x + 1; x)का एक भाग नहीं होता Z

मैं नहीं जानता कि जब बृहदान्त्र संकेतन प्रकार के लिए उत्पन्न हुआ। यह अब शब्दार्थ में मानक है, और प्रोग्रामिंग भाषाओं में आम है, लेकिन न तो रसेल और न ही चर्च ने इसका इस्तेमाल किया। अल्गोल ने इसका उपयोग नहीं किया, लेकिन अल्गोल-प्रेरित भाषा पास्कल ने 1971 में किया। मुझे संदेह है कि यह पहली बार नहीं था, क्योंकि 1970 के दशक के कई सिद्धांत पत्र संकेतन का उपयोग करते हैं, लेकिन मुझे इसका कोई पता नहीं है पहले उपयोग करें। दिलचस्प बात यह है कि यह जल्द ही प्रोग्रामिंग से प्रकारों की अवधारणा और तर्क से एकीकृत हो गया था - जैसा कि साइमन मार्टिनी ने प्रोग्रामिंग लैंग्वेज में कई प्रकार के प्रकारों में दिखाया था, जिसे 1960 के दशक तक प्रोग्रामिंग भाषाओं में "टाइप" कहा जाता था। शब्द का उपयोग और प्रकार के सिद्धांत से नहीं।


37

मुख्य कारण पेट के अंकन के लिए पसंद करते हैं t:T सदस्यता संबंध के लिए tT कि सदस्यता संबंध क्योंकि गुमराह किया जा सकता है प्रकार (बस) संग्रह नहीं कर रहे हैं

[ पूरक: मुझे ध्यान देना चाहिए कि ऐतिहासिक प्रकार का सिद्धांत का उपयोग करके लिखा गया था । प्रकार के मार्टिन-LOF की अवधारणा रचनात्मक कब्जा सेट चाहिए था, और पहले से ही रसेल और व्हाइट इस्तेमाल किया ε वर्ग memebrship के लिए। यह उस क्षण को ट्रैक करना दिलचस्प होगा जब : ∈ की तुलना में अधिक प्रचलित हो गया ।ϵ:

एक प्रकार एक निश्चित प्रकार के निर्माण का वर्णन करता है, अर्थात, एक निश्चित संरचना के साथ वस्तुओं को कैसे बनाया जाए, उनका उपयोग कैसे किया जाए, और उनके बारे में क्या समीकरण हैं।

उदाहरण के लिए एक उत्पाद प्रकार A×B में नियम हैं जो बताते हैं कि आदेशित जोड़े को कैसे बनाया जाए, और यह बताते हुए कि हम A×B किसी भी तत्व से पहले और दूसरे घटकों को प्रोजेक्ट कर सकते हैं, को समाप्त करने के नियम । A×B की परिभाषा "सभी का संग्रह ..." शब्दों से शुरू नहीं होती है और न ही यह कहीं भी ऐसा नहीं कहता है जैसे " A×B सभी तत्व जोड़े हैं" (लेकिन यह इस परिभाषा से अनुसरण करता है कि हर तत्व A×B है propositionallyएक जोड़ी के बराबर)। Constrast में, के सेट-सैद्धांतिक परिभाषा X×Y है "के रूप में सभी आदेश दिया जोड़े के सेट ..." कहा गया है।

अंकन t:T तथ्य यह है कि प्रतीक t संरचना द्वारा वर्णित है T

एक प्रकार T को इसके विस्तार के साथ भ्रमित नहीं होना है , जो कि टाइप T की सभी वस्तुओं का संग्रह है । एक प्रकार इसके विस्तार से निर्धारित नहीं होता है, जैसे एक समूह अपने वाहक सेट द्वारा निर्धारित नहीं होता है। इसके अलावा, ऐसा हो सकता है कि दो प्रकारों का एक ही विस्तार हो, लेकिन उदाहरण के लिए अलग हो:

  1. सभी का प्रकार भी दो से बड़ा है: Σ(n:N).isprime(n)×iseven(n)×(n>2)
  2. दो की तुलना में छोटे सभी छोटे अपराधों का प्रकार: Σ(n:N).isprime(n)×isodd(n)×(n<2)

दोनों का विस्तार खाली है, लेकिन वे एक ही प्रकार के नहीं हैं।

वहाँ प्रकार-सैद्धांतिक बीच आगे मतभेद हैं : और सेट-सैद्धांतिक । एक वस्तु a सेट सिद्धांत रूप में स्वतंत्र रूप से क्या सेट यह के अंतर्गत आता है के मौजूद है, और यह कई सेट पास न हो। इसके विपरीत, अधिकांश प्रकार सिद्धांतों टाइपिंग की विशिष्टता को पूरा: अगर t:T और t:U तो TU । या इसे अलग तरीके से रखने के लिए, एक प्रकार-सिद्धांत निर्माण t में ठीक एक प्रकार का T , और वास्तव में इसके बिना (विशिष्ट रूप से निर्धारित) प्रकार के बिना ऑब्जेक्ट t होने का कोई तरीका नहीं है ।

एक और अंतर यह है कि सेट सिद्धांत रूप में हम कर सकते हैं इनकार तथ्य यह है कि aA लेखन द्वारा ¬(aA) या aA । यह टाइप थ्योरी में संभव नहीं है, क्योंकि t:T एक ऐसा निर्णय है, जिसे टाइप थ्योरी के नियमों का उपयोग करके प्राप्त किया जा सकता है, लेकिन टाइप थ्योरी में ऐसा कुछ भी नहीं है जो हमें यह बता सके कि कुछ व्युत्पन्न नहीं है। जब एक बच्चा लेगो ब्लॉकों से कुछ बनाता है तो वे गर्व से अपने माता-पिता को उन्हें निर्माण दिखाने के लिए दौड़ते हैं, लेकिन वे अपने माता-पिता को कभी भी यह दिखाने के लिए नहीं दौड़ते हैं कि वे क्या बनाते हैं।


1
लेडी, महान जवाब। क्या आपको बृहदान्त्र संकेतन की ऐतिहासिक उत्पत्ति का पता है?
एंड्रियास रॉसबर्ग

काश, मैं नहीं। चर्च के प्रकार सिद्धांत सबस्क्रिप्ट, यानी, इस्तेमाल किया प्रकार का एक चर के लिए α । रसेल और व्हाइट इस्तेमाल किया ε एक वर्ग से संबंधित के संबंध के लिए। Algol 68 वैरिएबल नामों के सामने टाइप करता है। 1972 मार्टिन-LOF प्रकार सिद्धांत का उपयोग करता है , और ऐसा नहीं करता है 1984 संस्करण है, लेकिन [1994 संस्करण] एक कॉलन उपयोग करता है। xααϵ
एंड्रेज बॉयर

1
तो आपका तर्क है कि एक प्रकार एक समूह जैसा है? यही कारण है कि समझ में आता है, लेकिन अंकन सार बीजगणित में आम है। gG
ब्योर्न लिंडक्विस्ट

2
@ BjörnLindqvist: मुझे नहीं लगता कि यह जवाब पूरी कहानी है। यहां तक ​​कि मानक गणित में हम " " का उपयोग करते हैं ताकि यह पता लगाया जा सके कि एफ एस से टी तक एक फ़ंक्शन है । हमने " f ( S T ) " या ऐसा कुछ क्यों नहीं इस्तेमाल किया ? खैर, हमने अभी नहीं किया। बेशक, वहाँ के "उपयोग से बचने के लिए अच्छा कारण है एक में" प्रस्तुति प्रकार सिद्धांतों के कुछ प्रकार की, क्योंकि हमारे पास ZFC-सिखाया लोगों को यह ZFC सेट है, जो स्पष्ट रूप से नहीं है की तरह है लगता है नहीं करना चाहते मामला। लेकिन इसका मतलब यह नहीं है कि बृहदान्त्र पहले से ही नहीं हैf:STfSTf(ST)प्रकार के सिद्धांत के लोकप्रिय होने से बहुत पहले व्यापक रूप से उपयोग किया गया था।
user21820

1
@ user21820 "हम क्यों उपयोग नहीं किया ?" बस अटकलें: क्योंकि गणितज्ञों ने सेट के रूप में एस टी के बारे में कभी नहीं सोचा था । इस संकेतन के इतिहास के लिए यहां देखें । मुझे संदेह है कि f : S T से कोलन टाइप थ्योरिस्ट की प्रेरणा थे। अधिक संभावना प्रकार सिद्धांतकारों पेट के तथ्य यह है कि के साथ क्या करना है एक ASCII वर्ण नहीं है। f(ST)STf:ST
माइकल

5

ब्योर्न,

संभवतः एक पुराना संदर्भ है, लेकिन एक बात के लिए, बृहदान्त्र का उपयोग पास्कल प्रोग्रामिंग भाषा में किया गया था:

First Google hit for Pascal


2
क्या पहले की कोई प्रोग्रामिंग लैंग्वेज इस्तेमाल नहीं की गई थी :?
बालि बाउर

@AndrejBauer वास्तव में, मैंने लिखा है कि "संभवतः एक पूर्व संदर्भ है लेकिन ..." उस संभावित तथ्य के खिलाफ रक्षा करने के लिए।
ब्योर्न क्रोस-हेंसन

@AndrejBauer अल्गोल ने नहीं किया। था :1970 के दशक से पहले सिद्धांत कागजात में प्रयोग किया जाता?
गिल्स एसओ- बुराई को रोकना '25

1
फोरट्रान है, REAL :: xलेकिन मुझे नहीं पता कि यह पास्कल से पहले आया था।
माइकल

1
@ मिचेल फोरट्रान पास्कल (सीए 1955 बनाम सीए 1970) की तुलना में पहले आया था, लेकिन मुझे लगता है कि यह विशिष्ट वाक्यविन्यास केवल फोर्ट्रान 90 में पेश किया गया था, इसलिए पास्कल की तुलना में बहुत बाद में। उदाहरण के लिए यहाँ देखें fortranwiki.org/fortran/show/Modernizing+Old+Fortran
फेडरिको पोलोनी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.