ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION. TECHNICAL SCIENCE. 2017. No 4
ИНФОРМАТИКА, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И УПРАВЛЕНИЕ INFORMATICS, COMPUTER ENGINEERING AND CONTROL
УДК 519.6 DOI: 10.17213/0321-2653-2017-4-5-12
ТРАССИРУЮЩАЯ НОРМАЛИЗАЦИЯ НЕТИПИЗИРОВАННОГО
ЛЯМБДА-ИСЧИСЛЕНИЯ
© 2017 г. Д.А. Березун
Санкт-Петербургский государственный университет, г. Санкт-Петербург, Россия
UNTYPED LAMBDA-CALCULUS NORMALIZATION BY TRAVERSALS
D.A. Berezun
Saint Petersburg University, Saint Petersburg, Russia
Березун Даниил Андреевич - аспирант, Санкт- Berezun Daniil Andreyevich - post-graduate student,
Петербургский государственный университет, г. Санкт- Saint Petersburg University, Saint Petersburg, Russia.
Петербург, Россия. E-mail: d.berezun@2009.spbu.ru E-mail: d.berezun@2009.spbu.ru
Трассирующая нормализация является новым подходом к нормализации Х-термов путём обхода их абстрактного синтаксического дерева. Изначально трассирующая нормализация была обоснована лишь для некоторых типизированных подмножеств Х-исчисления, а её расширение на нетипизированное Х-исчисление до сих пор не имело формального представления и обоснования. В статье приводится первое формальное представление процедуры трассирующей нормализации для нетипизированного Х-исчисления и показывается её корректность относительно линейной редукцией.
Ключевые слова: нормализация; трасса; Х-исчисление; линейная редукция; симуляция; семантики.
Normalization by traversals is a new approach to normalization of lambda-terms by tracing their abstract syntax trees. Originally designed is context of simply-typed lambda-calculus, it was then extended to untyped lambda-calculus but this extension has no formal presentation and correctness proof. In the paper we present the first formal presentation of untyped lambda-calculus normalization by traversals procedure via transition system and show its correctness with respect to the linear reduction.
Keywords: normalization; traversal; Х-calculus; linear reduction; simulation; semantics.
1. Введение
Трассирующая нормализация представляет собой новый способ вычисления нормальной, в широком смысле1, формы терма путём построения обхода его абстрактного синтаксического дерева, представленного в некотором конкретном синтаксисе. Отличительной особенностью данного подхода является то, что в то время как классическая Р-редукция путём произведения
Под нормальной в широком смысле подразумевается такая форма терма, в которой он является значением - нормальной формой - с точки зрения некоторой предопределённой стратегии вычислений.
подстановок изменяет исходный терм, трассирующая нормализация напротив - оставляет его нетронутым, что позволяет успешно производить компиляцию лямбда-термов путём специализации на них нормализирующей процедуры [1]. Порождённая игровой семантикой [2, 3], своё применение трассирующая нормализация нашла в проверках моделей высшего порядка [2, 4, 5].
Тем не менее все существующие подходы к трассирующей нормализации определены либо для некоторых типизированных подмножеств лямбда-исчисления, например, безопасного лямбда-исчисления [3]. В статье мы обобщим этот
ISSN 0321-2653 ИЗВЕСТИЯ ВУЗОВ. СЕВЕРО-КАВКАЗСКИИ РЕГИОН._ТЕХНИЧЕСКИЕ НАУКИ. 2017. № 4
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION. TECHNICAL SCIENCE. 2017. No 4
подход до нетипизированного А-исчисления. Мы также приведём формальное представление этого обобщения в виде системы переходов и покажем его корректность относительно полной головной линейной редукции [6], ПГЛР, (Complete Head Linear Reduction, CHLR).
2. Контекст работы
В статье будем придерживаться соглашения Барендрегта, а термы рассматривать с точностью до а-эквивалентности.
Головная линейная редукция (ГЛР). В 2004 г. Данос и Ренье осуществили попытку связать игровую семантику лямбда-исчисления с традиционными подходами к нормализации лямбда-термов [7]. В результате было введено понятие головной линейной редукции, ГЛР (Head Linear Reduction, HLR), формализованное с помощью абстрактной машины Кривина [8] и основанной на ней PAM - Pointer Abstract Machine. Головная линейная редукция производит редукцию А-терма путём линейных подстановок головного вхождения переменной «по-надобности» и завершается в так называемой псевдо-головной нормальной форме, ПГНФ. Тем не менее головная линейная редукция не является нормализирующей: для получения нормальной формы терма из псевдо-головной нормальной формы требуется произведение его дальнейшей головной редукции.
Полная головная линейная редукция,
ПГЛР, является обобщением головной линейной редукции, интуитивно производящая рекурсивное применение последней к аргументам псевдоголовной нормальной формы терма после её достижения посредством головной линейной редукции. Полная головная линейная редукция введена и формализована с помощью системы переходов, а также показана её корректность в работе [6]. В отличие от ГЛР, ПГЛР завершается в нормальной форме терма тогда и только тогда, когда последняя существует [6].
Трассирующая нормализация. Понятие обхода было введено Онгом в контексте рекурсивных схем высшего порядка с целью генерации древовидных структур нулевого порядка [4]. В дальнейшем понятие обхода было распространено до простого типизированного лямбда-исчисления [2, 3], и установлено взаимнооднозначное соответствие между множеством обходов синтаксического дерева терма простого типизированного лямбда-исчисления и значением его семантической функции в невинной моде-
ли взаимодействия в игровой семантике - теорема о соответствии пути в ц-длинной Р-нормальной формы терма и его обхода [2, 5], что позволило определить новый подход к нормализации термов простого типизированного лямбда-исчисления без применения классической Р-редукции - трассирующую нормализацию [1 - 3, 5]. Трассирующая нормализация в стиле Онга, ОПН, определена для термов простого типизированного лямбда-исчисления, находящихся в ц-длинной форме [2], которая получается путём его полного ^-расширения, а также замены операторов применения на операторы длинного применения @1о„я. Обходом терма называется обоснованная последовательность вершин АСД его ц-длинной формы. Каждому дереву некоторого корректного просто типизированного терма соответствует некоторое непустое множество обходов Тгау, каждый из которых соответствует пути в АСД ц-длинной Р-нормальной формы исходного терма, и однозначно определяющих последнюю.
Такой подход к нормализации термов оказался согласован с головной линейной редукцией. Заметим, что важной составляющей частью трассирующей нормализации в стиле Онга является преобразование терма в ц-длинную форму, которое в свою очередь существенно опирается на типы и не может быть напрямую распространено до нетипизированного А,-исчисления, в котором, ввиду отсутствия типизации, неконтролируемое ^-расширение терма, очевидно, расходится. Тем не менее, текущие работы Блюма [9] показывают, что ц-расширения на лету позволяет определить некоторое подобие трассирующей нормализации в стиле Онга для нетипизиро-ванного лямбда-исчисления [9].
Процедура нетипизированной трассирующей нормализации. В статье [1] была предпринята попытка обобщить трассирующую нормализацию до нетипизированного А-исчисления. В отличие от трассирующей нормализации в стиле Онга, предложенный подход определяется на стандартном представлении А-исчисления, не требуя преобразования термов в ц-длинную форму. Он получил название ПНТН - процедура нетипизированной трассирующей нормализации, а его обоснованием служит ряд последовательных стандартных преобразований2 классической
Преобразования, широко используемые при компиляции, трансляции и определении семантики различных исчислений: использование замыканий, окружений, линеаризация и т.д. (см. в [1,10-12])
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION. TECHNICAL SCIENCE. 2017. No 4
естественной семантики нетипизированного лямбда-исчисления, приводящих последнюю к ПНТН. Такое представление, хоть и является наглядным, не содержит формального математического доказательства корректности, а значит, корректность ПНТН, в некотором смысле, принимается «на веру».
В следующих разделах статьи мы приведём формальное представление ПНТН в виде системы переходов и установим взаимнооднозначное соответствие между приведённой системой и системой переходов для полной головной линейной редукции, приведённой в [6], связав тем самым трассирующую нормализацию для нетипизированного А,-исчисления с линейной редукцией и формально показав её корректность, а именно то, что ПНТН является нормализирующей.
3. Головная линейная редукция и ОПНТН
Система переходов для головной линейной редукции, заимствованная из [6], приведена на рис. 1. Далее мы приведём представление ОПНТН в виде системы переходов и установим соответствие между приведёнными системами переходов для ГЛР и ОПНТН.
Обозначения
1/?] Л-терм с выле ченным поддеревом Й
!> = и ш >-* (/, />])). />1 = [гиг ь-* (I, ру I, окружение (список)
а = (<|, />,): гг, = [((,. /(|). ^J
стек висячих Аргументов nvaoft список либо пустой стек
Сосюяиие
{ЛЩг.а)
{.4 [ei®ea]: р: <т) MIA«]; Г. []) {.4 [A/.i . ?■. I D.,D :a) {.4
Начальное состояние
(ЛШ; [];!]>
Конечное состояние
МЫ; Р'°)
Правила переходов
(/4 [i|@*,]; р-. (*i,p): <т) [Арр]
(А |Х/:.с]; ,<; [ |) [Laiu-Nou-Elim]
(Аж [Х.е]; (х (ßV)): fr, о) [Lam-Eluu]
{.4 ¡¿1; /Л a) [BVat]
Рис. 1. Система переходов для головной линейной редукции / Fig. 1. Transition system for head linear reduction
3.1. Система переходов для ОПНТН
ОПНТН, или базовый ПНТН, является ограниченной версией ПНТН (см. раздел 4, [1]). ОПНТН соответствует ГЛР, являющейся основой для ПГЛР. Далее мы установим взаимнооднозначное соответствие между системами переходов для ОПНТН и ГЛР, определив функцию преобразования состояний одной системы переходов в состояния другой. Более того, правила
переходов рассматриваемых систем переходов напрямую отображаются друг в друга. В отличие от ГЛР, состояние системы переходов для ОПНТН является обоснованной последовательностью вершин входного лямбда-терма, снабженных указателями на ранние вершины последовательности. В ОПНТН существует два нижеследующих рода указателей.
Обобщённый связывающий указатель. Связывающий указатель является ОПНТН-эквивалентом окружения: он позволяет построить соответствующее окружение на каждом шаге алгоритма. Для каждого токена он указывает на токен, представляющий последнюю абстракцию, которую необходимо добавить в окружение при его формировании, если эта абстракция участвует в образовании какого-либо простого редекса.
Указатель стека висячих аргументов. Он является ОПНТН-эквивалентом стека висячих указателей системы переходов для ГЛР. Инвариантом этого указателя является то, что он всегда указывает либо на токен, представляющий применение термов, либо отсутствует вовсе. Указатель стека висячих аргументов позволяет построить список спинальных аргументов терма на каждом шаге. А именно, для токенов-абстракций он всегда указывает на токен-применение, с аргументом которого он формирует простой ре-декс, а для остальных токенов - на применения, являющиеся непосредственным предком последнего спинального аргумента.
Система переходов для ОПНТН приведена на рис. 2. Для краткости изложения, а также ввиду их простоты, правила установки обобщённого связывающего указателя опущены во всех правилах, кроме (ВУаг). В остальных случаях применяется следующее правило: если последний токен обхода был абстракцией, то у добавляемого в обход токена обобщённый связывающий указатель выставляется на эту самую абстракцию, в противном случае - он выставляется такой же, как у предыдущего токена.
3.2. Соответствие между ГЛР и ОПНТН
Для того чтобы восстановить состояние системы переходов для ГЛР из текущего обхода, необходимо определить каждую из его компонент: текущий терм с выделенной вершиной, текущее окружение и корректный стек висячих аргументов р. Итак, пусть дан обход тогда терм, окружение и стек висячих аргументов могут быть восстановлены из него нижеследующим образом.
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION.
TECHNICAL SCIENCE. 2017. No 4
Состояние обхода0
(BVar)
(Lam-Non-Elim) (Lam-Elim)
(App)
Начальное состояние корень AST входного терма
Правила переходов
Конечное состояние обхода^
Обозначения
соответствующий указатель на некоторую вершину i (в т.ч. и nil)
^ г
г Т
^^ указатель стека висячих аргументов ^ч опциональный указатель стека висячих аргументов обобщенный связывающий указатель доступность по цепочке связывающих указателей
аДля удобства формального изложения мы будем считать, что состояние системы переходов для BUNP является тройка {t, ß, а), где t : Z^[1...|t|] является упорядоченной последовательностью, |t| - длина обхода t, а частичные функции а, ß : [1... 11|]^[1... 111 -1] определяют множества указателей стека висячих аргументов и связывающих указателей соответственно. ^Конечным состоянием является обход, такой, что его последний токен является токеном-переменной, не имеющим указателя висячих аргументов, t=_*x:a(x)=±, являющейся либо свободной, ^keN : a°ßk(x)=^ x, либо связанной, чья абстракция не связана никаким простым редексом, < &eN :
Рис. 2. Система переходов для ОПНТН / Fig. 2. BUNP transition system
Терм. Обход ^ представляет собой подпоследовательность самого левого пути в АСД терма. Таким образом, для восстановления соответствующего первого компонента системы переходов для ГЛР необходимо снабдить токены-применения соответствующими висячими аргументами, игнорируя вхождения связанных переменных, и выделить вершину, соответствующую последнему токену обхода.
Окружение. Если последним токеном текущего обхода является абстракция, то при восстановлении окружения она не рассматривается. Пусть Я - множество всех простых редексов обхода А - список А-абстракций, доступных из последнего токена по цепочке связывающих указателей, тогда текущее окружение
р(0 = {хь-К4 р')\(Хх,А)еК}\А9 где р определено рекурсивно. Заметим, что Я
упорядочено:
Уг1 = (кх, А), г2 = (ку, В) е Я: г1 > г2 ^ кх
входит в обход до токена Ау.
Висячие аргументы. Стек висячих аргументов получается из обхода ограничением последнего на список токенов, доступных из последнего по цепочке указателей висячих аргументов, и снабжением их соответствующими окружениями, согласно предыдущему пункту.
Теорема 1. (Согласованность ОПНТН с ГЛР). Пусть £ и Т — соответствующие состояния систем переходов для ГЛР и ОПНТН, а £' и Т' получаются из 8 и Т применением правил ги1е8 и ги1еТ соответственно, тогда правила имеют одинаковые имена, а состояние £ ' получается из состояния Т ' согласно вышеописанному алгоритму. Иными словами, диаграмма, приведённая на рис. 3, является коммутативной.
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION.
TECHNICAL SCIENCE. 2017. No 4
Рис. 3. Иллюстрация к теореме 1 / Fig. 3. Illustration of the Theorem 1
Доказательство. Индукция по количеству применений правила ruleT, база которой тривиальна. Индукционный переход доказывается разбором случаев для правила ruleT. Для краткости, мы рассмотрим только правило (App), остальные случаи доказываются по аналогии.
Первой компонентой S является терм M[@]. Согласно правилам системы переходов,
правило [App] может быть применено к состоянию S и только оно. В обеих системах переходов правила требуют перейти к левому ребёнку применения, таким образом первый компонент S ' в точности соответствует тому, который будет восстановлен из T '. Окружение не меняется,
(App) [App]
ps, = ps = рг = pr, а стек висячих аргументов
расширяется аргументом рассматриваемых применений, совпадающих согласно ИП.
Следствие 1.1. Первой компонентой состояния, получающегося восстановлением из конечного состояния системы переходов для ОПНТН согласно приведённым правилам, является терм в ПГНФ.
4. ПНТН и полная головная линейная редукция
Система переходов для полной головной линейной редукции, заимствованная из [6], приведена на рис. 4. Для удобства изменения по сравнению правилами для ГЛР выделены с помощью прямоугольников:
выделение . По сути
система переходов для ПГЛР отличается от системы переходов для ГЛР введением новых правил ^Уаг-*], отвечающих за рекурсивное применение к аргументам, и нового символа-разделителя $, запрещающего связывать абстракции и применения, не находящиеся на одном пути в абстрактном синтаксическом дереве терма, соответствующего текущему состоянию системы переходов.
Далее мы приведём ПНТН в виде системы переходов. Заметим, что ниже эта система переходов имеет в точности столько же правил переходов, сколько и система переходов для полной
головной линейной редукции, приведённая на рис. 4. Подобно тому как система переходов для ПГЛР является обобщением системы переходов для ГЛР, так и система переходов для ПНТН является обобщением системы переходов для ОПНТН. Как и в ОПНТН, в ПНТН каждый токен может быть снабжён указателями двух родов. Указатель стека висячих аргументов, который бывает двух типов: внутриуровневый, имеющий тот же смысл, что и одноимённый указатель в ОПНТН, и межуровневый. В то время как межу-ровневый указатель всё ещё указывает на последний висячий аргумент, он запрещает формирование простого редекса. Интуитивно, он является аналогом символа-разделителя $ системы переходов для ПГЛР. Обобщённый связывающий указатель имеет тот же смысл, что и у ОПНТН, а правила его установки остаются неизменными. Правила переходов для ПНТН приведены на рис. 5. Для обеспечения детерминированности системы переходов, мы будем считать, что правила упорядочены и в случае, когда несколько правил может быть применено, применяется то, что приведено на рис. 5. В действительности, в конфликте могут находится лишь правило (ВУаг) и любое из правил ^Уаг-*), а наш порядок означает, что последние могут быть применены тогда и только тогда, когда не может быть применено первое, иными словами, правила для свободных переменных применяются, только если текущая переменная не связана никаким простым редексом.
Соответствие между ПГЛР и ПНТН
Для восстановления состояния системы переходов для ПГЛР из соответствующего состояния системы переходов для ПНТН мы определим способ восстановления каждой из его компонент по отдельности. Обход представляет собой обход АСД в глубину, поэтому для восстановления соответствующего терма необходимо поочерёдно добавлять токены, опуская связанные переменные, вместо которых была произведена линейная подстановка, за исключением тех случаев, когда последним токеном обхода является токен, представляющий такую переменную, и вычёркивая простые редексы - пары токенов (@, кх) : а(кх) = @ . Последний токен текущего обхода определяет выделенную вершину, а стек висячих аргументов является упорядоченным списком аргументов, которые необходимо подставить, как аргументы применений. Окружение восстанавливается так же, как и в
ISSN 0321-2653 ИЗВЕСТИЯ ВУЗОВ. СЕВЕРО-КАВКАЗСКИЙ РЕГИОН._ТЕХНИЧЕСКИЕ НАУКИ. 2017. № 4
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION. TECHNICAL SCIENCE. 2017. No 4
случае ОПНТН. Построение текущего окружения прекращается при появлении первого межу-ровневого указателя. Стек висячих аргументов восстанавливается напрямую из текущей цепочки указателей стека висячих аргументов: внутри
уровневые указатели определяют текущий аргумент, окружение которого восстанавливается согласно предыдущему пункту, а межуровневые, помимо вышеописанного, соответствуют добавлению в стек символа-разделителя $.
Обозначения
А\В\ А-терм с выделенным поддеревом В
р := (liar Ы- (i. pi)) : pi окружение (список)
а := (f. Г) ; а стек висячих аргументов
пустой список либо пустой стек с н м во л-ра:з д е л пт е л ь
S
Состояние (Л[В[.р-,о)
Начальное состояние
UK; II; М )
Конечное состояние
LEU >
Ü I Щ р)
Правила переходов
> (л ' i@e2] ; р: (£-2, р) ■■ с)
(Л [\х.е. ; р: : с |\
СА[В]; р'\ «)
(Л [М\х\@.В] ; р'- if :<j).x? V(p)
[Арр] [Lani-Non-Eliin] [Lam-Elim] [BVar]
11 A ar J»]
(А [е^еа] ; р: а) (л [\х<е]; р: | $ : гт
(Л [Ajr.il: р: (13. р') : гт) [Л \х ; [.... ...]: а)
(А [М [г] @В]; щ [В.р')-Л:а) N3: здесь В. как и во всех [1;\гаг-* ] правилах, является компонентом списка висячих аргументов. Более того. В должен быть аргументом некоторого вышестоящего в контексте _4 применения.
(.4 : //: $ : С.' : а). С =?%.
(.4 [М |;г| @Я] ■ р:%: {В, //) : ^ {4 [М [.г] @В] ; ;>': <»),* £ Щр),
, если гт = $ : гт2 ,иначе
О"!
Г (/. есл \ $ ; т
[FVar-li
[FVar-2]
Рис. 4. Система переходов для полной головной линейной редукции / Fig. 4. Transition system for complete head linear reduction
Новые обозначения
W V" V межуровне выи и опциональный межуровневыи указатели стека висячих аргументов
V
t'....."
внутриуровневый и опциональный внутриуровневый указатели стека висячих аргументов опциональный указатель стека висячих аргументов произвольного типа
(BVar)
(Lam-Non-Elim)
(Lam-Elim)
(Арр)
(FVai-O)
(FVar-1)
(FVar-2)
@ ... A;c ... i t
Jj.--'" ■
@i ... @2 @5 ... @2
Рис. 5. Правило переходов для UNP / Fig. 5. UNP transition system rules
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION.
TECHNICAL SCIENCE. 2017. No 4
Теорема 2. (Согласованность ПНТН с ПГЛР). Пусть £ и Т - соответствующие состояния систем переходов для ПГЛР и ПНТН, а £' и Т' получаются из £ и Т применением правил ги1е£ и ги1еТ соответственно, тогда правила ги1е£ и ги1еТ имеют одинаковые имена, а состояние £' получается из состояния Т ' согласно вышеописанному алгоритму.
Доказательство. Аналогично Теореме 1. Мы рассмотрим только случай (БУаг-0), остальные случаи доказываются аналогичным образом. Итак,
ИП [ГУаг-0]
£ = <А[М[х]@В]; р; (В,р'): $: а) ^ £' = = < А М [ х]@ В]; р';$:а).
Пусть состояние, восстанавливаемое из Т\ £г ^ (Мг; рг; аг ) . Тогда, по ИП МТ> = А[М[х]@ В], рТ'= р' для токена @2, аТ, отличается от аТ = (В,р ' ): $: а снятием вершины последнего, т.е. аТ > = $: а.
Следствие 2.1. (ПНТН является нормализирующей). ПНТН завершается тогда и только тогда, когда нормальная форма входного терма существует.
Заключение
Описана трассирующая нормализация и установлена связь между трассирующей нормализацией нетипизированного лямбда-исчисления и линейной редукцией. А именно, мы ввели пару процедур трассирующей нормализации в виде систем переходов (см. рис. 5 и 2), показав их согласованность с полной головной (см. теорему 2) и головной (см. теорему 1) линейными редукциями. Показав, тем самым, что процедура нетипизированной трассирующей нормализации является 1-эффективной нормализирующей процедурой.
Пример А
Рассмотрим пример работы системы переходов процедуры трассирующей нормализации ПНТН на примере терма ЫРЯ, где:
менту стека висячих аргументов соответственно. Обход терма ЫРЯ приведён на рис. А.
Для большей наглядности введём два специальных токена = и ||, которые будут означать, что в этом месте произошла подстановка связанной переменной или произошёл переход к аргу-
Рис. А. Обход терма NPR / Fig. A. NPR-term traversal
Итак, для восстановления нормальной формы терма из обхода необходимо удалить из него все связанные переменные, вместо которых была произведена подстановка, - токены-переменные перед токеном = -{11,15,19,21,27,29} и все пары токенов, образующие простой редекс, (@, Ax):a(Ax) = @, т.е. {(1,4), (2,3), (5,9), (6,8), (10,12), (13,17), (14,16), (18,20) }, тогда полученный обход, в нашем примере @9 @8 g М Ъ @5 @11 g Ъп п а
22 23 24II25 26II 28 30 31II32 33 II34, будет обходом в глубину нормальной формы исходного терма, а токены || обозначают конец построения его текущей ветки.
Литература
1. Daniil Berezun, Neil D. Jones. Compiling untyped lambda calculus to lower-level code by game semantics and partial evaluation (invited paper). In Proceedings of the 2017 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2017), ACM, New York, NY, USA, 1 - 11, 2017.
2. Luke Ong C.-H. Normalisation by Traversals. CoRR, abs /1511.02629. URL: http://arxiv.org/abs/1511.02629, 2015 (дата обращения 27.07.2017).
3. William Blum. The safe lambda calculus. PhD thesis, University of Oxford, UK, 2009.
4. Luke Ong C.-H. On Model-Checking Trees Generated by Higher-Order Recursion Schemes. In Logic in Computer Science, 2006 21st Annual IEEE Symposium on, pages 21 -90, 12 - 15 Aug. 2006.
5. Blum W., Luke Ong C.-H. A concrete presentation of game semantics. In Galop 2008: Games for Logic and Programming Languages, 2008.
6. Березун Д. Полная головная линейная редукция // Науч-техн. ведомости СПбГПУ. Информатика. Телекоммуникации. Управление. Вып. 3. 2017.
7. Vincent Danos, Laurent Regnier. Head linear reduction. unpublished, 2004.
8. Jean-Louis Krivine. A call-by-name lambda-calculus machine. Higher-Order and Symbolic Computation 20(3): 199 - 207, 2007.
ISSN 0321-2653 IZVESTIYA VUZOV. SEVERO-KAVKAZSKIIREGION. TECHNICAL SCIENCE. 2017. No 4
9. Blum W. Imaginary Traversais for the Untyped Lambda Calculus (ongoing work), 2017.
10. Hendrik Pieter Barendregt. The lambda calculus: its syntax and semantics. Studies in logic and the foundations of mathematics. North-Holland, Amsterdam, New-York, Oxford, 1981.
11. Benjamin C. Pierce. Types and Programming Languages (1st ed.). The MIT Press, 2002.
12. Benjamin C. Pierce. Advanced Topics in Types and Programming Languages. The MIT Press, 2004.
References
1. Berezun Daniil, Jones Neil D. Compiling untyped lambda calculus to lower-level code by game semantics and partial evaluation (invited paper). In Proceedings of the 2017 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2017), ACM, New York, NY, USA, 1-11, 2017.
2. Luke Ong C.-H. Normalisation by Traversals. CoRR, abs/1511.02629, 2015. http://arxiv.org/abs/1511.02629 (accessed 27.07.2017)
3. Blum William. The safe lambda calculus. PhD thesis, University of Oxford, UK, 2009.
4. Luke Ong C.-H. On Model-Checking Trees Generated by Higher-Order Recursion Schemes. In Logic in Computer Science, 2006 21st Annual IEEE Symposium on, 2006. Pp. 21-90.
5. Blum W., Luke Ong C.-H. A concrete presentation of game semantics. In Galop 2008: Games for Logic and Programming Languages, 2008.
6. Berezun D.. Polnaya golovnaya lineinaya reduktsiya [Full head linear reduction]. Nauchno-tekhnicheskie vedomosti SPbGPU. Informatika. Telekommunikatsii. Upravlenie, 2017, vyp. 3.
7. Vincent Danos and Laurent Regnier. Head linear reduction. unpublished, 2004.
8. Jean-Louis Krivine. A call-by-name lambda-calculus machine. Higher-Order and Symbolic Computation 20(3): 199-207, 2007.
9. Blum W. Imaginary Traversals for the Untyped Lambda Calculus (ongoing work), 2017.
10. Hendrik Pieter Barendregt. The lambda calculus: its syntax and semantics. Studies in logic and the foundations of mathematics. North-Holland, Amsterdam, New-York, Oxford, 1981.
11. Pierce Benjamin C. Types and Programming Languages (1st ed.). The MIT Press, 2002.
12. Pierce Benjamin C. Advanced Topics in Types and Programming Languages. The MIT Press, 2004.
Поступила в редакцию /Received 30 сентября 2017 г. /September 30, 2017