/tt2019

tt2019

Primary LanguageTeX

Курс теории типов, КТ, осень 2019

Материалы

Лекция 1

Лямбда-исчисление, базовые определения, примеры

  • Немного об истории
  • Лямбда-выражения, синтаксис
  • Альфа-эквивалентность, бета-редекс, бета-редукция
  • Булевские выражения, чёрчевские нумералы

Где почитать

Лекция 2

Теорема Чёрча-Россера, Y-комбинатор

  • Бета-редуцируемость и параллельная бета-редукция
  • Теорема Чёрча-Россера
  • Комбинаторы: определение и примеры (I,S,K)
  • Рекурсия и Y-комбинаторы
  • Ленивые вычисления, нормальный порядок редукции

Где почитать

Лекция 3

Просто типизированное лямбда-исчисление

  • Почему бестиповое лямбда-исчисление не подходит в качестве исчисления высказываний
  • Импликационный фрагмент интуиционистского исчисления высказываний
  • Просто типизированное лямбда-исчисление по Карри
  • Исчисление по Чёрчу
  • Комбинаторы, базис SK

Где почитать

Лекция 4

Свойства просто типизированного лямбда-исчисления

  • Теорема о полноте импликационного фрагмента ИИВ
  • Сильная нормализация просто типизированного лямбда-исчисления
  • Класс вычислимых в просто типизированном лямбда-исчислении функций (формулировка)
  • Три задачи: обитаемость типа, вывод (реконструкция) типа, проверка типа

Где почитать

Лекция 5

Алгоритм унификации, вывод типа

  • Алгебраические термы, задача унификации
  • Алгоритм унификации
  • Алгоритм вывода типов в просто типизированном лямбда-исчислении

Где почитать

Лекция 6

Увеличение выразительности языка

  • Интуиционистское исчисление высказываний (связки: конъюнкция, дизъюнкция, ложь) и соответствующие новым связкам конструкции в лямбда-исчислении.
  • Логика второго порядка
  • Выразимость всех связок через импликацию и квантор всеобщности
  • Система F

Где почитать

Лекция 7

Экзистенциальные типы

  • Экзистенциальные типы

Где почитать

Лекция 8

Типовая система Хиндли-Милнера

  • Ранг типа
  • Типы и типовые схемы, уточнение/обобщение типов, конструкция let.
  • Типовая система Хиндли-Милнера.

Где почитать

Лекция 9

Алгоритм W

  • Алгоритм W
  • Добавление Y-комбинатора в типовую систему
  • Экви- и изорекурсивные типы

Где почитать

Лекция 10

Обобщённые типовые системы

  • Обобщённая типовая система
  • Зависимые типы
  • Лямбда-куб

Где почитать

  • Henk Barendregt, An Introduction to Generalized Type Systems (1991) // Journal of Functional Programming, April 1991, 1(2):125-154 http://homepages.inf.ed.ac.uk/wadler/papers/barendregt/pure-type-systems.pdf
  • Бенджамин Пирс, Типы в языках программирования. Издательство «Лямбда пресс» & «Добросвет», Москва, 2011

Лекция 11

Введение в язык Идрис

  • Общий синтаксис (определение функций, алгебраических типов)
  • Разбор конструкций языка на примере функции с зависимым типом (printf)

Где почитать

Лекция 12

Доказательства в Идрис

  • Равенство в Idris, конструктор Refl
  • Конструкции replace и rewrite

Где почитать