2016-10-14 8 views
10

उन टाइपिंग नियमों "On the expressivity of elementary linear logic: characterizing Ptime and an exponential time hierarchy" कागज पर मौजूद हैं:मैं इस पेपर पर टाइपिंग नियमों की व्याख्या कैसे कर सकता हूं?

typing rules

“What part of Milner-Hindley do you not understand?” स्टैक ओवरफ़्लो प्रश्न से, मैं अंग्रेजी में उन लोगों में से कुछ पढ़ सकते हैं, लेकिन यह अभी भी यह पता लगाने की एक प्रकार बनाने के लिए कैसे के लिए मुश्किल है उस से चेकर बाहर।

  • कुल्हाड़ी:: यह पहला 4 नियम पढ़ने पर मेरे प्रयास है एक स्वयंसिद्ध के रूप में, एक्स है अगर ए, फिर एक्स प्रकार ए (? स्पष्ट नहीं है) है

  • टाइप
  • कट: एक संदर्भ Γt has type A साबित होता है, और एक अन्य संदर्भ , अभिकथन x has type A के साथ बढ़ाया, u has type B साबित होता है, तो उन दो संदर्भों एक साथ x की सभी घटनाओं का प्रतिस्थापन साबित u में t द्वारा B टाइप किया है। (इसका क्या मतलब है, हालांकि? क्यों वहाँ दो संदर्भों, जहां अतिरिक्त एक? इसके अलावा, प्रतिस्थापन के लिए एक नियम है, लेकिन कैसे की तरह लगता है कि अगर प्रतिस्थापन एक शब्द नहीं है से आता है, लेकिन एक ऑपरेशन? शास्त्रीय मिलनर हैं -Hindley ऐसा कुछ नहीं है, यह अनुप्रयोग के लिए सिर्फ एक बहुत ही सरल नियम है)

  • कमजोर: एक संदर्भ t has type A साबित होता है, तो उस संदर्भ बयान x has type B अभी भी साबित होता है t has type A के साथ बढ़ाया है।। (फिर से, यह स्पष्ट नहीं है?)

  • Contr: अगर एक संदर्भ x1 has type !A के साथ बढ़ाया और x2 has type !A में इस संदर्भ, x has type !A के साथ बढ़ाया x1 की सभी घटनाओं और x2 प्रतिस्थापन साबित करता है t has type B, साबित होता है तो x द्वारा t में B है। (प्रतिस्थापन के लिए एक और नियम, ऐसा लगता है? लेकिन क्यों दो शब्दों से ऊपर, एक शब्द के नीचे? इसके अलावा, क्यों उन ! रों? कहाँ है कि सभी प्रकार चेकर पर दिखाई कर रहे हैं?)

मैं काफी कुछ कहना है कि वे नियम क्या कहना चाहते हैं, लेकिन वास्तव में क्लिक करने से पहले मुझे कुछ याद आ रहा है और मैं इसी प्रकार के चेकर को लागू करने में सक्षम हूं। मैं उन नियमों को समझने के लिए कैसे जा सकता हूं?

+1

इनमें से कुछ वास्तव में स्पष्ट हैं, और मुझे नहीं पता कि क्यों "एक्सीम" की आवश्यकता है, लेकिन कई प्रकार के "स्पष्ट" चीजों को एक प्रकार की प्रणाली या तर्क स्थापित करने के लिए शामिल करने की आवश्यकता है। – dfeuer

+0

यदि यह प्रश्न फिट नहीं है, तो अगर कोई मुझे उन सूत्रों से टाइप-चेकर लिखने के तरीके पर एक व्यावहारिक ट्यूटोरियल से लिंक कर सकता है (शायद एसटीएलसी या कुछ सरल का उपयोग करके) तो यह मेरी समझ को बहुत आगे बढ़ाएगा। मैं इस समय (http://typesafety.net/thesis/chapter-2.pdf) गाइड को पढ़ रहा हूं, इस दौरान प्रकाश तर्कों पर मार्गदर्शिका, जो मैंने पोस्ट किए हैं, उनके सूत्रों की तुलना करने की कोशिश कर रहा हूं, मुझे यह बहुत ही सुगम लगता है। – MaiaVictor

+0

प्रश्न का शीर्षक थोड़ा भ्रामक है: क्या आप इस विशेष मामले में निर्णय के बारे में पूछ रहे हैं, या सामान्य रूप से निर्णय समझ रहे हैं? – Alec

उत्तर

8

इसमें कुछ समय बहुत व्यापक है, लेकिन अपनी टिप्पणी से मुझे लगता है कि यह है कि आप रैखिक प्रकार प्रणाली के कुछ मूल बातें की कमी है। यह प्रणाली कमजोर है (आमतौर पर रैखिक तर्क में अनुमति नहीं दी जाती है), इसलिए यह वास्तव में अंतर्ज्ञान अंतर्ज्ञान तर्क के अनुरूप है।

कुंजी विचार है: क्या आप (जैसे चर) में अधिकतम एक बार है हर मान का उपयोग कर सकते हैं।

प्रकार A (x) B (टेंसर उत्पाद) लगभग जोड़ी मूल्यों के प्रकार के लिए खड़ा है, जिससे आप A मान और B मान दोनों को प्रोजेक्ट कर सकते हैं।

प्रकार A -o B रैखिक कार्य है जो खपत एक मूल्य A के लिए खड़ा है (याद: सबसे एक उपयोग में) और एक एकल B पैदा करता है।

आप उदाहरण सकते हैं उदा। \x.x : A -o A लेकिन आपके पास : A -o (A (x) A) कोई शब्द नहीं हो सकता है क्योंकि इससे आपको दो बार तर्क का उपयोग करने की आवश्यकता होगी।

प्रकार !A ("निश्चित रूप से ए!") प्रकार A के मानों के लिए खड़ा है जिसे इच्छानुसार डुप्लिकेट किया जा सकता है - जैसा कि आप सामान्य रूप से गैर-रैखिक लैम्ब्डा कैलकुली में कर सकते हैं। यह कंट्राक्शन नियम द्वारा किया जाता है।

उदाहरण के लिए, !A -o !B एक सादे फ़ंक्शन का प्रतिनिधित्व करता है: इसके लिए एक मान (प्रतियों की असंबद्ध राशि में) की आवश्यकता होती है और एक मूल्य (प्रतियों की असंबद्ध राशि में) उत्पन्न होती है। इस प्रकार आप एक समारोह !A -o (!A (x) !A) लिख सकते हैं:

\a. (a (x) a) 

नोट एकाधिक परिसर के साथ हर रैखिक टाइपिंग नियम, (उदाहरण के लिए एक गामा, डेल्टा अन्य हो जाता है) परिसर के बीच वातावरण चर विभाजित करने के लिए है कि ओवरलैप के बिना। अन्यथा, आप रैखिक चर को डुप्लिकेट कर सकते हैं। इस वजह से कट में दो संदर्भ हैं। गैर रेखीय कटौती होगा:

G |- t: A  G, x:A |- u: B 
-------------------------------- 
    G |- u[t/x]: B 

लेकिन यहां दोनों शब्दों t और uG में चर का उपयोग कर सकते हैं, इसलिए u[t/x] चर दो बार उपयोग कर सकते हैं - अच्छा नहीं। इसके बजाय, रैखिक कटौती

G1 |- t: A  G2, x:A |- u: B 
-------------------------------- 
    G1,G2 |- u[t/x]: B 

बलों आप दो परिसर के बीच चर विभाजित करने के लिए: क्या आप t में उपयोग u के लिए उपलब्ध नहीं है।

संबंधित मुद्दे