दुर्भाग्य से, यहां बहुत सारी चीजें चल रही हैं। इसलिए, चीजों को मिलाना आसान है। "पूर्ण पूर्णता" और "पूर्ण अमूर्तता" में "पूर्ण" का उपयोग पूर्णता के विभिन्न विचारों को संदर्भित करता है। लेकिन, उनके बीच कुछ अस्पष्ट संबंध भी है। तो, यह एक जटिल जवाब होने जा रहा है।
पूर्ण पूर्णता : "ध्वनि और पूर्ण" एक ऐसा गुण है जिसे आप एक पारंपरिक तर्क के लिए इसके शब्दार्थ के संबंध में चाहते हैं। ध्वनि का अर्थ है कि आप जो भी तर्क में साबित कर सकते हैं वह शब्दार्थ मॉडल में सच है। पूर्णता का अर्थ है कि शब्दार्थ मॉडल में जो भी सत्य है वह तर्क में सिद्ध है। हम कहते हैं कि एक तर्क ध्वनि और एक विशेष शब्दार्थ मॉडल के लिए पूर्ण है। जब हम रचनात्मक तर्क के लिए आते हैं, जैसे कि मार्टिन-लोफ प्रकार के सिद्धांत या रैखिक तर्क, हम न केवल इस बात की परवाह करते हैं कि क्या सूत्र सिद्ध हो सकते हैं, बल्कि यह भी कि उनके प्रमाण क्या हैं। एक सिद्ध सूत्र के कई प्रमाण हो सकते हैं और एक रचनात्मक तर्क उन्हें अलग रखना चाहता है। तो, एक रचनात्मक तर्क के लिए एक शब्दार्थ में न केवल एक सूत्र सत्य है, बल्कि इसकी सत्यता के लिए "प्रमाण" ("सबूत") की कुछ अमूर्त अर्थ धारणा भी निर्दिष्ट करना शामिल है। अब्रामस्की और सहयोगियों ने "पूर्ण पूर्णता" शब्द का अर्थ यह बताया कि तर्क में प्रमाण मॉडल में सभी अर्थ प्रमाणों को व्यक्त कर सकते हैं। तो, "पूर्ण" यहां साक्ष्यों को संदर्भित करता है। एक "पूर्ण" तर्क वह सब कुछ साबित कर सकता है जिसकी उसे आवश्यकता है। एक "पूरी तरह से पूर्ण" तर्क के पास सभी सबूत हैं जो उसके पास होने की आवश्यकता है। तो "पूर्ण पूर्णता" का अर्थ है "रचनात्मक पूर्णता" या "प्रमाण पूर्णता"। इसका पूरे अमूर्तन से कोई लेना-देना नहीं है।
पूर्ण अमूर्त : "पर्याप्त और पूरी तरह से अमूर्त" एक संपत्ति है जिसे आप प्रोग्रामिंग भाषा के शब्दार्थ मॉडल के लिए चाहते हैं। (पहला अंतर नोट करें: अब हम सिमेंटिक मॉडल के गुणों से निपट रहे हैं, भाषा के गुणों को नहीं!) पर्याप्तता का अर्थ है कि, जब भी दो शब्दों का अर्थ सिमेंटिक मॉडल में समान होता है, वे प्रोग्रामिंग भाषा में अवलोकन के समान होते हैं (निष्पादन की कुछ धारणा के संबंध में)। पूर्ण अमूर्तता का अर्थ है, यदि दो शब्द अवलोकन रूप से समतुल्य हैं, तो शब्दार्थ मॉडल में उनका समान अर्थ है। ये विचार ध्वनि और पूर्णता से संबंधित हो सकते हैं, लेकिन कुछ हद तक विरोधाभासी तरीके से। यदि हम एक प्रोग्रामिंग भाषा के शब्दार्थ मॉडल को "तर्कशास्त्र" या "प्रमाण विधि" के रूप में मानते हैं, जो कि अवलोकन संबंधी तुल्यता के बारे में बात करने के लिए है, तो पर्याप्तता का अर्थ है कि यह प्रमाण विधि ध्वनि है; पूर्ण अमूर्तता का अर्थ है कि यह प्रमाण विधि पूर्ण है। "पूर्ण पूर्णता" की कोई धारणा नहीं हैप्रमाण विधि। (लेकिन, ऐसा काम सैद्धांतिक रूप से संभव है, और इन दिनों में से कोई एक ऐसा कर सकता है।)
आपके मामले में, आप शब्दार्थ मॉडल के बजाय अनुवाद में रुचि रखते हैं। निम्नानुसार अनुवादों से निपटने के लिए पर्याप्तता और पूर्ण अमूर्तता के गुणों को बढ़ाया जा सकता है। आप लक्ष्य भाषा को अपने "शब्दार्थ मॉडल" के रूप में समझते हैं, अर्थात, एक औपचारिकता जिसे आप किसी भी तरह पूरी तरह से समझते हैं। यदि हां, तो आपके पास इसके लिए समानता की कुछ धारणा है। फिर, हम कहते हैं कि अनुवाद पर्याप्त है अगर, जब भी दो स्रोत कार्यक्रमों के अनुवाद लक्ष्य भाषा में समान होते हैं, तो वे स्रोत भाषा में अवलोकन के बराबर होते हैं। हम कहते हैं कि यह पूरी तरह से अमूर्त है अगर, जब भी दो स्रोत कार्यक्रम स्रोत भाषा में अवलोकन के बराबर होते हैं, तो उनके अनुवाद लक्ष्य भाषा में बराबर होते हैं।
वास्तव में, मुझे ऐसी किसी भी लक्षित भाषा का पता नहीं है, जिसे हम वास्तव में "समझ" सकें। हम सभी जानते हैं कि लक्ष्य भाषा के लिए अवलोकन संबंधी तुल्यता की कुछ अन्य धारणा है। उस स्थिति में, अनुवाद पर्याप्त होता है यदि लक्ष्य भाषा में अनुवादों के अवलोकन संबंधी स्रोत का स्रोत भाषा में अवलोकन संबंधी समानता का अर्थ है।
अनुवाद करता है, तो स्रोत भाषा में शब्दों का अवलोकन तुल्यता लक्ष्य भाषा में अनुवाद का अवलोकन तुल्यता का तात्पर्य पूरी तरह से सार है।
एम ⟹ एन ≅ τ ( एम )
τ(M)≅τ(N)⟹M≅N
: कुछ लेखक "पूरी तरह से अमूर्त अनुवाद" ले इन दोनों गुणों के संयोजन मतलब करने के लिए
एम ≅ एनM≅N⟹τ(M)≅τ(N)
M≅N⟺τ(M)≅τ(N)
एगर एट अल अनुवादों के लिए पूर्णता के विचार को समान रूप से बढ़ाते हुए प्रतीत होते हैं। उनके सेट-अप में, सूत्र प्रकार हैं और प्रमाण शब्द हैं। उनका अनुवाद प्रकारों के साथ-साथ शब्दों का भी अनुवाद करता है। वे अपने अनुवाद को पूरी तरह से पूर्ण कहते हैं यदि टाइप के अनुवाद में केवल वही शब्द हैं जो टाइप ए के मूल शब्दों का अनुवाद करके प्राप्त किए जाते हैं ।
AA
∀N:τ(A).∃M:A.τ(M)=N
अब पूर्णता और पूर्ण अमूर्त के बीच अस्पष्ट कनेक्शन के लिए । यह साबित करना कि शब्दार्थ मॉडल या अनुवाद पूरी तरह से अमूर्त होता है, जिसमें अक्सर कुछ निश्चितता शामिल होती है। ऐसा इसलिए है क्योंकि हमारी भाषाएं आमतौर पर उच्च-क्रम की हैं। इसलिए, यदि शब्दार्थ मॉडल या लक्ष्य भाषा में बहुत अधिक "संदर्भ" हैं, तो यह हमारे शब्दों या अर्थपूर्ण अर्थों को अवांछनीय तरीकों से प्रहार करने और उनकी समानता को खराब करने में सक्षम होगा। "अवांछनीय तरीके" का अर्थ उन तरीकों से है जो प्रोग्रामिंग भाषा स्वयं उन्हें प्रहार नहीं कर सकती है। इसलिए, पूर्ण अमूर्तता प्राप्त करने के लिए, हमें यह सुनिश्चित करने की आवश्यकता है कि सिमेंटिक मॉडल या लक्ष्य भाषा में उपलब्ध "संदर्भ" किसी न किसी रूप में स्रोत भाषा में हैं। ध्यान दें कि यह पूर्ण पूर्णता संपत्ति से संबंधित है।
हम ऐसे गुण क्यों चाहते हैं? इसके पास कुछ भी नहीं हैसंकलक के साथ क्या करना है! हम दावा करना चाहते हैं कि स्रोत भाषा लक्ष्य भाषा में एम्बेड करती है। यदि हम किसी विशेष लक्ष्य भाषा (स्वच्छ, समझने योग्य, किसी तरह मौलिक या ईश्वर प्रदत्त) के रूप में खुश हैं, तो, यदि स्रोत भाषा इसमें एम्बेड होती है, तो हम दावा कर सकते हैं कि स्रोत भाषा में कुछ भी नया नहीं है। यह लक्षित भाषा का सिर्फ एक टुकड़ा है जिसे हम जानते हैं और प्यार करते हैं। यह सिंटैक्टिक शुगर है। इसलिए, लोगों द्वारा विशेष रूप से लक्षित भाषाओं को स्थापित करने के लिए पूरी तरह से सारगर्भित अनुवाद दिए गए हैं। वे कभी-कभी ऐसे लोगों द्वारा भी दिए जाते हैं जिनके पास निपटने के लिए एक बड़ी या जटिल भाषा है। इसलिए, इसके लिए सीधे शब्दार्थ को परिभाषित करने के बजाय, वे इसे कुछ मूल भाषा में अनुवाद करते हैं और फिर मूल भाषा को शब्दार्थ देते हैं। उदाहरण के लिए, हास्केल रिपोर्ट ऐसा करती है। लेकिन इन अनुवादों का पूरा अमूर्तन शायद ही कभी साबित हुआ हो क्योंकि स्रोत भाषाएं बड़ी और जटिल हैं। लोग इसे विश्वास में लेते हैं कि अनुवाद अच्छा है।
एक बार फिर, यह संकलक के साथ कुछ नहीं करना है। कंपाइलर शायद ही कभी पर्याप्त या पूरी तरह से अमूर्त होते हैं। और, वे होने की जरूरत नहीं है! कंपाइलर को सभी कार्यक्रमों के निष्पादन व्यवहार को संरक्षित करने की आवश्यकता होती है। एक संकलक की लक्ष्य भाषा आम तौर पर बहुत बड़ी होती है, जिसका अर्थ है कि इसमें बहुत सारे संदर्भ हैं जो समानता को गड़बड़ कर सकते हैं। इसलिए, संकलित होने पर स्रोत भाषा में समतुल्य कार्यक्रम लगभग कभी भी समतुल्य नहीं होते हैं।