Lean (asistent de probă)


Lean Theorem Prover

informație
Dezvoltat de Microsoft Research
Prima versiune 2013
Ultima versiune 3.4.2 (18 ianuarie 2019)
Depozit https://github.com/leanprover/lean
Scris in C ++
Mediu inconjurator În browser sau pe mai multe platforme
Limbi Engleză
Tip Asistent de dovadă
Licență Apache 2.0
Site-ul web https://leanprover.github.io

Lean este un asistent de probă și un limbaj de programare . Se bazează pe principiul calculului construcțiilor cu tipuri inductive .

Lean are o serie de caracteristici notabile care îl diferențiază de alte programe de asistență pentru dovezi . Lean poate fi compilat în JavaScript , făcându-l accesibil într-un browser web . Suportă în mod nativ caractere Unicode pentru simboluri matematice, care pot fi introduse folosind comenzi rapide care amintesc de sintaxa LaTeX (de exemplu, „×” se obține tastând „\ times”). De asemenea, este posibil să faceți meta-programare utilizând același limbaj ca și pentru utilizarea convențională. Astfel, dacă utilizatorul dorește să scrie o funcție care dovedește automat anumite teoreme, este posibil să scrieți în Lean o funcție care generează dovezile dorite în Lean.

Lean a atras atenția matematicienilor Thomas Hales și Kevin Buzzard . Hales îl folosește pentru proiectul său Formal Abstracts . Buzzard îl folosește pentru Proiectul Xena , unul dintre obiectivele acestuia fiind de a rescrie în Lean fiecare teoremă și dovadă a programului de matematică de la Imperial College London .

Exemple

Iată cum sunt definite numerele naturale în Lean:

inductive nat : Type | zero : nat | succ : nat nat

Iată definiția adunării pentru numerele întregi:

definition add : nat nat nat | n zero := n | n (succ m) := succ(add n m)

Iată o dovadă simplă în Lean:

theorem and_swap : p q q p := assume h1 : p q, h1.right, h1.left

Iată aceeași dovadă folosind tactici:

theorem and_swap (p q : Prop) : p q q p := begin assume h : (p q), -- on suppose que p ∧ q est vrai cases h, -- on extrait les propositions individuelles de la conjonction split, -- on sépare le but à prouver en deux cas : prouver p et prouver q séparément repeat { assumption } end

Referințe

  1. Hales, „  A Review of the Lean Theorem Prover  ” (accesat la 21 ianuarie 2020 )
  2. Buzzard, „  Viitorul matematicii?  » (Accesat la 21 ianuarie 2020 )

linkuri externe