सिस्टम एफ ला ला चर्च में, क्या हम सभी के उन्मूलन के लिए प्रकार के औचित्य को स्वचालित कर सकते हैं?


9

प्रश्न निम्नलिखित है। आम तौर पर जब किसी का कार्यकाल होता हैΛX.t, हम उदाहरण के लिए, इस शब्द को एक प्रकार से लागू करके समाप्त कर सकते हैं(ΛX.t)[T]t[X:=T]

अब, मान लीजिए कि यह एक तीर है और हम इसे एक तर्क देना चाहते हैं, तो हमें इस शब्द को उचित प्रकार से लागू करने की आवश्यकता होगी, ताकि यह इस तरह का तर्क प्राप्त कर सके। यही कारण है कि मैं पूछ रहा हूं कि क्या मैं स्वचालित कर सकता हूं: क्या एक फ़ंक्शन का निर्माण करना संभव हैf दो शब्द लेना और एक प्रकार का लौटना f<ΛX.t><r> हमें जिस प्रकार की आवश्यकता है, उसे बदल दें X में t ऐसा है कि t तर्क को स्वीकार कर सकते हैं r?

कुछ उदाहरण:

  • f<ΛX.λxXX.t><λxT.x>=T

  • f<ΛX.λxX.r><(λxR.tT) s>=टी


2
यदि आपका तर्क उप / सुपरस्क्रिप्ट के रूप में एफ को नहीं रखता है, तो आपका प्रश्न थोड़ा अधिक पठनीय होगा, प्रत्येक में अन्य उप / सुपरस्क्रिप्ट होते हैं।
डेव क्लार्क

संदर्भ के लिए: इस तरह की समस्या "स्थानीय प्रकार के निष्कर्ष" ( dl.acm.org/citation.cfm?id=345100 ) द्वारा हल की गई दो समस्याओं में से एक है । प्रासंगिक भी dl.acm.org/citation.cfm?id=1086383 होना चाहिए ।
ब्लेज़ोरब्लेड

जवाबों:


8

मुझे यकीन नहीं है कि मैं सवाल समझ गया हूं। सबसे पहले, मैं आपकी समस्या को निम्न एकीकरण समस्या में कम करने का प्रयास करता हूं:

एक प्रणाली एफ प्रकार τ (एक्स) को एक मुक्त (प्रकार) चर एक्स, और एक प्रकार τ के साथ दिया गया।
क्या ऐसा γ (=) = that टाइप करना संभव है?

इस समस्या को हल करने के लिए एक छद्म कोड (अपवाद के साथ उठाया जा सकता है जब अपरिहार्य नहीं)।

unify (X, σ) = σ
unify (Y, Y) = Y
unify (τ₁ → τ₂, σ₁ → σ₂) = unify(τ₁,σ₁) → unify(τ₂,σ₂)
unify (∀Y.τ(Y), ∀Y.σ(Y)) = ∀Y.unify(τ(Y),σ(Y)) (with Y a fresh variable)
unify (_,_) = raise Not_unifiable

आप साबित कर सकते हैं (शामिल करके) कि prove = un (unify (τ (X), σ) काम करता है अगर और केवल एक अपवाद नहीं उठाया जाता है।

अब आपकी समस्या के लिए आप ले सकते हैं

f (ΛX.t) (r) = match type of t with "τ₁ → τ₂" => unify (τ₁, type of r) | _ => fail end

(निश्चित रूप से आपके फ़ंक्शन च को तर्क के रूप में लेना चाहिए यदि आपकी शर्तें खुली हैं)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.