एक सरल पुनर्लेखन प्रणाली के लिए संगम प्रमाण


14

मान लें कि हमारे पास एक सरल भाषा है जिसमें शब्द शामिल हैं:

  • true
  • false
  • यदि शब्द हैं तो i f हैt1,t2,t3ift1thent2elset3

अब निम्नलिखित तार्किक मूल्यांकन नियमों को मानें:

iftruethent2elset3t2[E-IfTrue]iffalsethent2elset3t3[E-IfFalse]t1t1ift1thent2elset3ift1thent2elset3[E-If]

मान लीजिए कि हम निम्नलिखित फंकी नियम भी जोड़ते हैं:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

दिए गए मूल्यांकन नियमों के साथ इस सरल भाषा के लिए मैं निम्नलिखित सिद्ध करना चाहता हूं:

प्रमेय: यदि और r t है, तो कुछ शब्द यू ऐसे हैrsrtu और t usutu

मैं की संरचना पर प्रेरण द्वारा इसे साबित कर रहा हूं । यहाँ मेरा सबूत है अब तक, यह सब अच्छी तरह से काम किया है, लेकिन मैं बहुत अंतिम मामले में फंस गया हूं। ऐसा लगता है जैसे r की संरचना पर प्रेरण पर्याप्त नहीं है, क्या कोई मेरी मदद कर सकता है?rr

प्रमाण। पर प्रेरण द्वारा , हम उन सभी रूपों को अलग कर देंगे जो r ले सकते हैं:rr

  1. एक निरंतरता है, कुछ भी साबित करने के लिए नहीं है क्योंकि एक सामान्य रूप किसी भी चीज का मूल्यांकन नहीं करता है।r
  2. यदि सही है तो r 2 और r 3 । (a) दोनों व्युत्पन्न E-IfTrue नियम के साथ किए गए थे। इस मामले में s = t , इसलिए साबित करने के लिए कुछ भी नहीं है। (b) एक व्युत्पन्न E-IfTrue नियम के साथ किया गया, दूसरा E-Funny नियम के साथ। मान लें कि R s को E-IfTrue के साथ किया गया था, तो दूसरा मामला समकक्ष साबित हुआ। अब हम जानते हैं कि s = r 2 । हम यह भी जानते हैं कि टी = यदि सच तो आर ' 2 किसी और आर ' 2 (आधार)। अगर हम अब u = चुनते हैंr=r2r3s=trss=r2t=r2 और कहा कि वहाँ कुछ deriviation मौजूद आर 2r3r2r2 , हम मामले का निष्कर्ष है।u=r2
  3. अगर गलत तो r 2 किसी और आर 3 । ऊपर के रूप में समान रूप से सिद्ध।r=r2r3
  4. अगर आर 1 तो r 2 किसी और आर 3 के साथ आर 1 सही या गलत। (ए) दोनों व्युत्पन्न ई-इफ नियम के साथ किए गए थे। अब हम जानते हैं कि रों = अगर आर ' 1 तो r 2 किसी और आर 3 और टी = यदि r " 1 फिर r 2 किसी और आर 3 । हम यह भी जानते हैं कि वहाँ मौजूद व्युत्पन्न r 1 और r 1 हैंr=r1r2r3r1s=r1r2r3t=r1r2r3r1r1 (परिसर)। अब हम कहने के लिए कुछ शब्द मौजूद है प्रेरण hypothese उपयोग कर सकते हैं आर 1 ऐसी है कि आर ' 1आर 1 और आर " 1आर 1 । अब हम कह कर मामले निष्कर्ष निकालना यू = अगर आर 1 तो r 2 किसी और आर 3 और देख कि रों यू और टी यूr1r1r1r1r1r1r1u=r1r2r3sutuE-if नियम द्वारा। (b) एक व्युत्पत्ति E-if नियम और एक E-Funny नियम द्वारा की गई थी।

यह बाद का मामला है, जहां एक व्युत्पत्ति ई-इफ द्वारा की गई थी और एक ई-फनी द्वारा वह मामला है जो मुझे याद आ रहा है ... मैं परिकल्पनाओं का उपयोग करने में सक्षम नहीं हो सकता।

मदद की बहुत सराहना की जाएगी।


@ गिल्स का संपादन बहुत अच्छी तरह से किया गया। मुझे नहीं पता था कि एसई का टीएक्स इंजन सभी के लिए सक्षम था ... :-)
कोडड

क्या मैं गलत हूं या यह अभ्यास पियर्स "प्रकार और प्रोग्रामिंग भाषा" से लिया गया है?
फाबियो एफ।

@FabioF। यह वास्तव में पियर्स के प्रकार और प्रोग्रामिंग लैंग्वेज बुक से है। वह इस बात का प्रमाण प्रदान करता है कि मैं अस्पष्ट हूं, जिस तरह से वह प्रेरण करता है। यही कारण है कि मैंने इसे संरचना पर प्रेरण के माध्यम से खुद को साबित करने की कोशिश की। मैं यह उल्लेख करने के बारे में सोच रहा था कि यह पुस्तक से था, लेकिन मैंने सोचा कि यह अप्रासंगिक होगा। हालांकि, ध्यान दिया!
कॉड

जवाबों:


7

ठीक है, तो आइए इस मामले पर विचार करें कि , s कोE-if नियम लागू करके व्युत्पन्न किया गया हैऔर t को E-Funny नियम लागू करके प्राप्त किया गया है: इसलिए s = i fr=ift1thent2elset3st जहां टी 1टी ' 1 और टी = मैं s=ift1thent2elset3t1t1 जहां टी 2टी ' 2t=ift1thent2elset3t2t2

The u we're looking for is u=ift1thent2elset3. su follows from rule E-Funny and tu follows from rule E-If.


Beat me to it. Nice job.
Patrick87

Gosh, I was really looking too far... Thanks!
codd

You mixed them up though, su follows from E-Funny. Or am I seeing something wrong?
codd

@Jeroen You're right - I mixed them up. Fixed now.
sepp2k

8

A little terminology may help if you want to look this up: these rules are rewriting rules, they have nothing to do with type systems¹. The property you're trying to prove is called confluence; more specifically, it's strong confluence: if a term can be reduced in different ways at one step, they can converge back at the next step. In general, confluence allows there to be any number of steps and not just one: if rs and rt then there is u such that su and tu — if a term can be reduced in different ways, no matter how far they've diverged, they can eventually converge back.

The best way to prove a property of such inductively defined rewriting rules is by induction over the structure of the derivation of the reduction, rather than the structure of the reduced term. Here, either works, because the rules follow the structure of the left-hand term, but reasoning on the rules is simpler. Instead of diving into the term, you take all pairs of rules, and see what term could be a left-hand side for both. In this example, you will get the same cases in the end, but a bit faster.

In the case that gives you trouble, one side reduces the “if” part and the other side reduces the “then” part. There's no overlap between the two parts that change (t1 in [E-If], t2 in [E-IfFunny]), and there's no constraint on t2 in [E-If] or on t1 in [E-IfFunny]. So when you have a term to which both rules apply — which must be of the form ifr1thenr2elser3, you can choose to apply the rules in either order:

ifr1thenr2elser3[E-If][E-IfFunny]ifr1thenr2elser3ifr1thenr2elser3[E-IfFunny][E-If]ifr1thenr2elser3

¹ You'll sometimes see types and rewriting together, but at their core they're orthogonal concepts.

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