Clean Urban Transport for Europe
- 1 year ago
- 0
- 0
Lean — инструмент интерактивного доказательства теорем . Основан на исчислении конструкций с индуктивными типами. Имеет открытый исходный код , размещенный на GitHub . Проект Lean был запущен Леонардо де Моурой в Microsoft Research в 2013 году .
Lean имеет интерфейс, который отличает его от других интерактивных средств доказательства теорем. Lean может быть скомпилирован на JavaScript и доступен в веб-браузере . Он имеет встроенную поддержку символов Юникода . (Они могут быть набраны с использованием последовательностей, подобных применяемым в системе LaTeX , таких как "\times" для "×".) Lean также имеет обширную поддержку метапрограммирования .
Lean привлек внимание математиков Томаса Хейлза и Кевина Базарда. Хейлз использует его для своего проекта «formalabstracts» . Базард использует его для проекта Xena Одна из целей проекта Xena — переписать все теоремы и доказательства в учебной программе по математике для студентов Имперского колледжа Лондона .
В рамках проекта Xena формализовано сложное доказательство из области , развиваемой Петером Шольце .
Определение натуральных чисел:
inductive nat : Type
| zero : nat
| succ : nat → nat
Определение операции сложения для натуральных чисел:
definition add : nat → nat → nat
| n zero := n
| n (succ m) := succ(add n m)
Пример простого доказательства.
theorem and_swap : p ∧ q → q ∧ p :=
assume h1 : p ∧ q,
⟨h1.right, h1.left⟩
Это же доказательство:
theorem and_swap (p q : Prop) : p ∧ q → q ∧ p :=
begin
assume h : (p ∧ q), -- assume p ∧ q is true
cases h, -- extract the individual propositions from the conjunction
split, -- split the goal conjunction into two cases: prove p and prove q separately
repeat { assumption }
end