UlamLib is a public starter library of high-value formalization targets for UlamAI Prover. It pairs theorem-dense LaTeX notes with matching Lean scaffolds so contributors can clone the repo and start formalizing something useful immediately.
This repository has two audiences:
- users who want prepared targets to formalize with UlamAI
- contributors who want to improve those targets, notes, and scaffolds
If you are new and do not know where to start, read START_HERE.md first.
The focus is not "the biggest famous book." The focus is compact reusable Lean packages that fit UlamAI's current strengths:
- LaTeX to Lean formalization
- segmentation for longer
.texfiles - per-lemma LaTeX snippet injection
- local declaration retrieval during proof search
That makes medium-size, theorem-dense notes a better target than one giant textbook.
notes/*.tex: blueprint-style notes intended to be formalized withulam formalizeUlamLib/**/*.lean: split Lean scaffolds grouped by reusable submodulesTRACKS.md: the backlog, track decomposition, and milestone structureSTART_HERE.md: the beginner-friendly onboarding pathCONTRIBUTING.md: contribution rules and repository conventionsnotes/TEMPLATE.tex: a formalization-first template for adding new targets
notes/
TEMPLATE.tex
RowReduction.tex
MaximalIntegralCurves.tex
StoneWeierstrassC0.tex
ManifoldForms.tex
ProjectiveIncidence.tex
PicardSpec.tex
PicardCohomology.tex
RepresentationSemisimplicity.tex
UlamLib/
LinearAlgebra/RowReduction.lean
LinearAlgebra/RowOp.lean
LinearAlgebra/Echelon.lean
LinearAlgebra/GaussianElimination.lean
LinearAlgebra/RREF.lean
ODE/MaximalIntegralCurves.lean
ODE/Extendability.lean
ODE/MaximalIntegralCurve.lean
ODE/LinearSystems.lean
Analysis/StoneWeierstrassC0.lean
Analysis/StoneWeierstrassC0/Defs.lean
Analysis/StoneWeierstrassC0/Lattice.lean
Analysis/StoneWeierstrassC0/Real.lean
Analysis/StoneWeierstrassC0/Complex.lean
Geometry/ManifoldForms.lean
Geometry/ManifoldForms/Defs.lean
Geometry/ManifoldForms/Wedge.lean
Geometry/ManifoldForms/Pullback.lean
Geometry/ManifoldForms/ExteriorDerivative.lean
Geometry/ManifoldForms/DeRhamComplex.lean
Geometry/ProjectiveIncidence.lean
Geometry/ProjectiveIncidence/Defs.lean
Geometry/ProjectiveIncidence/ProjectiveSubspaces.lean
Geometry/ProjectiveIncidence/Lines.lean
Geometry/ProjectiveIncidence/Axioms.lean
Geometry/ProjectiveIncidence/Maps.lean
AlgebraicGeometry/PicardSpec.lean
AlgebraicGeometry/PicardSpec/Defs.lean
AlgebraicGeometry/PicardSpec/LocalCriterion.lean
AlgebraicGeometry/PicardSpec/Sheafification.lean
AlgebraicGeometry/PicardCohomology.lean
RepresentationTheory/Semisimplicity.lean
This section is for users of the repository. If you want to contribute to the repository itself, you do not need to start by running Ulam locally. Begin with START_HERE.md instead.
Install UlamAI:
brew tap ulamai/ulamai
brew install ulamaiOr install from source:
git clone https://github.com/ulamai/ulamai.git
cd ulamai
./install.shAuthenticate one provider:
ulam auth codex
# or
ulam auth claude
# or
ulam auth geminiBootstrap Lean in this repository:
cd ulamlib
ulam -leanFormalize the showcase starter track:
ulam formalize notes/StoneWeierstrassC0.tex \
--out UlamLib/Analysis/StoneWeierstrassC0/Real.lean \
--segmentFor longer notes, keep segmentation on and preserve artifacts:
ulam formalize notes/ManifoldForms.tex \
--out UlamLib/Geometry/ManifoldForms/Defs.lean \
--segment \
--segment-words 1200 \
--artifacts-dir runs/manifold_forms_defsIf you want an LLM-only loop with Lean diagnostics:
ulam formalize notes/RowReduction.tex \
--out UlamLib/LinearAlgebra/RowOp.lean \
--proof-backend llm \
--lean-backend lsp \
--segmentNotes:
- local declaration retrieval is enabled by default during formalization
--segmentis the default recommendation for every note in this repo- start with Track C, then Track A, before moving to geometry or algebraic geometry targets
- the Track C scaffolds already contain a tiny completed starter theorem cluster
in
UlamLib/Analysis/StoneWeierstrassC0/Real.lean
If this is your first formalization-facing contribution, use this path:
- read START_HERE.md
- choose a small task from TRACKS.md
- change one note or one Lean scaffold
- open a small PR
Good first contributions are things like:
- adding one definition to a scaffold
- adding one or two easy helper lemmas
- tightening assumptions or labels in a note
- splitting an oversized theorem cluster into smaller declarations
Before broadening contributor access, this repo now treats repository hygiene as part of the product:
- TRACKS.md holds the assignable backlog instead of overloading the README
- CONTRIBUTING.md defines naming, scope, and PR rules
- LICENSE makes the contribution terms explicit
.github/ISSUE_TEMPLATEand.github/PULL_REQUEST_TEMPLATE.mdprovide the default collaboration workflow
The notes in this repo are meant to be more than idea sketches. A useful note for UlamAI should have:
- one clear Lean target file
- an ambient assumptions section that fixes notation and hypotheses up front
- labeled definitions and theorems with stable candidate Lean names
- a seed theorem cluster broken into declarations small enough to formalize incrementally
- an explicit dependency order instead of a long proof-heavy narrative
- a clear mapping from note sections to one or more Lean submodules
When adding a new target, start from notes/TEMPLATE.tex and keep the note
definition-first. Large proof essays, overloaded notation, and implicit
hypotheses make formalization harder.
The contributor workflow now lives in CONTRIBUTING.md. The short version is:
- pick an issue or open one from the track-task template
- keep the note blueprint and Lean scaffold aligned
- submit small PRs that land one theorem cluster or one file family at a time
- prefer beginner-sized changes over heroic all-in-one patches
The full track backlog, priorities, and decomposition now live in TRACKS.md.