Математические модели вычислений

Гомотопическая теория типов

Высшие индуктивные типы

https://maxxk.github.io/formal-models/

Типы идентичности

Ранее для Системы Fω было дано определение типа равенства между двумя типами:
Eq = λ (α β : *). ∀ (φ : * ⇒ *). φ α → φ β

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

Формация

Γ ⊦ X : Type    Γ ⊦ a, b : X
Γ ⊦ a =X b : Type

Введение (рефлексивность)

Γ ⊦ X : Type    Γ ⊦ a : X
Γ ⊦ refl a : a =X b

Перенос вдоль идентичности

Терм зависимого удаления типа идентичности (определение C. Paulin-Möhring)

Γ ⊦ X : Type    Γ ⊦ a, b : X    Γ, c : X, β : a =X c ⊦ C : Type    Γ ⊦ x : C(a, refl a)    Γ ⊦ α : a =X b
Γ ⊦ J(X, a, b, α, C, x) : C(b, α)

X — тип равных элементов

a, b — равные элементы

C — «структура» переноса.

x — исходный элемент

α — равенство, вдоль которого выполняется перенос

Есть альтернативное определение, в котором C не «привязан» к точке a (определение P. Martin-Löf):
Γ, x : X, y : X, α : x =X y ⊦ C : Type

Тип идентичности в Coq/Agda

В системах с индексированными индуктивными типами, тип идентичности можно представить как индуктивный:

Inductive eq (A:Type) (x:A) : A -> Prop :=
    eq_refl : eq A x x.

Использовать терм удаления можно двумя способами:

  • в явном виде с помощью конструкции match
eq_sym = fun (A : Type) (x y : A) (H : x = y) =>
  match H in (_ = y0) return (y0 = x)
  with
  | eq_refl => eq_refl
  end.
  • в интерактивном режиме с помощью тактики rewrite (на следующей странице)

Пример тактики rewrite в Coq

Пример из Y. Bertot. Coq in a Hurry. https://cel.archives-ouvertes.fr/inria-00001173v5/document

Require Import Coq.Arith.Mult.

Lemma example6 : forall x y, (x + y) * (x + y) = x*x + 2*x*y + y*y.
intros x y.
SearchRewrite (_ * (_ + _)).
rewrite mult_plus_distr_l.
rewrite mult_plus_distr_r.
rewrite mult_plus_distr_r.
rewrite plus_assoc.
rewrite <- plus_assoc with (n := x * x).
rewrite mult_comm with (n:= y) (m:=x).
pattern (x * y) at 1; rewrite <- mult_1_l.
rewrite <- mult_succ_l.
rewrite mult_assoc.
reflexivity.
Qed.

Print example6.

Структура типа идентичности

Из каких элементов могут состоять типы идентичности?

  1. Только из рефлексивности (экстензиональная теория типов)
  • по определению
Γ ⊦ p : a =X b
Γ ⊦ a ≡ b
  • уникальность доказательств идентичности

UIP : ∀ (A : Type) (x y : A) (p q : x =A y) . p =x=y q

  • аксиома K
  • сильное сопоставление с образцом
  • функциональная экстензиональность (более слабое свойство) — поточечное равенство функций:
    ∀ x, f(x) =B g(x) → f =A→B g
  1. Могут быть какие-то неканонические элементы (интензиональная теория типов)

  2. Можно вывести явную структуру (наблюдательная теория типов)

Altenkirch T., McBride C., Swierstra W. Observational Equality, Now! // Proceedings of the ACM Workshop Programming Languages meets Program Verification, PLPV 2007, Freiburg, Germany, October 5, 2007 / ed. Stump A., Xi H. 2007. P. 57–68.

Гомотопическая теория типов

— развитие интензиональной теории типов, которое устанавливает соответствие между термами теории типов и объектами теории гомотопий.

Интензиональная теория типов Гомотопическая теория типов
тип A топологическое пространство A
терм a точка a
суждение a : A a ∈ A
Π(x : A).B(x) расслоение B → A
тип идентичности p : a =A b путь p : a ↦ b
α : p =a=b q гомотопия α : p ⇒ q

Аксиома унивалентности

Понятие эквивалентных типов:

f : A → B    g : B → A

f(g(y)) =A y    g(f(x)) =A x (при условии функциональной экстензиональности)

Из идентичности следует эквивалентность:

IdEq : (A = B) → Equiv(A, B)

Аксиома унивалентности утверждает, что идентичность эквивалентна эквивалентности:

Equiv(A=B, Equiv(A, B))

Таким образом, по эквивалентности можно обратной функцией получить идентичность («изоморфные типы равны»).

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

h-уровни типов

— уровень, определяющий, насколько сложную структуру имеет тип идентичности для элементов данного типа.

«Утверждения» — «-1» h-уровень (все элементы-доказательства утверждений равны, пространства утверждений эквивалентны)
«Множества» — «0» h-уровень (равенство элементов множества — это утверждение, выполняется аксиома UIP)
...
«k-й» h-уровень — равенство элементов типа — это элемент типа k-1-го h-уровня.

Программирование с типами идентичности

— в некотором смысле, программирование с обобщёнными типами.

  • список List A с двумя конструкторами (Nil, Cons) эквивалентен вектору с известной длиной Σ(length : ℕ).Vec A length. С использованием аксиомы унивалентности можно получить реализации произвольных функций для вектора из таких реализаций для списка простым применением терма переноса вдоль идентичности.

  • доказуемо корректное параллельное программирование с ассоциативностью:

reduce F t0 [t1, t2, t3, t4]

Высшие индуктивные типы

— типы, в которых можно задавать конструкторы не только для элементов, но и для других типов идентичности.

Система контроля версий как высший индуктивный тип

Angiuli C. et al. Homotopical patch theory // Proceedings of the 19th ACM SIGPLAN international conference on Functional programming. ACM, 2014. P. 243–256.

Теория категорий

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

https://maxxk.github.io/formal-models-2015/

F. William Lawvere, Stephen H. Schaunel. Conceptual Mathematics: A first introduction to categories. Cambridge University Press, 1997. 358 P.

Категория

Примеры категорий

Коммутативная диаграмма

Функтор

Инициальность и терминальность

F-алгебры

Индуктивные и коиндуктивные типы в теории категорий

Дуализм

Произведение и сумма

Высшие категории и гомотопическая теория типов

Литература

  1. Homotopy Type Theory: Univalent Foundations of Mathematics. — Princeton: Institute for Advanced Study, 2013. — 603 p. https://homotopytypetheory.org/book/

  2. F. William Lawvere, Stephen H. Schanuel. Conceptual Mathematics: A First Introduction to Categories. Cambridge University Press — 1997. — 374 p.

Задачи

Задача 10.1 *
Построить термы, соответствующие доказательствам свойств симметричности и транзитивности равенства с использованием терма зависимого удаления типов идентичности J.
Задача 10.2 *
Построить терм IdEq, преобразующий идентичность в эквивалентность.
Задача 10.3 ***
Предложить другие возможные приложения высших индуктивных типов в программировании (требования аналогично задаче 9.1).

За «1*» принимаются решения упражнений из книги Homotopy Type Theory, начиная со второй главы.