— Ch. 1 · Origins And Evolution —
Lean (proof assistant).
~5 min read · Ch. 1 of 5
The year 2013 marked the launch of a new tool called Lean. Brazilian computer scientist Leonardo de Moura developed this system while working at Microsoft Research. Early versions known as Lean 1 and 2 remained experimental throughout their short lifespans. These initial releases featured support for homotopy type theory foundations that developers later removed from the core language. A significant shift occurred on the 20th of January 2017 when version 3 arrived as the first moderately stable release. This iteration relied heavily on C++ code with some features written directly in the Lean language itself. Version 3.4.2 became the final update before official end-of-life status took effect. Community members continued development through unofficial builds reaching number 3.51.1 during the transition period. The landscape changed dramatically in 2021 with the arrival of Lean 4. This major release represented a complete reimplementation capable of generating executable C code. Developers gained the ability to modify frontend components without touching underlying C++ source files since all parts now existed within Lean. The project adopted C++17 standards to ensure modern compiler compatibility. In 2023 the nonprofit Lean Focused Research Organization formed to improve scalability and usability goals. Recognition followed quickly when the ACM SIGPLAN Programming Languages Software Award reached Gabriel Ebner, Soonho Kong, Leo de Moura and Sebastian Ullrich in 2025.
Technical Architecture
The system rests upon the calculus of constructions augmented by inductive types. Early iterations mixed C++ implementation with self-written features creating complex maintenance challenges for developers. Version 3 required direct modification of C++ code to alter core system behavior or add new functionality. A fundamental architectural shift happened in 2021 when engineers rebuilt the entire prover from scratch using Lean as the primary language. This decision allowed users to override key parts of the system without accessing low-level C++ sources. The new architecture supports efficient domain-specific automation through generated C code compilation pipelines. Memory management procedures received significant improvements over previous versions alongside enhanced type class synthesis capabilities. Macro systems became available to handle complex syntactic transformations during proof construction. The transition to version 4 broke backward compatibility entirely forcing existing libraries to undergo complete rewriting. Developers gained control over frontend interfaces previously locked behind C++ barriers. The project now runs on C++17 standards ensuring modern compiler support across platforms. Community members developed unofficial patches reaching version 3.51.1 while waiting for official updates. These interim builds kept the ecosystem alive during the multi-year development cycle. The final release enabled independent modification of all system components through pure Lean code.