Dowód konfluencji dla prostego systemu przepisywania

14

Załóżmy, że mamy prosty język, który składa się z terminów:

  • true
  • false
  • jeśli są warunkami, to podobnie jest zi ft1,t2,t3ift1thent2elset3

Załóżmy teraz następujące logiczne reguły oceny:

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

Załóżmy, że dodajemy również następującą funky zasadę:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

Dla tego prostego języka z podanymi zasadami oceny chcę udowodnić, co następuje:

Twierdzenie: Jeśli i to istnieje pewien termin taki, że i .r t u s u t ursrtusutu

Udowadniam to przez indukcję na strukturze . Oto mój dowód, jak dotąd, wszystko poszło dobrze, ale utknąłem w ostatniej sprawie. Wydaje się, że indukcja struktury nie jest wystarczająca, czy ktoś może mi pomóc?rrr

Dowód. Indukując na , rozdzielimy wszystkie formy, które może przyjąć:rrr

  1. r jest stałą, nic do udowodnienia, ponieważ normalna postać niczego nie ocenia.
  2. r= jeśli prawda, to inaczej . (a) oba pochodne wykonano zgodnie z zasadą E-IfTrue. W tym przypadku , więc nie ma nic do udowodnienia. (b) jedna pochodna została wykonana z zasadą E-IfTrue, a druga z zasadą E-Funny. Załóżmy, że zostało wykonane za pomocą E-IfTrue, drugi przypadek jest równoważnie udowodniony. Wiemy teraz, że . Wiemy również, że jeśli prawda, to inaczej i że istnieje pewna pochodna (przesłanka). Jeśli teraz wybierzemy , zakończymy sprawę.R 3 s = t r y y = R 2 , T = R ' 2 R 3 R 2R ' 2 U = R ' 2r2r3s=trss=r2t=r2r3r2r2u=r2
  3. r= jeśli fałsz, to inaczej . Równie udowodnione jak wyżej.r 3r2r3
  4. r= jeśli to inaczej z true lub false. (a) oba wyprowadzenia wykonano zgodnie z zasadą E-If. Teraz wiemy, że jeśli następnie inny i jeśli następnie inny . Wiemy również, że istnieją i (przesłanki). Możemy teraz użyć hipotezy indukcyjnej, aby powiedzieć, że istnieje jakiś termin taki, żeR 2 R 3 R 1y = r ' 1 R 2 R 3 t = R " 1 R 2 R 3 R 1R ' 1 R 1R " 1 R 1 r " 1R 1r1r2r3r1s=r1r2r3t=r1r2r3r1r1r1r1r1r1r1i . Mamy teraz zakończyć sprawę mówiąc, jeśli następnie inny i zauważyć, że i przez E-IF reguły. (b) jedno wyprowadzenie zostało wykonane według zasady E-If, a drugie według zasady E-Funny.r1r1u=r1r2r3sutu

Ten drugi przypadek, w którym jedno wyprowadzenie zostało wykonane przez E-If, a drugie przez E-Funny, to przypadek, którego mi brakuje ... Nie wydaje mi się, że mogę użyć hipotez.

Pomoc będzie mile widziana.

codd
źródło
@Gilles bardzo dobrze zrobione z edycją. Nie wiedziałem, że silnik TeX SE był w stanie to wszystko ... :-)
codd
Czy się mylę, czy ćwiczenie zostało zaczerpnięte z „Typów i języków programowania” Pierce'a?
Fabio F.,
@FabioF. Rzeczywiście pochodzi z książki Pierce's Types and Programming Languages. Dostarcza dowód, który wydaje mi się niejasny, ze względu na sposób, w jaki wykonuje indukcję. Dlatego sam próbowałem to udowodnić poprzez indukcję konstrukcji. Zastanawiałem się, czy nie wspomnieć, że pochodzi z książki, ale pomyślałem, że byłoby to raczej nieistotne. Jednak dobrze zauważony!
codd

Odpowiedzi:

7

Okej, więc rozważmy przypadek, że , wyprowadzono stosując regułę E-If a jest uzyskany przez zastosowanie zasady E-Funny SO gdzie i gdzie .r=ift1thent2elset3sts=ift1thent2elset3t1t1t=ift1thent2elset3t2t2

nas szukasz . wynika z reguły E-Funny i wynika z reguły E-If.uu=ift1thent2elset3sutu

sepp2k
źródło
Pokonaj mnie do tego. Dobra robota.
Patrick87
Boże, naprawdę szukałem za daleko ... Dzięki!
codd
Ci mieszać je jednak, wynika z e-Zabawne. Czy widzę coś nie tak? su
codd
@Jeroen Masz rację - wymieszałem je. Naprawiono teraz.
sepp2k
8

Trochę terminologii może pomóc, jeśli chcesz to sprawdzić: te reguły przepisują reguły , nie mają one nic wspólnego z systemami typów¹. Właściwość, którą próbujesz udowodnić, nazywa się zbieżnością ; a dokładniej, jest to silne zbieżność : jeśli termin można skrócić na różne sposoby na jednym etapie, mogą one zbiegać się na następnym etapie. W ogólności, nie pozwala na zbiegu być dowolną liczbę etapów, a nie tylko: jeżeli i R * t następnie jest U tak, że s * u i t * Ursrtusutu - jeśli termin może zostać skrócony na różne sposoby, bez względu na to, jak daleko się rozeszli, mogą w końcu z powrotem się zjednoczyć.

Najlepszym sposobem na udowodnienie właściwości takich indukcyjnie określonych reguł przepisywania jest indukcja nad strukturą wyprowadzenia redukcji, a nie przez strukturę skróconego terminu. Tutaj albo działa, ponieważ reguły są zgodne ze strukturą terminu lewostronnego, ale rozumowanie reguł jest prostsze. Zamiast zagłębiać się w ten termin, bierzesz wszystkie pary zasad i widzisz, który termin może być lewą stroną dla obu. W tym przykładzie otrzymasz te same przypadki na końcu, ale nieco szybciej.

W przypadku, który powoduje problemy, jedna strona zmniejsza część „if”, a druga strona zmniejsza część „wtedy”. Nie ma nakładania się między dwiema zmieniającymi się częściami ( w [E-If], t 2 w [E-IfFunny]), i nie ma ograniczenia na t 2 w [E-If] lub t 1 w [E- IfFunny]. Więc jeśli masz termin, do którego odnoszą się obie zasady - który musi mieć formę i ft1t2t2t1 , możesz zastosować reguły w dowolnej kolejności:ifr1thenr2elser3

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

¹ Czasami zobaczysz typy i przepisywanie razem, ale w ich istocie są to koncepcje ortogonalne.

Gilles „SO- przestań być zły”
źródło