Злиття бета-розширення


10

Нехай - -редукція у -calculus. Визначити -разложеніі по .→ β→β β βλ λβ β← β ←βt ′ ← β t⟺t → β t ′t′←βt⟺t→βt′

Чи ? Іншими словами, чи маємо ми, що для будь-якого , якщо l \ to_ \ beta ^ * d \ leftarrow_ \ beta ^ * r , то існує u таке, що l \ leftarrow_ \ beta ^ * u \ to_ \ бета ^ * г ?← β←β l , d , r l,d,rl → ∗ β d ← ∗ β r l→∗βd←∗βru ul ← ∗ β u → ∗ β rl←∗βu→∗βr

Ключові слова: вгору впадання, перевернуте властивість CR


Я почав з перегляду слабшого властивості: локального злиття (тобто якщо l → β d ← β rl→βd←βr , то l ← ∗ β u → ∗ β rl←∗βu→∗βr ). Навіть якби це було правдою, це не означало б злиття, оскільки ββ розширення не припиняється, але я думав, що це допоможе мені зрозуміти перешкоди.

(Вгору) У випадку, коли обидва скорочення знаходяться на верхньому рівні, гіпотеза стає ( Λ х 1 . Б 1 ) 1 → B 1 [ 1 / х 1 ] = Ь 2 [ 2 / х 2 ] ← ( λ х 2 . Б 2 ) 2(λx1.b1)a1→b1[a1/x1]=b2[a2/x2]←(λx2.b2)a2 . До αα -перейменування можна вважати, що x 1 ≠ x 2x1≠x2 , і що ні х 1x1 ні х 2x2 є вільними в цих умовах.

(Киньте) Якщо х 1x1 не є вільним у б 1b1 , у нас b 1 = b 2 [ a 2 / x 2 ]b1=b2[a2/x2] і тому маємо ( Λ х 1 . Б 1 ) 1 = ( λ х 1 . Б 2 [ 2 / х 2 ] ) 1 ← ( λ х 1 . ( Λ х 2 . Б 2 ) 2 ) 1 → ( λ х 2 . б 2 ) 2(λx1.b1)a1=(λx1.b2[a2/x2])a1←(λx1.(λx2.b2)a2)a1→(λx2.b2)a2 .

Наївним доказом за допомогою індукції (на б 1b1 та b 2b2 ) для справи (вгорі) було б таке:

  • Якщо б 1b1 є змінною y 1y1 ,

    • Якщо , гіпотеза стає , і у нас справді є .у 1 = х 1y1=x1 ( Л х 1 . х 1 ) а 1 → A 1 = B 2 [ а 2 / х 2 ] ← ( λ х 2 . б 2 ) а 2(λx1.x1)a1→a1=b2[a2/x2]←(λx2.b2)a2 ( Л х 1 . х 1 ) а 1 = ( λ х 1 . х 1 ) ( б 2[ 2 / х 2 ] ) ← ( λ х 1 . Х 1 ) ( ( λ х 2 . Б 2 ) 2 ) → ( λ х 2 . Б 2 ) 2(λx1.x1)a1=(λx1.x1)(b2[a2/x2])←(λx1.x1)((λx2.b2)a2)→(λx2.b2)a2

    • Якщо , то ми можемо просто використовувати (Throw).y 1 ≠ x 1y1≠x1

  • Ті ж докази, що і - змінна.b 2b2

  • Для і гіпотеза стає і гіпотеза індукції дає таку, що що означає що . На жаль, у нас немає . (Це змушує мене думати про -reduction.)b 1 = λ y . c 1 b1=λy.c1b 2 = λ y . з 2b2=λy.c2 ( А , х 1 . А , у . з 1 ) 1 → А , у . c 1 [ a 1 / x 1 ] = λ y . c 2 [ a 2 / x 2 ] ← ( λ x 2 .λ у . з 2 ) 2(λx1.λy.c1)a1→λy.c1[a1/x1]=λy.c2[a2/x2]←(λx2.λy.c2)a2 d d( λ х 1 . з 1 ) 1 ← д → ( λ х 2 . з 2 ) 2(λx1.c1)a1←d→(λx2.c2)a2 λ у . ( А , х 1 . З 1 ) 1 Будь-яка станція ← А , у . d → λ y . ( Λ х 2 . З 2) a 2λy.(λx1.c1)a1←λy.d→λy.(λx2.c2)a2 λ y . ( Λ х 2 . З 2 ) 2 → ( λ х 2 . Λ у . З 2 ) 2λy.(λx2.c2)a2→(λx2.λy.c2)a2 σσ

  • Аналогічна проблема виникає і для програм: не там, де вони повинні бути.λλ


1
@chi Якщо я не помиляюся, працює. ( λ b . y b ) y ← ( λ a . ( λ b . a b ) y ) y → ( λ a . a y ) y(λb.yb)y←(λa.(λb.ab)y)y→(λa.ay)y
— xavierm02

1
Я дещо погоджуюся з @chi, що він здається сплутаним після того, як ви подумаєте про це і побачите пару зустрічних прикладів. Але насправді, що з ? ( λ x . xxy)y→yyy←(λx.yxx)y(λx.xxy)y→yyy←(λx.yxx)y
— Родольф Лепігр

2
Хоча мені було б зручно, якби це було правдою, я трохи песимістичніший. Мій колега зробив наступне зауваження, яке робить малоймовірним: це означатиме, що будь-які дві довільні програми, які обчислюють одне ціле (церковне) ціле число, можуть поєднуватися.
— xavierm02

2
Відповідь - ні. Вправа 3.5.11 у Barendregt дає зустрічний приклад, приписаний Плоткіну, але без посилання: і . Я збираюся шукати доказ. (λx.bx(bc))c(λx.bx(bc))c(λx.xx)(bc)(λx.xx)(bc)
— Жил "ТАК - перестань бути злим"

1
Я опублікував зразок контрприкладу як відповідь, і я вважав, що це буде доказом, але є крок, який я не можу зрозуміти. Якщо хтось може це зрозуміти, будь ласка, опублікуйте відповідь, і я видалю свою.
— Жил "ТАК - перестань бути злим"

Відповіді:


7

Два контрприклади:

  • (λx.bx(bc))c(λx.bx(bc))c і (Плоткін).(λx.xx)(bc)(λx.xx)(bc)
  • (λx.a(bx))(cd)(λx.a(bx))(cd) і (Van Oostrom).a((λy.b(cy))d)a((λy.b(cy))d)

Приклад контрприкладу, детально описаний нижче, наведений у «Обчисленні лямбда: його синтаксис та семантика » HP Barenredgt, перероблене видання (1984), вправа 3.5.11 (vii). Його приписують Плоткіну (немає точної посилання). Я даю незавершене доказ, адаптоване до доказів Вінцента ван Оострома про інший контрприклад, у « Візьміть п'ять: вправа з легким розширенням» (1996) [PDF] .

В основі доказу лежить теорема стандартизації, яка дозволяє розглядати лише бета-розширення певної форми. Інтуїтивно кажучи, стандартне скорочення - це зменшення, яке робить усі його скорочення зліва направо. Точніше, зменшення є нестандартним, якщо є крок , перенаправлення якого є залишком редекса зліва від редекса попереднього кроку ; "Ліворуч" і "праворуч" для редекса визначаються положенням яке усувається при стисненні редексу. Теорема стандартизації свідчить , що там , якщо , то існує стандартне скорочення від до .MiMiMjMjλλM→∗βNM→∗βNMMNN

Нехай і . Обидва терміни бета-зменшити до за один крок.L=(λx.bx(bc))cL=(λx.bx(bc))cR=(λx.xx)(bc)R=(λx.xx)(bc)bc(bc)bc(bc)

Припустимо , що існує загальний предок таке , що . Завдяки теоремі стандартизації можна вважати, що обидва скорочення є стандартними. Не втрачаючи загальності, припустимо, що - це перший крок, коли ці скорочення відрізняються. З цих двох скорочень нехай є тим, де перестановка першого кроку знаходиться ліворуч від іншого, і запишіть де є контекстом цього скорочення і - це перенастроювання. Нехай - інше зменшення.AAL←∗βA→∗βRL←∗βA→∗βRAAσσA=C1[(λz.M)N]A=C1[(λz.M)N]C1C1(λz.M)N(λz.M)Nττ

Оскільки є стандартним і його перший крок - праворуч від отвору в , він не може ні в ні ліворуч від нього. Тому кінцевий має форму де частини і зліва від їх отворів однакові, і . Оскільки починається з зменшення на і ніколи не зменшується далі ліворуч, його кінцевий член повинен мати вигляд де частинаττC1C1C1C1ττC2[(λz.M′)N′]C2[(λz.M′)N′]C1C1C2C2M→∗βM′M→∗βM′N→∗βN′N→∗βN′σσC1C1C3[S]C3[S]C3C3зліва від її отвори ідентична лівій частині і , а .C1C1C2C2M[z←N]→∗βSM[z←N]→∗βS

Зауважте, що кожен з і містить одну лямбда, що знаходиться зліва від оператора програми на верхньому рівні. Оскільки зберігає лямбда , це лямбда один в залежності від того , з або є остаточним термін , і в цьому плані аргумент застосування виходить за рахунок зменшення . Повторний параметр знаходиться на рівні верхнього рівня, тобто .LLRRττλz.Mλz.MLLRRττNNC1=C2=C3=[]C1=C2=C3=[]

  • Якщо закінчується на , тоді , і . Якщо має нащадок в , цей нащадок повинен також звести до , яка є нормальною формою . Зокрема, ні нащадок не може бути лямбда, так не може скорочуватися подтерм виду , де є нащадком . Оскільки єдина підрядність яка зводиться доττRRM→∗βzzM→∗βzzN→∗βbcN→∗βbcM[z←N]→∗β(λx.bx(bc))cM[z←N]→∗β(λx.bx(bc))cNNLLbcbcNNNNσσˇNPNˇPˇNNˇNNLLbcbcє , єдиним можливим нащадком в є єдине виникнення самого .bcbcNNLLbcbc

  • Якщо закінчується на , тоді , , і . Якщо має нащадка в то цей нащадок також повинен зменшуватися до шляхом впадання.ττLLM→∗βbz(bc)M→∗βbz(bc)N→∗βcN→∗βcM[z←N]→∗β(λx.xx)(bc)M[z←N]→∗β(λx.xx)(bc)NNRRcc

На даний момент, висновок повинен слідувати легко згідно ван Oostrom, але я відсутній що - то: я не розумію , як трасування нащадків дає якусь - яку інформацію про . Вибачте за неповний пост, я подумаю про це протягом ночі.NNMM


0

Зауважте, що -редукція може змусити будь-який термін зникнути. Якщо припустити, що змінна не з’являється вільною у терміні , у вас є та для будь-яких термінів та . Як наслідок, той факт, що зворотне зворотне з'єднання є дещо еквівалентним: для всіх термінів і існує термін такий, що і . Це здається мені дуже помилковим!ββxxvv(λx.v)t1→βv(λx.v)t1→βv(λx.v)t2→βv(λx.v)t2→βvt1t1t2t2ββt1t1t2t2uuu→∗βt1u→∗βt1u→∗βt2u→∗βt2


2
Якщо я не помиляюся, ( λ x . V ) t 1 ← ( λ x . ( Λ x . V ) t 1 ) t 2 → ( λ x . V ) t 2 працює для цих двох термінів.
— xavierm02

Чорт, ти маєш рацію! Спробую придумати щось інше пізніше, зараз не маю часу.
— Родольф Лепігр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.