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


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]MtMt

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

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

14

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

C::=[]xtCCtλx.C

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

(λx.M)NβM{xN}
M{xN}xNM

tMNxt=(λx.M)Nttt=(λx.M)NtCMNxt=C[(λx.M)N]C[M{xN}]

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

D::=[]xtDDt
(λx.M)NnpM{xN}MnpND[M]npD[N]
(λx.M)NnpM{xN}(β)MnpNMPnpNP(C@<)MnpNPMnpPN(C@>)
D

V

V::=xV1Vnλx.M
E::=[]MEEV
D
(λx.M)VcbvaM{xV}(βcbva)MβNE[M]cbvaE[N](γcbva)

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

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

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

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

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