Обчислення лямбда: різниця між контекстами та контекстами оцінки


12

По-перше, я хотів би сказати, що мій текст нижче може містити помилки, тому сміливо вказуйте на будь-які помилки в моїй постановці питання.

Розглянемо нетипічне обчислення лямбда з булевими та if-висловлюваннями, терміни яких задані цим синтаксисом:

 t ::= v | t t | if t t t | x
 v ::= \x.t | #t | #f

Контексти C у цьому випадку будуть задані відповідно до цього синтаксису:

C ::= [-] | \x. C | C t | t C | if C t t | if t C t | if t t C 

Крім того, можна визначити контексти оцінювання E відповідно до цього іншого синтаксису:

E ::= [-] | \x. E | v E | E t | if E t t 

Я розділив своє питання на три підпункти, які я хотів би вирішити.

  1. Коли використовуються два поняття? Я знаю, наприклад, що контексти оцінювання використовуються для визначення семантики числення, але використання контекстів все ще дещо ухиляється від мене. Також я хотів би підтвердити свої знання тут.
  2. Коли одне віддати перевагу іншому і чому?
  3. Не могли б ви вказати на відповідні статті, які могли б допомогти мені розібратися в цьому питанні?

Відповіді:


15

Контекст використовується для багатьох цілей, але, як правило, для визначення конгруентностей у програмах. Контексти оцінювання - це підмножина контекстів. Вони зазвичай використовуються для визначення відношень відновлення. Дозвольте навести приклад кожного.

Один формальний спосіб визначення рівності програми полягає в тому, щоб сказати, що дві програми і N є контекстуально рівними, вони можуть замінювати одна одну в кожному контексті без зміни поведінки. Ми можемо визначити це наступним чином : M і N є контекстуально , рівними при умови , для всіх закривають контекстів C [ ⋅ ] для M і N : C [ M ] ⇓ т тоді і тільки тоді , коли C [ N ] ⇓ т . Ми говоримо, що контекст закривається для M , NMNMNC[⋅]MNC[M]⇓tC[N]⇓tM,Nякщо ні ні C [ N ] не мають вільних змінних. Вираз M ⇓ t означає, що програма M скорочується в кінцевій кількості кроків до значення t . (Зауважте, зауважте, що визначення контекстуальної еквівалентності більше стосується багатих понять обчислення, наприклад, одночасних процесів.)C[M]C[N]M⇓tMt

Навпаки, контексти оцінювання - це контексти, які не блокують оцінку. Точніше, контекст оцінювання - це термін з діркою в точці, де повинен відбутися наступний етап атомного скорочення (або може відбуватися для недетермінованих обчислень). Тому для контекстів оцінювання слід застосовувати таке правило: Як приклад використання контекстів оцінювання, розглянемо правила зменшення для дзвінка за значеннямλ-обчислення, де ми не зменшуємо приλ. Отже, навіть колиM→N, у нас немає скороченняλx. M→λx. N. Це можна легко виразити за допомогою загального загального контекстуального правила разом із граматикою для оцінювальних контекстів, яка опускаєλ-вирази. Контексти оцінювання вперше були використані у

M→NE[M]→E[N]
λλM→Nλx.M→λx.NλПереглянута доповідь про синтаксичні теорії послідовного контролю та стану, зроблені Феллейзеном та Хібом.

14

Контекст - це синтаксичне поняття. Контекст - це термін, в якому є одна дірка. (Іноді є контексти з декількома отворами; в цьому випадку це визначення буде чітко дано.) Синтаксис контекстів визначається, беручи синтаксис термінів і дозволяючи одній підтермі бути дірою замість терміна. У BNF (я використовую лямбда-числення в якості прикладу, без булеві і якщо заяви , які не приносять нічого наприклад.): C : : = [ ] | х | т[]

C::=[]∣x∣tC∣Ct∣λx.C

C[]tC[t]t[]C[t][]t

(λx.M)N→βM{x←N}
M{x←N}x↦NM

tMNxt=(λx.M)Ntt′t′=(λx.M)NtCMNxt=C[(λx.M)N]C[M{x←N}]

(λx.M)N→βM{x←N}(β)M→βNC[M]→βC[N](γ)
(λx.M)N→βM{x←N}(β)M→βNλx.M→βλx.N(Cλ)M→βNMP→βNP(C@<)M→βNPM→βPN(C@>)

D::=[]∣x∣tD∣Dt
(λx.M)N→npM{x←N}M→npND[M]→npD[N]
(λx.M)N→npM{x←N}(β)M→npNMP→npNP(C@<)M→npNPM→npPN(C@>)
D

V

V::=xV1…Vn∣λx.M
E::=[]∣ME∣EV
D
(λx.M)V→cbvaM{x←V}(βcbva)M→βNE[M]→cbvaE[N](γcbva)

1
Ваше останнє визначення контекстів оцінювання ближче до початкового поняття Феллейзена та Хіба. Вони є синтаксичним засобом, який допомагає виразити порядок оцінювання термінів числення. Контекст оцінювання - це особливий вид контексту, оскільки він дозволяє однозначно поділити термін на контекст і передексувати (коли це можливо), тим самим детерміновано вказавши, де має відбутися наступний крок зменшення.
— Дейв Кларк

@DaveClarke В бік ви можете також використовувати контексти оцінювання, щоб визначити оцінку для недетермінованих понять обчислення, де у вас немає унікальної декомпозиції на контекст оцінки та перенастроювання.
— Мартін Бергер

@MartinBerger: Індедія.
— Дейв Кларк

@DaveClarke Ви маєте на увазі " контекст детермінованої оцінки - це особливий вид контексту"? Я можу взяти довільний набір контекстів і на основі нього визначити стратегію оцінювання.
— Жил "ТАК - перестань бути злим"

@Gilles: контексти оцінки можуть визначати детерміновану стратегію скорочення. Я не думаю, що я не бачив фразу "детермінований контекст оцінки". Звичайно, це особливий вид контексту. Я згоден з вашим коментарем; Справа в тому, що у вашій відповіді не вистачає історичної значущості контекстів оцінювання, яке мало визначити детерміноване поняття скорочення.
— Дейв Кларк
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.