ЛОГИКО-СЕМИОТИЧЕСКИЙ АНАЛИЗ СОДЕРЖАНИЯ ОБУЧЕНИЯ МОНОМОРФНОЙ СИСТЕМЕ ТИПОВ λ→

УДК 378.146:004

И. А. Кудрявцева

ЛОГИКО-СЕМИОТИЧЕСКИЙ АНАЛИЗ СОДЕРЖАНИЯ ОБУЧЕНИЯ МОНОМОРФНОЙ

СИСТЕМЕ ТИПОВ ^

Автор предлагает направление развития содержания обучения теоретическому программированию, которое понимается как наука о математических моделях понятия «программа» и включающая следующие разделы: Х-исчисление, теория комбинаторов, теория типов, теория категорий. Проведен логико-семиотический анализ содержания одного из разделов обучения теоретическому программированию «мономорфная система типов Х^» (демонстрирующая зависимость термов от термов). Основной акцент сделан на методах решения основных типов задач системы с использованием интерпретатора GHC, содержащего инструментарий по установлению существования вывода типизированного Х-терма и вывода типа Х-терма. В результате сформулированы компетенции, приобретаемые обучаемыми по итогам изучения мономорфной системы типов.

Ключевые слова: теоретическое программирование, Х-куб, мономорфная система типов, логико-семиотический анализ содержания, изоморфизм Карри-Говарда, минимальная пропозициональная логика (Prop).

Теоретическое программирование представляет собой раздел математической науки, предназначенный для рассмотрения моделей программ с целью выделения и разработки новых свойств языков программирования. При этом математические модели программ рассматриваются с помощью исчислений таких теорий, как Х-исчисление, теории комбинаторов, теории типов, теории категорий, семантической теории языков программирования.

Теория типов изучает одно из свойств современных языков программирования - типизируемость, т. е. приписывание типов программным объектам. В настоящее время теория типов превратилась в одну из основных разновидностей логических исчислений высшего порядка, основной принцип которой состоит в том, что логические понятия располагаются в определенную иерархию «типов»: функция имеет в качестве аргументов лишь понятия, предшествующие ей в этой иерархии.

Системой типов [1, Введение, с. 1] называется гибко управляемый синтаксический метод доказательства отсутствия в программе определенных видов поведения при помощи классификации выражений языка по разновидностям вычисляемых ими значений.

Необходимость типов отмечается следующими положениями:

(а) типы позволяют получить частичную спецификацию;

(б) правильно типизированные программы не могут «сломаться»;

(в) проверка типов позволяет обнаружить простые ошибки.

Возможные зависимости между типами и Х-термами (как одного из средств описания моделей программ) отображены в системах, которые Х. Барендрегт (1991) представил Х-кубом или кубом Барендрегта.

Единообразное описание восьми различных систем типизированного Х-исчисления с явным при-

писыванием типов (систем, типизированных по Чёрчу), составляющих вершины Х-куба, предоставляет инструмент для построения языков с системой вывода типов и доказательства предполагаемого поведения программы до ее запуска (соответствия некоторой спецификации).

Простейшая система типов Х-куба - просто типизированное Х-исчисление Х^ (STT, англ. Simple Type Theory), в которой термы зависят от термов.

Дефицит русскоязычной литературы по основам теории типов языков программирования [1-4], а также малое число переводов (приводящее к терминологическим трудностям) сказались на отсутствии в университетских курсах должного внимания к рассматриваемым ниже вопросам. Поэтому данное содержание представляет собой информационную базу, являющуюся неотъемлемой частью системы содействия профессиональному саморазвитию преподавателя вуза [5] и способствующую формированию информационной компетентности будущих специалистов в области теоретического программирования [6].

Приступим к логико-семиотическому анализу мономорфной системы типов Х^ в обучении теоретическому программированию.

Логико-семиотический анализ позволит рассмотреть содержание обучения со следующих позиций (по [7, с. 223]):

(1) семиотики (с помощью явного выделения метаязыка, предметного языка, синтаксиса, семантики);

(2) формальной логики (с помощью явного выделения формальных систем, формальных языков, формальных и содержательных аксиоматических теорий);

(3) алгоритмов (с помощью явного выделения вычислительных моделей, алгоритмов и их реализаций с помощью вычислительных систем).

I. Семиотический компонент содержания.

Предметный язык: язык типизации Х-термов.

Метаязыки: язык канторовской теории множеств, язык минимальной пропозициональной логики (Prop), язык бестипового Х-исчисления.

II. Формально-логический компонент содержания.

Формальные системы: просто типизированное Х-исчисление в стиле А. Чёрча и в стиле Х. Карри.

Формальная система включает описание двух компонентов (по [8, с. 324-326]): язык в алфавите (класс исходных символов, правильные слова в алфавите, формулы) и исчисление (аксиомы, правила вывода).

1. Язык в алфавите:

(а) класс исходных символов (алфавит): V={x, y, z,...} - множество предметных переменных; 0 - основной (элементарный) тип, тип индивида; ^ - синтаксический конструктор типа; = -двухместный предикатный символ; Х - логический символ; (, ),. - вспомогательные символы;

(б) класс правильных слов в алфавите.

Множество типов (Typ) - это множество слов

в алфавите {0,(,)}, называемых типами, которое индуктивно определяется следующим образом (по [9, с. 548]): (1) 0 е Typ (элементарный тип); (2) если а е Typ и ß е Typ, то (aß) е Typ; (3) других типов, кроме построенных по пп. (1) и (2), нет.

Скобки в типе восстанавливаются по ассоциативности вправо: (a1(a2(...an))).

Далее по тексту множество типов будем обозначать T.

Предтермы (псевдотермы) имеют вид: в стиле Чёрча (AT): в стиле Карри (Л):

«е У

М,ЫеЛт

=> хеАт; = > (МЫ)еЛт;

i£V

<H,NeA

= > хеЛ;

= > (МЮеЛ;

в стиле Чёрча: M:t, МеАт, гет

в стиле Карри: M:t, МеЛ, teT.

в стиле Карри: Ах. х: она,

Лх.х: (oHß)-tiHß

МеАт, хё¥, аЕТ => (Ах:«.Н)ёЛт 41 еЛ, хеу => (Ах.М)еЛ.

Приписывание типа а терму х обозначим х: а или ха.

Типизированный Х-терм имеет вид [10, с. 132]:

(1) каждая типизированная переменная ха (х е V, а е Т) есть типизированный Х-терм;

(2) если Мав и № - типизированные Х-термы (а,Р е Т), то (МарКа)р или (М^К)15 является типизированным Х-термом;

(3) если ха - типизированная переменная (а е Т), а Мв - типизированный Х-терм (Р е Т), то (Хха. Мв)ав или (Хха.Мв) является типизированным Х-термом.

Утверждение о типизации в Х^ имеет вид

в стиле Чёпча:

(Ах:а-»р.х): (сир)-чир

(в) класс формул.

Формулами типизированного Х-исчисления называются слова вида

М = К, М,К е Ла, а е Т;

(г) свойства Х-термов.

Понятия «свободная переменная», «связанная переменная» и «замкнутый Х-терм» для системы Х^ вводятся аналогично соответствующим понятиям для бестипового Х-исчисления; понятие «нормальная форма» аналогично определению в бестиповом Х-исчислении;

(д) операция над Х-термами.

Операция «подстановка» (М)хК определяется для типизированных Х-термов точно так же, как и для бестиповых Х-термов, за исключением того, что х и N должны иметь один и тот же тип; в том случае, если х и N имеют разные типы, то подстановка (М)хК не определена;

(е) основные теоремы и леммы.

Из многочисленных теорем выделим следующую [9, с. 550]: любой типизированный Х-терм имеет нормальную форму.

2. Исчисления.

Типизированные исчисления в стиле Чёрча и в стиле Карри отличаются с точки зрения синтаксиса записью правила обработки абстракции, в остальном они схожи и представимы как в терминах гильбертовского исчисления, так и в терминах ген-ценовского исчисления.

(а) Приведем аксиомы и правила вывода типизированных Х-термов, предварительно введя понятие «контекст».

Контекст (окружение) - это частичная функция из множества различных переменных V в множество типов Т:

Утверждением, выводимым в контексте Г, называется утверждение М:т, вывод которого выполняется по правилам типизации системы Х^:

в гильбещовскок исчислении

(а) схет ахсисш'.

в генценсесксм исчислении

(0) Ги|м:р,м=„;ы||- N:p;

в стиле Карри.

М:р M=riN

(@) - (общелсгический

Ы:р принцип замены равного на равное);

в стиле Карри и Чёрча

Тип т называют предикатом, а Х-терм - субъектом утверждения. Разница между стилем Чёрча и Карри очевидна: абстракция в стиле Чёрча определяется однозначно, а в стиле Карри - нет:

в ошле Карри и Чёрча

в гильбертовском исчислении Г|— М:6-*г Г|— Ы: 6

Г|— MN:t MN:t

в стиле Чёрча

s гепцепозском исчислении М:6-*т N:6

С2)

(удаление -О ;

C3i)

Ги{х:6} |— М:т Г |— i<:6.M:6-ft

[х:6] М:т

C3i)

(ееедете -О ;

Ах:б.М:б-к

С32)

в стиле Карри Ги{х:6} |— М:т Г|- Ах.М:б-т

Если существуют Гит такие, что Г|— M:t, то предтерм M называют допустимым Х-термом (или просто Х-термом).

(б) определение понятия «вывод».

Понятие «древесный вывод утверждения М:т в контексте Г» определяется подобно Г. Генцену [11, с. 15-16]: «...вывод называется древовидным, если все его утверждения являются нижними утверждениями не более чем одной фигуры заключения. Исходными утверждениями вывода называются утверждения, которые не являются нижними утверждениями никаких фигур заключения... Исходные утверждения некоторого вывода называются допущениями... Конечным утверждением вывода называется утверждение, которое не является верхним утверждением никакой фигуры заключения... Вывод с конечным утверждением М:т называется выводом утверждения М:т».

3. Интерпретация.

При программистском подходе (в практическом программировании) Х-термы интерпретируются как программы, а типы - как их частичные спецификации.

При логическом подходе (в теории типов) типы интерпретируются как формулы некоторого логического языка, а Х-термы - как доказательства этих формул.

По изоморфизму Карри-Говарда: формулы в логической системе Prop - это типы в системе Х^. Поэтому если в представленных правилах оставить только типы, то получатся правила системы Prop; доказательства в логической системе Prop -это термы в системе Х^.

III. Алгоритмический компонент содержания.

Важнейшими задачами в системе Х^ являются:

(1) задача проверки типа (TCP, англ. «Type Checking Problem») - проверка соответствия заданному Х-терму заданного типа;

(2) задача синтеза (реконструкции) типа (TSP, англ. «Type Synthesis Problem») - восстановление типа по заданному Х-терму;

(3) задача обитаемости типа (TIP, англ. «Type Inhabitation Problem») - восстановление Х-терма по заданному типу.

Используя правила типизации как в стиле гиль-бертовского и генценовского исчисления, рассмотрим методы решения представленных выше задач.

Предварительно отметим, что запись в стиле генценовского исчисления выглядит более лаконично по сравнению с записью в стиле гильбертов-ского исчисления, поскольку в этом случае используется исчисление формул со списком допущений (фактически являющегося стеком); в случае гиль-бертовского исчисления используется исчисление выводов. Далее приведем примеры соответствующих методов решения задач в стиле генценовского исчисления (за исключением задачи TCP, где продемонстрируем также и стиль гильбертовского исчисления).

1. Решение задачи TCP.

1.1. В стиле Чёрча проверку соответствия Х-терму некоторого типа можно осуществить одним из двух способов:

(1) обратного вывода (снизу вверх), в котором список допущений (контекст) пополняется типизированными переменными с заданными типами;

(2) прямого вывода (сверху вниз), в котором в список допущений (контекст) предварительно добавляются типизированные переменные с заданными типами.

Приведем пример решения задачи TCP для Х-терма с контекстом Г:

(а) в стиле гильбертовского исчисления (рис. 1):

Рис. 1. Решение задачи TCP в оформлении гильбертовского исчисления

(б) в стиле генценовского исчисления (рис. 2):

Рис. 2. Решение задачи TCP в оформлении генценовского исчисления

1.2. В стиле Карри проверка соответствия Х-терму некоторого типа осуществляется путем построения:

(1) обратного вывода (снизу вверх), как было представлено выше в стиле Чёрча, исключая из записи типы типизированных переменных при абстракции;

(2) прямого вывода терма (сверху вниз), вводя обозначения типов для типизированных переменных и предварительно добавляя их в список допущений (контекст).

Если действовать по правилам типизации, то возможно конструирование системы равенств типов, которая затем решается для получения главного типа Х-терма. Затем полученный результат унифицируется с заданным типом Х-терма; если унификация удастся, то Х-терму соответствует заданный тип, в противном случае - нет.

Приведем решение задачи ТСР (в стиле Карри, используя прямой вывод в направлении сверху вниз (рис. 3)) для Х-терма с заданным типом:

Лх. Лу. у (М. х): си С (р-чО ) -ц

2. Решение задачи TSP.

2.1. В стиле Чёрча восстановление типа по заданному Х-терму осуществляется путем построения:

(1) прямого вывода (сверху вниз), при котором заданный Х-терм выстраивается из типизированных переменных (по аналогии с действиями решения задачи TCP);

(2) обратного вывода (снизу вверх), который начинается c ввода обозначения типа Х-терма некоторой буквой. В зависимости от вида Х-терма возможна конкретизация типа (например, известно, что терм, начинающийся с абстракции, должен иметь тип «со стрелкой»), учитывая то, что типизированные переменные представлены с типами (рис. 5):

у: (р-»а)-»К )<z.x: Е=р-»о yOzip.x):^

Список допущений:

1. х:а

2. у: (p-ttbK

Ay: (p-«)-^.yttz:p.x):6=((p-Hl)--i)-»S

Рис. 3. Дерево вывода терма (в стиле Карри) с типом

Получим главный тип Х-терма: [*: = (р-чЮ чб] (д- С^б)) =11-» ((р-чО чб) .

Унифицируем полученный главный тип Х-терма с его заданным типом, используя алгоритм Робинсона, который фактически представляет обход бинарных деревьев, содержащих типы.

Отобразим унифицируемые типы в виде деревьев; тем самым неформально получим результат унификации (рис. 4):

Ах:и..Ау: (р-чЮ-^.уЦг:р.х):т=инб Рис. 5. Дерево вывода терма (в стиле Чёрча) с конструированием типа

Далее строить вывод не имеет смысла, поскольку все введенные буквы типа конкретизированы типами типизированных переменных заданного Х-терма.

В результате получится простая система равенств типов, решение которой по алгоритму Робинсона представит тип Х-терма (рис. 6):

Рис. 6. Система равенств типов

Полученный тип т проверим с помощью интерпретатора ОИС (версия 6.10.3), указав соответствующую теорему в файле

{-В ЬАШЖЕ Напк>ГГурез,йсоре(1ТуреУаг1аЫез й-} Интерпретатор установит существование вывода:

Рис. 4. Унифицируемые типы, представленные в виде деревьев

Унифицирующая подстановка [5:=у] найдена, т. е. TCP решена.

> (forall al M gl. (Ы -> al) > a -> (Ob -> a) -> g) -> g

-> gl)

2.2. В стиле Карри восстановление типа по заданному Х-терму осуществляется путем построения:

(1) обратного вывода (снизу вверх) по аналогии с тем, как это делалось при рассмотрении данной задачи в стиле Чёрча (рис. 7). Однако в силу отсутствия в явном виде типов типизированных переменных Х-терма получаемая система уравнений типов может быть более сложной:

типизации для Х^ в стиле Чёрча и в стиле Карри.

А. Правило, используемое при построении вывода в направлении снизу вверх:

в стиле Чёрча

в стиле Карри

Рис. 7. Дерево вывода терма (в стиле Карри) с конструированием типа

Приступим к формальной унификации системы уравнений вида с помощью алгоритма Робинсона (рис. 8):

Б. Правило, используемое при построении вывода в направлении сверху вниз (в стиле Чёрча и в стиле Карри):

(2') -.

МЫ: г

Восстановление Х-терма по заданному типу осуществляется путем построения вначале обратного вывода в направлении снизу вверх (при котором выделяются подтермы данного терма), затем -прямого вывода в направлении сверху вниз (при котором подтермы собираются в единый Х-терм с помощью операции «подстановка») (рис. 9).

И4:й

у: (р-чО-'К

1*2: К Mi: ((p-tt)-^)-^

Список допущений:

1. x:tt

2. у: (р-чЮ**

3. z:р

Рис. 8. Решение системы уравнений типов

(2) прямого вывода (сверху вниз), исходя из предположения о типах типизированных переменных (пусть x:a, y:P, z:y, тогда дерево вывода будет таким же, как при построении обратного вывода).

Для того чтобы убедиться в правильности «ручного» вывода типа, унифицируем его с типом, выводимым GHC:

В результате применения алгоритма унификации Робинсона к типам

t-»((tl-»t)-»t2)-»t2 получится унифицирующая подстановка

Осуществим проверку результатов унификации:

[*2:=t2]°[a:=t]°[y:=tl] (tt-((y-4*)-t2)-t2)=t-((tl-t)-*t2)-t2

3. Решение задачи TIP.

Сформулируем правила вывода для решения задачи TIP в стиле фигур натурального вывода. При этом нумерация правил соответствует правилам

М4=х

M^=As:p.H4

Мг=уМз

М!=Ау: (р-чО-^.Мг

М:сн((р-чО-^)Л M=Ax:tt.Hi

Рис. 9. Дерево вывода типа с конструированием терма

Осталось выполнить подстановку термов, двигаясь в направлении сверху вниз по дереву вывода

Проверка результатов осуществляется с помощью интерпретатора GHC аналогично тому, как было указано в разделе решения задачи TSP.

Напомним, что по изоморфизму Карри-Говарда тип Х-терма является доказываемой формулой в системе Prop, а Х-терм - доказательством. Легко видеть, что если удастся свести заданный тип к общезначимой формуле с помощью эквивалентных преобразований, то указанный тип будет обитаемым.

Описанные методы решения задач TCP, TSP и TIP легко превратить в соответствующие алгоритмы (известно [2], что все указанные задачи разрешимы в системе Х^).

Например, приведем алгоритмы решения задачи TSP:

(1) алгоритм построения ограничений (системы равенства типов) при выводе Х-терма в направлении снизу вверх [2, с. 71] (рис. 10):

Рис. 10. Формальная запись алгоритма построения ограничений

(2) алгоритм Хиндли—Милнера (двухэтапный) [3, с. 98-99]: первый этап состоит в построении системы уравнений на типах, а второй - в решении системы уравнений на типах с помощью алгоритма унификации;

(3) алгоритм Хиндли—Милнера с немедленным разрешением (по [3, с. 99-100]): уравнения на типах решаются по мере добавления в систему (Б -главный унификатор типов, Т, Т' - подстановки, 31 - функция унификации типов):

В заключение выделим основные понятия предшествующего учебного материала, задействованные в изучаемом разделе.

Семиотика. Знать понятия: формальный язык, формальная система, интерпретация, синтаксис и семантика формальных языков.

Дискретная математика:

(1) слова в алфавите. Знать понятия: алфавит, слово в алфавите, операция и результат приписывания буквы (слова) к слову, подслово, вхождение (буквы) подслова в слово, операция и результат замены подслова исходного слова на слово, операция и результат подстановки слова вместо буквы в исходном слове. Уметь: осуществлять операции замены и подстановки;

(2) формальные грамматики Хомского. Знать понятия: формальная, порождающая грамматика; отношение непосредственной выводимости; вывод цепочки; выводимая цепочка; терминальная цепочка, порождаемая грамматикой; язык, порождаемый формальной грамматикой; Уметь: выводить терминальную цепочку, порождаемую грамматикой.

Комбинаторная логика: язык в алфавите бестипового Х-исчисления.

Знать: алфавит бестипового Х-исчисления; понятия: Х-терм, Х-формула бестипового Х-исчисления, Х-подтерм. Уметь: определять, является ли слово Х-термом, Х-формулой бестипового Х-исчисления; опускать и восстанавливать скобки в записях Х-термов.

Математическая логика:

(1) система минимальной логики нулевого порядка (Prop). Знать: подмножества формул языка нулевого порядка, содержащие только логическую связку "импликация"; подмножества правил натурального вывода (modus ponens, дедукция); подмножества множества аксиом и непрямых правил вывода гильбертовского исчисления нулевого порядка; понятия: линейное и древесное доказательство формулы, линейный и древесный вывод формулы. Уметь: устанавливать существование доказательств и выводов формул с помощью непрямых допустимых правил вывода в исчислении Prop;

(2) генценовское исчисление натурального вывода. Знать: аксиомы, фигуры заключения, правила заключения, правила вывода. Уметь: устанавливать существование доказательств (выводов) формул с помощью фигур заключения.

Логическое программирование: алгоритмы унификации термов.

Знать понятия: конкретизация, унификация; подстановка, композиция подстановок; унифицируемые термы, наиболее общий унификатор термов; рекурсивный и итеративный алгоритм Робинсона. Уметь: находить наиболее общий унификатор термов; применять композицию подстановок к терму.

Содержание предлагаемой нами дисциплины «Теоретическое программирование» может быть поставлено в соответствие с образовательной программой ФГОС ВО по направлению подготовки 230400 "Информационные системы и технологии" (квалификация (степень) «бакалавр»), так как оно ориентировано на формирование следующих компетенций:

(1) понимание социальной значимости своей будущей профессии, обладание высокой мотивацией к выполнению профессиональной деятельности (ОК-3).

Оценивается в процессе проведения занятий в интерактивных формах;

(2) владение широкой общей подготовкой (базовыми знаниями) для решения практических задач в области информационных систем и технологий (ОК-6);

(3) способность разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные) (ПК-12);

(4) способность к инсталляции, отладке программных настройке технических средств для ввода информационных систем в опытную эксплуатацию (ПК-29).

Приведенные выше компетенции (2) - (4) оцениваются через решение задач, сопровождающих тексты лабораторных работ и упражнений по курсу "Теоретическое программирование" и направлен-

ных на выработку умений. Также имеет место оценка вариативной составляющей самостоятельной работы, которая подразумевает написание программ, реализующих алгоритмы, рассматриваемые в курсе.

В настоящее время на третьем курсе бакалавриата по направлению «Информационные системы и технологии» (институт компьютерных наук и технологического образования) проводится двухсеме-стровый курс «Прикладное программирование на языках высокого уровня». Первая часть курса посвящена бестиповому лямбда-исчислению, вторая часть курса посвящена использованию типизированного лямбда-исчисления для изучения систем типизации: Х->, Х2, Хю, ХР, Хю, ХРю, ХР2, ХРю (Х-куб Барендрегта).

Статья носит теоретический характер и посвящена структуризации содержания обучения некоторым аспектам теоретического программирования, поэтому не упоминаются методы и формы обучения и, следовательно, не исследуется вопрос эффективности предложенной методики.

Проведен логико-семиотический анализ содержания раздела «Мономорфная система типов Х^» в учебном курсе «Теоретическое программирование», в результате которого определены компетенции, которые представим в виде следующих типов задач.

Под компетенцией понимается способность специалиста воспользоваться для решения задач трансформированием декларативных знаний в «алгоритмические» умения. Такой взгляд сформировало следующее определение: профессиональная компетентность (по [12, с. 8]) - это интегральная характеристика, определяющая способность спе-

циалиста решать профессиональные проблемы и типичные профессиональные задачи, возникающие в реальных ситуациях профессиональной деятельности, с использованием знаний, профессионального и жизненного опыта, ценностей и наклонностей.

1. Задачи системы Х^: проверка типа Х-терма в стиле Чёрча и в стиле Карри (TCP); синтез типа по Х-терму в стиле Чёрча и в стиле Карри (TSP); установка обитаемости типа Х-терма в стиле Чёрча и в стиле Карри (TIP).

2. Задачи на программирование:

(1) работа с программной моделью вывода типов (в системе Х^), реализованной на языке программирования Haskell: вывод типовой схемы заданного Х-терма и проверка полученного результата с помощью интерпретатора языка Haskell; восстановление Х-терма по заданному дереву вывода типа (результат работы программы с конкретными Х-термом); восстановление типов некоторых подтермов дерева вывода типа Х-терма; определение главного типа Х-терма по заданному списку типовых схем подтермов Х-терма (получаемого с помощью программы), предварительно решив систему равенств вручную;

(2) работа с интерпретатором HUGS или GHCi: вывод типа заданного Х-терма; работа с интерпретатором GHCi-6.10.3, в который встроен механизм проверки типа для заданного Х-терма;

(3) реализация алгоритмов: стирание типа Х-терма; построение ограничений при выводе Х-терма в направлении снизу вверх; Хиндли-Мил-нера (двухэтапного); Хиндли-Милнера (с немедленным разрешением).

Список литературы

1. Пирс Б. Типы в языках программирования: пер. с англ. М.: Лямбда пресс: Добросвет, 2012. 656 с.

2. Barendregt H. Lambda calculi with types // Handbook of logic in computer science. Oxford University Press, vol. 2, 1993.

3. Довек Ж., Леви Ж.-Ж. Введение в теорию языков программирования. М.: ДМК Пресс, 2013. 134 с.

4. Митчелл Дж. Основания языков программирования: пер. с англ. М.; Ижевск: НИЦ «Регулярная и хаотическая динамика», 2010. 720 с.

5. Вековцева Т. А. Система содействия профессиональному саморазвитию преподавателя вуза // Научно-педагогическое обозрение (Pedagogical Review). 2014. Вып. 2 (4). С. 68-72.

6. Артеменко Н. А., Белогуров С. В. Об особенностях организации процесса формирования информационной компетентности будущего специалиста // Научно-педагогическое обозрение (Pedagogical Review). 2014. Вып. 1 (3). С. 13-18.

7. Лаптев В. В., Рыжова Н. И., Швецкий М. В. Методическая теория обучения информатике. Аспекты фундаментальной подготовки. СПб.: Изд-во СПб. ун-та, 2003. 352 с.

8. Френкель А., Бар-Хиллел И. Основания теории множеств: пер. с англ. М.: Мир, 1966. 555 с.

9. Барендрегт Х. Ламбда-исчисление. Его синтаксис и семантика: пер. с англ. М.: Мир, 1985. 606 с.

10. Хиндли Дж. Р. Комбинаторы и лямбда-исчисление. Краткий обзор // Математическая логика в программировании: сб. ст. 1980-1988 гг.: пер. с англ. М.: Мир, 1991. С. 119-140.

11. Генцен Г. Исследования логических выводов // Математическая теория логического вывода: пер. с нем. М.: Наука, 1967. С. 9-76.

12. Компетентностный подход в педагогическом образовании / под ред. В. А. Козырева, Н. Ф. Радионовой, А. П. Тряпицыной. СПб.: РГПУ им. А. И. Герцена, 2005. 392 с.

Кудрявцева И. А., кандидат педагогических наук, доцент.

Институт компьютерных наук и технологического образования РГПУ им. А. И. Герцена.

Наб. р. Мойки, 48, корп. 2, Санкт-Петербург, Россия, 191186. E-mail: Yarina22@gmail.com.

Материал поступил в редакцию 21.03.2016.

I. A. Kudryavtseva

LOGICAL AND SEMIOTIC ANALYSIS OF THE CONTENT OF STUDYING THE MONOMORPHIC TYPE SYSTEM

The author offers the direction of development of content of training in theoretical programming, which is the science of mathematical models of the concept of "program" and includes the following topics: lambda calculus, type theory, combinators theory, theory of categories. The author carried out a logical and semiotic analysis of the one of the sections of studying theoretical programming "The monomorphic type system X^" (showing dependence of terms on terms). The main emphasis is placed on the methods of solution of the main types of tasks of system with use of the GHC interpreter, containing tools on establishment of existence of an output of the typified X-term and type inference of a X-term. The competences acquired by trainees following the results of study of monomorphic type system are as a result formulated.

Key words: theoretical programming, X-cube, monomorphic type system, logical and semiotic analysis of the content, Curry-Howard isomorphism, minimum propositional logic (Prop).

References

1. Pierce B. C. Types and programming languages. The MIT Press, Cambridge, Massachusetts, London, England, 2002. 645 p. (Russ. ed.: Pirs B. Tipy vyazykakhprogrammirovaniya:per. s angl. Moscow, Lyambda press: Dobrosvet Publ., 2012. 656 p.).

2. Barendregt H. Lambda calculi with types. Handbook of logic in computer science. Oxford University Press, vol. 2, 1993.

3. Dowek G., Levy J.-J. Introduction to the Theory of Programming Languages. Springer-Verlag London Limited, 2011. 108 p. (Russ. ed.: Dovek Zh., Levi Zh.-Zh. Vvedeniye v teoriyu yazykovprogrammirovaniya: per. s angl. Moscow, DMK Press, 2013. 134 p.).

4. Mitchell John C. Foundations for Programming Languages. The MIT Press, Cambridge, Massachusetts, London, England, 1996, 854 p. (Russ. ed.: Mitchell Dzh. Osnovaniya yazykov programmirovaniya. Moscow, Izhevsk, NIC "Regulyarnaya i khaoticheskaya dinamika" Publ., 2010. 720 p.).

5. Vekovtseva T. A. Sistema sodeystviya professoinal'nomu samorazvitiyu prepodavatelya vuza [The scheme of assistance in professional self-development of university teachers]. Nauchno-pedagogicheskoye obozreniye - Pedagogical Review, 2014, vol. 2 (4), pp. 68-72 (in Russian).

6. Artemenko N. A., Belogurov S. V. Ob osobennostyakh organizatsii protsessa formirovaniya informatsionnoy kompetentnosti budushchego spetsialista [Some features of the organization process of formation of information competence of the future expert]. Nauchno-pedagogicheskoye obozreniye - Pedagogical Review, 2014, vol. 1 (3), pp. 13-18 (in Russian).

7. Laptev V. V., Ryzhova N. I., Shvetskiy M. V. Metodicheskaya teoriya obucheniya informatike. Aspekty fundamental'noy podgotovki [Methodical theory of learning to computer science. Aspects of fundamental preparation]. St. Petersburg, S.-Peterb. un-t Publ., 2003. 352 p. (in Russian).

8. Fraenkel A. A., Bar-Hillel Y. Foundations of set theoty. North-holland publishing company, Amsterdam, 1958. 412 p.

9. Barendregt H. The lambda calculus, its syntax and semantics (studies in logic and the foundations of mathematics). North-Holland, 1984. 654 p. (Russ. ed.: Barendregt H. Lambda-ischisleniye. Ego sintaksis isemantika:per. s angl. Moscow, Mir Publ., 1985. 606 p.).

10. Hindley J. R. Combinators and lambda-calculus, a short outline. Combinators and functional programming languages, Thirteenth spring school of the LITP Val d'Ajol, France, May 6-10, 1985 Proceedings, 1986. Pp. 104-122. DOI: 10.1007/3-540-17184-3_42. (Rus. ed.: Khindli Dzh.R. Kombinatory i lyambda-ischisleniye. Kratkiy obzor. Matematicheskayalogika vprogrammirovanii: sb. statey 1980-1988 gg.:per. s angl. Moscow, Mir Publ., 1991. Pp. 119-140).

11. Gentzen G. Untersuchungen uber das logische Schliessen. Mathematische Zeitschriff. 1935. (Rus. ed.: Gentsen G. Issledovaniya logicheskikh vyvodov. Matematicheskaya teoriya logicheskogo vyvoda: per. s nem. Moscow, Nauka Publ., 1967. Pp. 9-76).

12. Kompetentnostnyy podkhod v pedagogicheskom obrazovanii [Competence-based approach in pedagogical education: Collective monograph]. Under the editorship of V. A. Kozyrev, N. F. Radionova, A. P. Tryapichyna. St. Petersburg, Herzen State Pedagogical University Publ., 2005. 392 p. (in Russian).

Kudryavtseva I. A.

Herzen State Pedagogical University of Russia.

Nab. r. Moyka, 48, korp. 2, St. Petersburg, Russia, 191186. E-mail: Yarina22@gmail.com.