Programming in Lean¶

  • 1. Introduction
  • 2. Types and Terms
    • 2.1. Some Basic Types
    • 2.2. Defining Functions
    • 2.3. Defining New Types
    • 2.4. Records and Structures
    • 2.5. Mathematics and Computation
  • 3. Basic Programming
    • 3.1. Evaluating Expressions
    • 3.2. Recursive Definitions
    • 3.3. Inhabited Types, Subtypes, and Option Types
    • 3.4. Input and Output
  • 4. Monads
    • 4.1. The option monad
    • 4.2. The list monad
    • 4.3. The state monad
    • 4.4. The IO monad
    • 4.5. Related type classes
  • 5. Writing Tactics
    • 5.1. A First Look at the Tactic Monad
    • 5.2. Names and Expressions
    • 5.3. Examples
    • 5.4. Reduction
    • 5.5. Metavariables and Unification
  • 6. Writing Automation
    • 6.1. A Tableau Prover for Classical Propositional Logic

Programming in Lean

  • 1. Introduction
  • 2. Types and Terms
  • 3. Basic Programming
  • 4. Monads
  • 5. Writing Tactics
  • 6. Writing Automation

  • PDF version
  • Lean Home

Quick search

©2017, Jeremy Avigad and Simon Hudon. | Powered by Sphinx 1.8.4 & Alabaster 0.7.12 | Page source