परिवर्तन-परिरक्षक के रूप में फ़्रेम नियम?


18

एक फ्रेम नियम , जैसे नीचे दिया गया है, उस विचार को पकड़ता है, cजिसमें पूर्वनिर्धारण के साथ एक प्रोग्राम दिया गया है, pजो चलने से पहले होता है और qबाद में होने वाला पोस्टकंडेशन , कुछ असंतुष्ट स्थिति rको cचलाने से पहले और बाद में दोनों को पकड़ना चाहिए । ( *संयोजक को आवश्यकता है कि इसके तर्क असहमतिपूर्ण हों।) अक्सर, पूर्व और पोस्टकंडिशन एक ढेर के राज्य होते हैं, और cएक प्रभावशाली कार्यक्रम है जो किसी तरह से ढेर को संशोधित करता है।

    {p} c {q}
----------------- (where no free variable in r is modified by c)
{p * r} c {q * r}

फ्रेम नियम की चर्चा जो मैंने देखी है वह हमेशा इस बात पर ध्यान केंद्रित करने के लिए होती है कि कैसे ढेर का अप्रिय हिस्सा r, संरक्षित है। यह "स्थानीय तर्क" को सक्षम करता है: जब उस प्रभाव के बारे में तर्क cदिया जाता है, तो हम rढेर के हिस्से की अवहेलना कर सकते हैं और केवल उस हिस्से से खुद को चिंतित कर सकते हैं जो वास्तव में बदलता है। लेकिन इसे देखने का एक और तरीका यह है कि इससे होने वाले परिवर्तनpq को संरक्षित किया जाता है, भले ही rवह अब वहां बैठा हो। दूसरे शब्दों में, यह महत्वपूर्ण है कि हम कुछ और के {q * r}बजाय पोस्टकंडिशन के साथ समाप्त होते हैं ।{q' * r}q'

इसलिए, मेरा प्रश्न यह है कि क्या फ्रेम नियम का कोई उपचार है जो चर्चा करता है या परिरक्षण-परिवर्तन- pसे- का उपयोग करता qहै।


मेरे अपने प्रश्न का एक उत्तर इस पत्र में है: software.imdea.org/~gotsman/papers/interproc-sas06.pdf , वाक्य में (जोर मेरा) "यदि P सुनिश्चित करता है कि सी के पदचिह्न आवंटित किए गए हैं, तो फ़्रेम के अनुसार, निष्पादित करना C अतिरिक्त मेमोरी R की उपस्थिति में समान व्यवहार करता है, और C अतिरिक्त मेमोरी को स्पर्श नहीं करता है। " यह "समान व्यवहार में परिणाम" है कि मैं किसी को इंगित करने के लिए देख रहा था, इसके अलावा सिर्फ "सी अतिरिक्त मेमोरी को नहीं छूता है"। (लिंक के लिए @kaosjester को धन्यवाद।)
— लिंडसे कुपर

1
यदि आप फ्रेमवर्क नियम और सेपरेशन लॉजिक के अन्य नियमों के ध्वनि प्रमाणों के माध्यम से पढ़ते हैं, तो आपको पता चलेगा कि वे वास्तव में वही कर रहे हैं जो आप कर रहे हैं, अर्थात, वे इस बारे में बात करते हैं कि से क्यू में परिवर्तन कैसे संरक्षित है। वहाँ उल्लिखित इलाके और फ़्रेम गुणों पर ध्यान दें। pq
— उदय रेड्डी

जवाबों:


11

लेकिन यह कोई परिवर्तन-से- qसंपत्ति वास्तव में नहीं है!

विचार करें {emp} x := alloc(0) {x |-> 0}। अब, अगर मैं फ्रेम करता हूं, तो y |-> 3मुझे मिलता है

{y |-> 3} x := alloc(0) {x |-> 0 * y |-> 3}

लेकिन, परिणाम के नियम से, मैं पोस्टकंडिशन को बदल सकता था

{y |-> 3} x := alloc(0) {(x |-> 0 /\ x != y) * y |-> 3}

इसे और अधिक ठोस बनाने के लिए, मान लीजिए yकि संख्या है 37। जब मैं आवंटन कमांड को पूरी तरह से खाली हीप में चलाता हूं, तो संभव है कि मैं पते का आवंटन समाप्त कर दूंगा 37, ताकि x = 37। लेकिन, अगर मैं इसके बजाय पते पर एक एकल सेल वाले ढेर से शुरू करता हूं, तो y = 37यह परिणाम संभव नहीं है! पूर्व शर्त के लिए एक फ्रेम जोड़ना पोस्टकॉन्डिशन में कुछ नोंडेटर्मिनिज़्म की संभावना है।

पेपर "स्थानीय कार्रवाई और अमूर्त अलगाव तर्क" (कैल्केग्नो, ओ'हर्न, और यांग) सभी एक गहरे, अर्थ के परिप्रेक्ष्य से फ्रेम नियम को समझने के बारे में है। पेपर की मुख्य परिभाषा "एक्शन" के लिए स्थानीयता है , जहां एक एक्शन (प्रोग्राम का सिमेंटिक रिप्रेजेंटेशन) होता है। स्थानीयता कहती है कि जब आप कुछ फ़्रेम हीप में जोड़ते हैं, तो मूल पोस्टकॉन्डिशन को परिवर्तित करने का एकमात्र तरीका कुछ नोंडेटर्मिनिज़्म को ऊपर बताकर प्रून करना है। और, वास्तव में, छंटाई केवल आवंटन के कारण उत्पन्न होती है।


उदाहरण के लिए और संदर्भ के लिए धन्यवाद! आपका उदाहरण समझ में आता है। क्या यह कहना उचित है, हालांकि, यह qकेवल " qऔर भी ..." में बदल सकता है ? और, इसके अलावा, यदि आबंटन केवल वही चीज है जो उत्तर-पूर्व में नोंदेर्तिवाद को जन्म दे सकती है (जो अपने आप में एक अच्छा परिणाम है), तो, अगर वहाँ पोस्ट-कॉन्डिशन का कुछ हिस्सा है जो स्थान-स्वतंत्र है, तो वह पोस्टकंडिशन का हिस्सा है वही रहने की गारंटी? क्या हम कह सकते हैं कि पोस्टकॉन्डिशन अल्फा-स्थानों के नामकरण के समान है? (मेरे मन में एक उदाहरण है, लेकिन शायद यह ईमेल के माध्यम से बेहतर बताया गया है।)
— लिंडसे कुपर

1
हां, qकेवल " qऔर भी ..." को बदल सकते हैं, दूसरे शब्दों में, पोस्टकंडिशन केवल मजबूत हो सकता है : यह मूल पोस्टकंडिशन का अर्थ होगा। यह क्रियाओं के लिए स्थानीयता की परिभाषा का हिस्सा है। हालांकि, यह सच नहीं है, कि पोस्टकंडिशन में बदलाव केवल नाम बदलने से जुड़ा हुआ है। मेरे द्वारा दिए गए उदाहरण में, जो अतिरिक्त तथ्य है xऔर yजो विशिष्ट हैं, वह उस विशेष पते के बावजूद सत्य है, जिसके लिए चुना गया है y। उदाहरण आवंटन की ताजगी को दर्शाता है, जो नाम बदलने के तहत अपरिवर्तनीय है।
— एरॉन टरॉन

11

सबसे पहले, आपके प्रश्न के बयान में एक छोटी सी गलतफहमी है, जो कि हारून को भी उसके उत्तर में मिल रही थी। जुदाई लॉजिक में विधेयकों को ढेर के सेट (या समतुल्य रूप से, ढेर पर भविष्यवाणी), और अलग होने वाले संयोजन के रूप में परिभाषित किया गया है:P∗Q

P∗R≜{h1⋅h2|h1∈P∧h2∈R∧dom(h1)∩dom(h2)=∅}

तो फ्रेम नियम में

{P}c{Q}{P∗R}c{Q∗R}

(और पी और क्यू ) विशिष्ट ढेर के बारे में बात नहीं कर रहे हैं --- वेहीप्स केगुणहैं(चूंकि सबसेट और विधेय बराबर हैं)। यह समझने का सबसे अच्छा तरीका है कि एक होरे ट्रिपल के धारण के लिए इसका क्या अर्थ है, इसकी परिभाषा को देखकर:RPQ

{P}c{Q}≜∀h1∈P.∀h′∈Heaps.t.h′#h1.∃h2∈Q.⟨h1⋅h′;c⟩↦∗⟨h2⋅h′;skip⟩

ch1Ph2Qh′ h2h′ PQ

यह बहुत कठिन नहीं है, लेकिन फिर भी काम करने के लायक है, यह देखने के लिए कि होरे ट्रिपल की यह परिभाषा कैसे निहित है कि फ्रेम नियम क्या है। जैसा कि आप ध्यान दें, यह एक प्रकार का "संरक्षण-परिवर्तन" संपत्ति है, और समवर्ती जुदाई तर्क में समानांतर रचना नियम के बयान में इसकी विशेष रूप से विशद अभिव्यक्ति है:

{P1}c1{Q1}{P2}c2{Q2}{P1∗P2}c1||c2{Q1∗Q2}

c1c2

पेपर में होरे एट अल, ऑन लोकलिटी और समवर्ती प्रक्रियाओं के लिए विनिमय कानून द्वारा इस पर चर्चा की गई है , जहां वे दिखाते हैं कि कैसे कार्यक्रमों और अभिकथनों का विलय किया गया बीजगणित दिया जाए।


होरे तिकड़ी के लिए परिभाषा गलत दिखती है: यह कहना चाहिए कि निष्पादन में गलती नहीं है, इसे गैर-समाप्ति के लिए अनुमति देनी चाहिए, यह संभवतः उन मॉडल को नहीं छोड़ना चाहिए जिनके पास सुरक्षा एकरसता नहीं है। (लेकिन, हां, मैं मानता हूं कि आपके द्वारा बताए गए कारणों के लिए "परिरक्षण-परिवर्तन" के बारे में बात करना पूरी तरह से उचित है।)
— रादू ग्रिगोर

3
(1) मैंने कुल शुद्धता परीक्षणों के लिए शब्दार्थ दिए हैं, और इसलिए यह दावा करता है कि कमांड सुरक्षित रूप से पूरा होता है - मुझे लगता है कि कुल शुद्धता पूर्व और बाद की स्थितियों के forall / present चरित्र को समझाती है जो देखने में आसान है। (२) त्रिगुणों के इस शब्दार्थ को वास्तव में उन भाषाओं को संभालने के लिए (बिरकेडल और यांग द्वारा IIRC) का आविष्कार किया गया था, जिन्हें त्रिभाषा के अर्थ में बनाकर, भाषा शब्दार्थ में सुरक्षा एकरसता नहीं है। परिणामस्वरूप, आपके पास गैर-मोनोटोनिक निर्माण हो सकते हैं (उदाहरण के लिए, भाषा में ढेर कितना बड़ा है, इस बारे में प्रश्न), जबकि होरे तर्क के लिए अभी भी फ्रेम नियम है।
— नील कृष्णस्वामी

c

1
धन्यवाद, नील! आप सही हैं, मैं विशिष्ट ढेर के साथ गुण पी और क्यू को भ्रमित कर रहा था। इसलिए, अपनी टिप्पणी को सम्‍मिलित करने के लिए: Q संरक्षित है, लेकिन अंत में आपको जो विशेष ढेर मिलता है, वह पहले से मिल रहे एक अलग Q- संतोषजनक ढेर हो सकता है । हाँ?
— लिंडसे कुपर

1
@RaduGRIGore: हाँ, मैं मान रहा था कि भाषा निर्धारक थी, और जब हम संगामिति जोड़ते हैं तो यह धारणा विफल हो जाएगी। अच्छा पकड़ा!
— नील कृष्णस्वामी

2

जबकि 100% संबंधित नहीं है, यह अनुबंध की बेरोजगारी का स्वाद है।

अगर हम {p} को c पर एक पूर्व शर्त के रूप में और c पर {q} पूर्व स्थिति के रूप में सोचते हैं, तो फ्रेम नियम का यह विचार सुनिश्चित करेगा कि गणना के हर संदर्भ में पूर्व और बाद की स्थिति पकड़ में आए, नहीं सरल मामला जहां और कुछ भी मौजूद नहीं है।

उस ने कहा, मैं यह नहीं कह सकता कि मैंने अपने द्वारा पढ़े गए दर्जनों अनुबंध पत्रों में इस तरह का फ्रेम नियम प्रस्तुत किया है। हालांकि, यह निश्चित रूप से एक महान विचार है, और इस तरह के बदलाव की आवश्यकता होती है, जो बेरोजगार अनुबंधों की एक उचित, ठोस समझ विकसित करने की दिशा में बहुत कुछ कर सकता है ।


टिप्पणी के लिए धन्यवाद। हम्म, दिलचस्प - मुझे आश्चर्य है कि अगर कोई और इसे पढ़ता है तो अनुबंध पत्रों के बारे में पता चलता है जो राज्य के गुण हैं।
— लिंडसे कुपर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.