← All papers

The Lean Theorem Prover (System Description)

Leonardo de Moura, Soonho Kong, Jeremy Avigad, Floris van Doorn, Jakob von Raumer

cs.LO Aug 1, 2015 · v1
Introduces the Lean theorem prover system based on dependent type theory with inductive types.
Lean is an open-source theorem prover and programming language being developed at Microsoft Research. It is based on dependent type theory with a cumulative hierarchy of non-cumulative universes, and supports inductive types, type classes, and a tactic framework for proof automation. This paper describes the system architecture, its kernel, elaboration engine, and proof automation infrastructure.

Theorem provers need a combination of expressive type theory, efficient proof automation, and a practical programming language, but existing systems typically compromise on one or more of these aspects.

Lean is designed as both a theorem prover and programming language based on dependent type theory with a cumulative hierarchy of non-cumulative universes. It supports inductive types, type classes for ad-hoc polymorphism, and a tactic framework for proof automation. The paper describes the system architecture including the kernel, elaboration engine, and proof automation infrastructure.

Lean is released as an open-source system developed at Microsoft Research, providing a unified environment for formal verification and functional programming with a small trusted kernel and extensible automation.