मेरे अनुभव में, एक अच्छा और परिचालन रास्ते के लिए प्रकार का द्वंद्व को समझने के लिए -calculi माध्यम से जा रहा द्वारा है π -calculus।λπ
जब आप प्रक्रिया कैलकुलस में अनुवाद (विघटित) करते हैं, तो द्वैत सरल हो जाता है: इनपुट आउटपुट से दोगुना होता है और इसके विपरीत । द्वैत से अधिक (बहुत) नहीं है।
में -calculus आप एक सीधा (और लगभग सममित) इनपुट और आउटपुट के बीच द्वंद्व है। यदि आप एक प्रकार है कहो α = ( बी ओ ओ एल , मैं एन टी ) ↑ । तब α कहता है कि α टाइप करने वाला चैनल बूलियन मान और पूर्णांक को ले जाने के लिए बिल्कुल एक आउटपुट बनाता है। एक प्रक्रिया में चैनल इस प्रकार के रहने वाले एक्स होगा ¯ एक्स ⟨ च एक एल एस ई , 7 ⟩ । दोहरी प्रकार है, जो हम लिख सकते हैं
¯ απα=(Bool,Int)↑ααxx¯¯¯⟨false,7⟩α¯¯¯, व्यक्त करेंगे कि एक इनपुट एक जोड़ी होगा ग ( वी , डब्ल्यू ) .0 । (v,w)जहां एक बूलियन है और w एक पूर्णांक है। हम लिखने ¯ α के रूप में ( ख ओ ओ एल , मैं एन टी ) ↓ । एक प्रक्रिया में रहने वाले ¯ α पर एक्सvwα¯¯¯(bool,int)↓α¯¯¯xc(v,w).0
स्वाभाविक रूप से, प्रक्रियाएं केवल सरल पूर्णांक या बूलियन मानों को नहीं बल्कि चैनलों को भी संप्रेषित करती हैं। उदाहरण के लिए प्रकार एक चैनल है कि दो में से एक मान इनपुट बनाता है का वर्णन करता है ( वी , डब्ल्यू ) जहां वी एक पूर्णांक है और डब्ल्यू एक चैनल है कि वास्तव में बनाने के लिए इस्तेमाल किया जाता है एक आउटपुट (पूर्णांक का)। जाहिर है अपनी दोहरी होना चाहिए ¯ β = ( मैं एन टी , ( मैं एन टी )β=(int,(int)↑)↓(v,w)vw , जो एक ऐसे चैनल का वर्णन करता है जो डेटा के दो टुकड़े, एक पूर्णांक और एक इनपुट का उपयोग करने के लिए उपयोग किए जाने वाले चैनल का वर्णन करता है। का द्वंद्वαऔर ¯ α अर्थ है कि हम कर सकते हैं जुड़कर समानांतर लिखें एक प्रक्रियापीप्रकार है किα
पर चैनल नामएक्सएक प्रक्रिया के साथक्यूहै कि प्रकार
¯ α में एक हीएक्स(यह मानते हुए कि अन्य साझा चैनलोंपीऔरक्यूदोहरी भी हैं)। और इसी तरह के लिएβऔर अपनी दोहरी ¯ β ।β¯¯¯=(int,(int)↓)↑αα¯¯¯PαxQα¯¯¯xPQββ¯¯¯
यह आसानी से, उच्च क्रम प्रकार के लिए सामान्यीकृत किया जा सकता उदाहरण के लिए
एक प्रकार है जो दो वस्तुओं ( v , w ) को इनपुट करता है , जहां v टाइप X का है और w एक चैनल है जिसका उपयोग टाइप X के कुछ आउटपुट के लिए किया जाता है । एक प्रक्रिया में एक चैनल इस प्रकार के होने का एक उदाहरण एक्स है सामान्य फारवर्डर एक्स ( वी डब्ल्यू ) । ¯ w वी∀X.(X,(X)↑)↓(v,w)vXwXx
x(vw).w¯¯¯¯v
थोड़ा सरल करते हुए, यह मूल रूप से
प्रकार का एकमात्र निवासी है
। ( एक्स , ( एक्स ) ↑ ) ↓ ।
∀X.(X,(X)↑)↓
प्रक्रिया स्तर पर सार्वभौमिक परिमाणीकरण का क्या अर्थ है? एक सीधी व्याख्या है: यदि डेटा एक प्रकार-चर द्वारा टाइप किया जाता है, तो इसे केवल एक ऑब्जेक्ट के आउटपुट के रूप में उपयोग नहीं किया जा सकता है। इसलिए हम इस डेटा का निरीक्षण नहीं कर सकते, हम इसे केवल पास कर सकते हैं, या इसे भूल सकते हैं।
∀X.(X,(X)↑)↓∃X.(X,(X)↓)↑
इस के सिद्धांत पर कुछ विस्तार से काम किया गया है [1, 2, 3] और कुछ अन्य, काम तक पहुंचने के लिए कठिन, और ध्रुवीकृत रैखिक तर्क से बहुत ही सटीक रूप से संबंधित हैं और इसकी 4 में द्वैत की धारणा है ।
λλπλπλ
1π
π
π
4 के । होंडा एट अल।, एक टाइप किए गए पी-कैलकुलस और ध्रुवीकृत प्रूफ-नेट के बीच एक सटीक पत्राचार ।
5 आर। मिलनर, प्रक्रियाओं के रूप में कार्य ।