Aufbau is an experimental Metamath Zero (MM0/MMB) verifier and proof compiler written in Zig. The compiler translates MM0 source and Aufbau proof scripts to MMB; the verifier checks the resulting MM0/MMB pair.
Try the web demo.
Aufbau requires Zig 0.15.2.
git clone --recurse-submodules https://github.com/gleachkr/Aufbau.git
cd aufbau
zig build -Doptimize=ReleaseFastThe native binaries are written to zig-out/bin/:
abc— proof compiler and language servermm0-zig— MMB verifier
Compile a proof:
abc compile INPUT.mm0 INPUT.auf OUTPUT.mmbVerify it:
mm0-zig OUTPUT.mmb < INPUT.mm0WebAssembly and browser packages are published on npm:
Each package README contains a minimal usage example.
A manual with some interactive examples is available at https://grahamlk.me/Aufbau/manual
CHANGELOG.md— release history and unreleased changesARCHITECTURE.md— structure and trust boundarydocs/proof.md— Aufbau proof-script formatdocs/rewrite_system.md— rewrite metadatadocs/transparent_defs.md— transparent defsdocs/view_recover.md— view and recovery metadatadocs/fresh_binders.md— fresh bindersdocs/holes.md— proof-side holes
The canonical MM0 and MMB specifications are maintained by the Metamath Zero project.
zig build test -Doptimize=ReleaseFastFull integration coverage also requires Node, npm, mm0-rs, mm0-c, and
initialized repository submodules.
Aufbau is pre-1.0 software. The verifier is usable, and the compiler supports its documented proof format, but APIs and proof syntax may still change.
Licensed under the Apache License 2.0.