Лямбда-исчисление: разница между контекстами и контекстами оценки


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 ] ⇓ t тогда и только тогда, когда C [ N ] ⇓ t . Мы говорим, что контекст закрывается для 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 Вы имеете в виду « детерминированный контекст оценки - это особый вид контекста»? Я могу взять произвольный набор контекстов и определить стратегию оценки на его основе.
— Жиль "ТАК - перестань быть злым"

@ Жиль: контексты оценки могут определять детерминистическую стратегию сокращения. Я не думаю, что видел фразу «детерминированный контекст оценки». Это, конечно, особый вид контекста. Я согласен с вашим комментарием; Дело в том, что ваш ответ не учитывает историческое значение контекстов оценки, которые должны были определить детерминистическое понятие сокращения.
— Дейв Кларк
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.