The Lean Theorem Prover (System Description)
read more
Citations
Solving Quantitative Reasoning Problems with Language Models
Hammer for Coq: Automation for Dependent Type Theory
The Lean mathematical library
Leveraging rust types for modular specification and verification
A metaprogramming framework for formal verification
References
Isabelle/HOL: A Proof Assistant for Higher-Order Logic
Intuitionistic type theory
The calculus of constructions
The Coq proof assistant : reference manual, version 6.1
Related Papers (5)
Frequently Asked Questions (7)
Q2. What is the main purpose of Lean?
When used as a proof assistant, Lean provides a powerful elaborator that can handle higher-order unification, definitional reductions, coercions, overloading, and type classes, in an integrated way.
Q3. What is the elaborator’s use of ad-hoc overloading?
Lean’s elaborator also supports ad-hoc overloading; for example, the authors can use notation a + b for addition on the natural numbers, integers, and additive groups simultaneously.
Q4. What is the standard library for Lean?
Lean also contains a 3 http://leanprover.github.iolibrary tailored for Homotopy Type Theory (HoTT) [23], using a predicative and proof relevant instantiation of the kernel.
Q5. What is the syntax for lambda abstractions?
show p, from t does nothing more thanannotate t with its expected type p. Lean also provides alternative Mizar/Isarinspired syntax for lambda abstractions: assume H : p, t and take x : A, t. Calculational proofs, which begin with the keyword calc, are a convenient notation for chaining intermediate results that are meant to be composed by basic principles such as the transitivity of equality.
Q6. What is the standard for proving a mathematical theorem?
This sets a very high standard: every rule of inference and every step of a calculation has to be justified by appealing to prior definitions and theorems, all the way down to basic axioms and rules.
Q7. What is the common way to infer a type?
It is fairly routine to infer the type A given a : A. Often the elaborator needs to infer an element of a Π-type, which constitutes a higher-order problem.