theorem_demo.lean
/-!
Lean 4 proof automation via SMT.
-/
import Blaster.Tactic
namespace Demo
end Demo
TERMINAL
scroll to explore

Stop writing proofs.
Blast them.

Feed Blaster a theorem. Get a proof, or a counterexample that shows exactly why it's wrong.

how it works

Lean → Optimizer → SMT → Result

Blaster doesn't call Z3 directly. It first simplifies your goal through ~40 algebraic rewriting passes, then emits a minimal SMT-Lib 2 query.

Lean Goal
x > 0 (if x > 0 then x + 1 else x - 1) > 0
your theorem
Optimizer
x > 0 x + 1 > 0
branch eliminated via hypothesis
SMT-Lib 2
(assert (not (=> (< 0 x) (< -1 x))))
minimal query to Z3
Z3
unsat
unsatisfiable → valid
Result
✓ Valid · 4ms
goal closed


getting started

Add Blaster to your project

lakefile.lean
require Blaster from git "https://github.com/input-output-hk/Lean-blaster" @ "main"
usage
import Blaster.Tactic theorem add_comm (a b : Nat) : a + b = b + a := by blaster -- ✓ Valid · 8ms