จุดบรรจบกันของระบบการเขียนใหม่ที่เรียบง่าย


14

สมมติว่าเรามีภาษาง่าย ๆ ที่ประกอบด้วยข้อกำหนด:

  • true
  • false
  • ถ้าเป็นเทอมดังนั้นฉันคือft1,t2,t3ift1thent2elset3

ตอนนี้สมมติกฎการประเมินผลเชิงตรรกะดังต่อไปนี้:

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

สมมติว่าเราเพิ่มกฎขี้ขลาดต่อไปนี้:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

สำหรับภาษาง่าย ๆ นี้ที่มีกฎการประเมินที่กำหนดฉันต้องการพิสูจน์สิ่งต่อไปนี้:

ทฤษฎีบท: ถ้าและR เสื้อแล้วมีคำบางยูดังกล่าวว่าs UและT ยูrsrtusutu

ฉันกำลังพิสูจน์นี้โดยการเหนี่ยวนำในโครงสร้างของRนี่คือหลักฐานของฉันจนถึงตอนนี้มันใช้งานได้ดี แต่ฉันติดอยู่ในกรณีสุดท้าย ดูเหมือนว่าอุปนัยเกี่ยวกับโครงสร้างของ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 เรารู้ด้วยว่า t =ถ้าจริงแล้ว r 2อย่างอื่น r 3และมีการดัดแปลง r 2r=r2r3s=trss=r2t=r2r3 (หลักฐาน) ถ้าเราเลือกr2r2เราจะสรุปคดีu=r2
  3. ถ้าเท็จแล้ว r 2อื่น R 3 พิสูจน์แล้วอย่างเท่าเทียมกันดังกล่าวข้างต้นr=r2r3
  4. r= if r1 then r2 else r3 with r1 true or false. (a) both deriviations were done with the E-If rule. We now know that s= if r1 then r2 else r3 and t= if r1 then r2 else r3. We also know that there exists deriviations r1r1 and r1r1 (the premises). We can now use the induction hypothese to say that there exists some term r1 such that r1r1 and r1r1. We now conclude the case by saying u= if r1 then r2 else r3 and noticing that su and tu 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

Okay, so let's consider the case that r=ift1thent2elset3, s has been derived by applying the E-If rule and t has been derived by applying the E-Funny rule: So s=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.