একটি সহজ পুনর্লিখনের সিস্টেমের জন্য সংগম প্রমাণ


14

ধরুন আমাদের কাছে একটি সহজ ভাষা রয়েছে যা শর্তাদি নিয়ে গঠিত:

  • true
  • false
  • যদি পদ তারপর তাই আমি t1,t2,t3ift1thent2elset3

এখন নিম্নলিখিত যৌক্তিক মূল্যায়ন বিধি অনুমান:

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

ধরা যাক আমরা নীচেও মজাদার নিয়ম যুক্ত করেছি:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

প্রদত্ত মূল্যায়নের বিধিগুলি সহ এই সাধারণ ভাষার জন্য আমি নিম্নলিখিতটি প্রমাণ করতে চাই:

উপপাদ্য: যদি এবং r t হয় তবে কিছু শব্দ রয়েছে যা আপনি যেমন s u এবং t ursrtusutu

আমি কাঠামো আনয়ন দ্বারা এই প্রতিপাদন করছি । এখন পর্যন্ত আমার প্রমাণটি এখানে রয়েছে, এটি সমস্ত ভালভাবে কাজ করেছিল, তবে আমি একেবারে শেষের ক্ষেত্রে আটকে আছি। দেখে মনে হচ্ছে যে আর এর কাঠামোর উপর অন্তর্ভুক্তি যথেষ্ট নয়, কেউ কি আমাকে সাহায্য করতে পারেন?rr

প্রুফ। আনয়ন করে , আমরা সব ধরনের যে পৃথক হবে নিতে পারেন:rr

  1. একটি কনস্ট্যান্ট, প্রমাণ করার মতো কিছুই নেই যেহেতু সাধারণ ফর্মটি কোনও কিছুর সাথে মূল্যায়ন করে না।r
  2. যদি সত্য হয় তবে r 2 অন্য আর 3 । (ক) উভয় উপকরণ ই-ইফট্রু নিয়ম দিয়ে সম্পন্ন হয়েছিল। এই ক্ষেত্রে s = t , তাই প্রমাণ করার মতো কিছুই নেই। (খ) একটি ডেরিভিয়েশন ই-ইফট্রু নিয়ম দিয়ে করা হয়েছিল, অন্যটি ই-ফানি নিয়ম দিয়ে। ধরুন r গুলি ই-ইফট্রু দিয়ে করা হয়েছিল, অন্য ক্ষেত্রে সমানভাবে প্রমাণিত। আমরা এখন জানি যে এস = আর 2 । আমরা এটিও জানি যে টি = যদি সত্য হয় তবে r 2 অন্য আর 3 এবং এর মধ্যে কিছু বিবর্তন রয়েছে r 2r=r2r3s=trss=r2t=r2r3 (ভিত্তি) যদি আমরা এখনu=r2 বেছে নিইr2r2u=r2 শেষ করি।
  3. মিথ্যা হলে r 2 অন্য আর 3r=r2r3 । সমানভাবে উপরে হিসাবে প্রমাণিত।
  4. যদি r 1 হয় তবে r 2 অন্য আর 3 এর সাথে r 1 সত্য বা মিথ্যা। (ক) উভয় ডেরাইভেশনগুলি ই-আইফুলের মাধ্যমে করা হয়েছিল। আমরা এখন জানি যে s = যদি r 1 হয় তবে r 2 অন্য r 3 এবং t = যদি r 1 হয় তবে r 2 অন্য আর 3 । আমরা এও জানি অস্তিত্ব আছে যে deriviations r 1' 1r=r1r2r3r1s=r1r2r3t=r1r2r3r1r1এবং (প্রাঙ্গণ) আমরা এখন বলতে কিছু শব্দ অস্তিত্ব আছে যে আনয়ন hypothese ব্যবহার করতে পারেন 1 যেমন যে ' 11 এবং " 11 । আমরা এখন এই বলে ক্ষেত্রে এই উপসংহারে তোমার দর্শন লগ করা = যদি 1 তারপর r 2 অন্য 3 এবং ঠাহর যে গুলি তোমার দর্শন লগ করা এবং T তোমার দর্শন লগ করাr1r1r1r1r1r1r1u=r1r2r3sutu by the E-If rule. (b) one derivation was done by the E-If rule and one by the E-Funny rule.

This latter case, where one derivation was done by E-If and one by E-Funny is the case I am missing... I can't seem to be able to use the hypotheses.

Help will be much appreciated.


@Gilles extremely well done with the editing. I did not know that SE's TeX engine was capable of all that... :-)
codd

Am I wrong or this exercise is taken from Pierce "Types and Programming Languages"?
Fabio F.

@FabioF. It is indeed from Pierce's Types and Programming Languages book. He provides a proof that I find unclear, because of the way he performs the induction. That's why I tried to prove it myself via induction on the structure. I was thinking of mentioning that it was from the book, but I thought that would be rather irrelevant. Well noticed, however!
codd

উত্তর:


7

r=ift1thent2elset3sts=ift1thent2elset3 where t1t1 and t=ift1thent2elset3 where t2t2.

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.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.