Лин (помощник по доказательству)
Парадигма | Функциональное программирование , Императивное программирование |
---|---|
Разработчик | Бережливое ФРО |
Впервые появился | 2013 |
Стабильная версия | 4.7.0
/ 3 апреля 2024 г |
Предварительный выпуск | 4.8.0-rc1
/ 2 мая 2024 г |
Дисциплина набора текста | Статический , сильный , предполагаемый |
Язык реализации | Наклонять , С++ |
ТЫ | Кросс-платформенный |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | лен-ланг |
Под влиянием | |
МЛ Кок Хаскелл |
Lean — это помощник доказательства и функциональный язык программирования . [1] В его основе лежит расчет конструкций индуктивного типа . Это проект с открытым исходным кодом , размещенный на GitHub . Он был разработан в основном Леонардо де Моурой, когда он работал в Microsoft Research , а теперь и в Amazon Web Services , и за свою историю в него внесли значительный вклад другие соавторы и сотрудники. В настоящее время разработку поддерживает некоммерческая организация Lean Focused Research Organization (FRO) .
История [ править ]
Lean был запущен Леонардо де Моура из Microsoft Research в 2013 году. [2] Первоначальные версии языка, позже известные как Lean 1 и 2, были экспериментальными и содержали такие функции, как поддержка теории гомотопических типов , основанной на основах, от которых позже отказались.
Lean 3 (впервые выпущенная 20 января 2017 г.) была первой умеренно стабильной версией Lean. Он был реализован в основном на C++, а некоторые функции были написаны на самом Lean. После версии 3.4.2 срок службы Lean 3 был официально прекращен, а разработка Lean 4 началась. В этот промежуточный период члены сообщества Lean разработали и выпустили неофициальные версии до 3.51.1.
В 2021 году был выпущен Lean 4, который представлял собой повторную реализацию средства доказательства теорем Lean, способного создавать код C , который затем компилируется, что позволяет разработать эффективную автоматизацию для конкретной предметной области. [3] Lean 4 также содержит систему макросов и улучшенные процедуры синтеза классов типов и управления памятью по сравнению с предыдущей версией. Еще одним преимуществом по сравнению с Lean 3 является возможность не затрагивать код C++ для изменения внешнего интерфейса и других ключевых частей базовой системы, поскольку теперь все они реализованы в Lean и доступны конечному пользователю для переопределения при необходимости. [ нужна цитата ]
Lean 4 не имеет обратной совместимости с Lean 3. [4]
В 2023 году была создана Lean FRO с целью улучшения масштабируемости и удобства использования языка, а также реализации автоматизации доказательства . [5]
Обзор [ править ]
Библиотеки [ править ]
Официальный пакет Lean включает стандартную библиотеку std4 , которая реализует общие структуры данных , которые можно использовать как для математических исследований, так и для более традиционной разработки программного обеспечения. [6]
В 2017 году начался поддерживаемый сообществом проект по разработке математической библиотеки бережливой библиотеки с целью оцифровать как больше чистой математики в одной большой сплоченной библиотеке, вплоть до математики исследовательского уровня. можно [7] [8] По состоянию на ноябрь 2023 года mathlib формализовал более 127 000 теорем и 70 000 определений в Lean. [9]
Интеграция редакторов [ править ]
Lean интегрируется с: [10]
Взаимодействие осуществляется через клиентское расширение и сервер протокола языкового сервера .
Он имеет встроенную поддержку символов Unicode , которые можно вводить с использованием последовательностей, подобных LaTeX , например «\times» вместо «×». Lean также может быть скомпилирован в JavaScript и доступен в веб-браузере, а также имеет обширную поддержку метапрограммирования .
Примеры (бережливое производство 4) [ править ]
Натуральные числа можно определить как индуктивный тип . Это определение основано на аксиомах Пеано и гласит, что каждое натуральное число либо равно нулю, либо является потомком некоторого другого натурального числа.
индуктивный Nat : Тип
| ноль : Нат
| успех : Нат → Нат
Сложение натуральных чисел можно определить рекурсивно , используя сопоставление с образцом .
def Nat.add : Nat → Nat → Nat
| n , Nat.zero => n -- n + 0 = n
| n , Nat.succ m => Nat.succ ( Nat.add n m ) -- n + succ(m) = succ(n + m)
Это простое доказательство в бережливом режиме с использованием тактического режима:
теорема and_swap ( p q : Prop ) : p ∧ q → q ∧ p := by
intro h — предположим, что p ∧ q с доказательством h, цель — q ∧ p,
применим And.intro — цель разделена на две подцели , одна — q, а другая — p
· точная h.right — первая подцель — это в точности правая часть h: p ∧ q
· точная h.left — вторая подцель — это в точности левая часть h: p ∧ д
Это же доказательство в терминальном режиме:
теорема and_swap ( p q : Prop ) : p ∧ q → q ∧ p :=
fun ⟨ hp , hq ⟩ => ⟨ hq , hp ⟩
Использование [ править ]
Математика [ править ]
Бережливое производство привлекло внимание таких математиков, как Томас Хейлз. [11] и Кевин Баззард . [12] Хейлз использует его для своего проекта Formal Abstracts. [13] Баззард использует его для проекта Зена. [14] Одна из целей проекта «Зена» — переписать каждую теорему и доказательство в учебной программе по математике для студентов Имперского колледжа Лондона в Lean.
В 2021 году группа исследователей использовала Lean для проверки правильности доказательства Питера Шольце в области сокращенной математики . Проект привлек внимание благодаря формализации результатов на переднем крае математических исследований. [15] В 2023 году Теренс Тао использовал Lean, чтобы формализовать доказательство полиномиальной гипотезы Фреймана-Рузсы (PFR), результат, опубликованный Тао и его сотрудниками в том же году. [16]
Искусственный интеллект [ править ]
В 2022 году OpenAI создала нейронных сетей средство доказательства теорем для Lean на основе , которое использовало языковую модель для генерации доказательств различных олимпиадных задач на уровне средней школы. [17]
Позже в том же году Meta AI создала модель ИИ, которая решила 10 Международной математической олимпиады задач ; эта модель доступна для публичного использования в среде Lean. [18]
См. также [ править ]
Ссылки [ править ]
- ^ https://pp.ipd.kit.edu/uploads/publikationen/demoura21lean4.pdf
- ^ "О" . Бережливый язык . Проверено 13 марта 2024 г.
- ^ Моура, Леонардо де; Ульрих, Себастьян (2021). Платцер, Андре; Сатклифф, Джефф (ред.). Автоматизированный вычет -- CADE 28 . Международное издательство Спрингер. стр. 625–635. дои : 10.1007/978-3-030-79876-5_37 . ISBN 978-3-030-79876-5 . S2CID 235800962 . Проверено 24 марта 2023 г.
- ^ «Значительные изменения по сравнению с Lean 3» . Бережливое руководство . Проверено 24 марта 2023 г.
- ^ «Миссия» . Наклониться ФРО . 25 июля 2023 г. Проверено 14 марта 2024 г.
- ^ "стд4" . Гитхаб . Проверено 13 марта 2024 г.
- ^ «Создание математической библиотеки будущего» . Журнал Кванта . Архивировано из оригинала 2 октября 2020 года.
- ^ «Бережливое сообщество» . LeanProver-community.github.io . Проверено 24 октября 2023 г.
- ^ «Статистика Mathlib» . LeanProver-community.github.io . Проверено 1 ноября 2023 г.
- ^ «Установка Lean 4 в Linux» . LeanProver-community.github.io . Проверено 24 октября 2023 г.
- ^ Хейлз, Томас (18 сентября 2018 г.). «Обзор средства доказательства теорем бережливого производства» . Джиггер Вит . Архивировано из оригинала 21 ноября 2020 года.
- ^ Баззард, Кевин. «Будущее математики?» (PDF) . Проверено 6 октября 2020 г.
- ^ «Формальные рефераты» . Гитхаб .
- ^ «Что такое проект Зена?» . Зена . 8 мая 2019 г.
- ^ Хартнетт, Кевин (28 июля 2021 г.). «Помощник по доказательству переходит в высшую математику» . Журнал Кванта . Архивировано из оригинала 2 января 2022 года.
- ^ Сломан, Лейла (06 декабря 2023 г.). « Команда математики доказывает критическую связь между сложением и множествами» . Журнал Кванта . Проверено 7 декабря 2023 г.
- ^ «Решение (некоторых) формальных олимпиадных задач по математике» . ОпенАИ . 2 февраля 2022 г. . Проверено 13 марта 2024 г.
- ^ «Обучение ИИ продвинутым математическим рассуждениям» . Мета ИИ . 3 ноября 2022 г. . Проверено 13 марта 2024 г.
Внешние ссылки [ править ]
- Языки программирования, созданные в 2013 году.
- Помощники по доказательствам
- Зависимо типизированные языки
- Образовательное математическое программное обеспечение
- Функциональные языки
- Бесплатное программное обеспечение с открытым исходным кодом
- Бесплатное программное обеспечение, написанное на C++.
- бесплатное программное обеспечение Майкрософт
- Языки программирования Майкрософт
- Microsoft Исследования
- Программное обеспечение, использующее лицензию Apache
- Бесплатное математическое программное обеспечение
- Программные системы для доказательства теорем