Generated with formalize.py against Qwen (qwen-max via DashScope), then hand-fixed
before pushing, since these classes of bug pass elaboration but are still wrong and
check_statements.py can't catch them without running Lean:
- goodman-1-6-2 split into 4 separate theorems (1-6-2-a..d): the model's single
merged statement had an operator-precedence bug (missing parens around an
implicit right-associated AND after OR) that silently scoped 3 of the book's 4
independent claims inside the wrong disjunct.
- goodman-1-6-1: dropped two vacuous "x + y : Nat is a Nat" clauses that confused
Lean's type membership with set membership (element-of Nat on already-Nat-typed
variables) and are automatically true by typing anyway.
- goodman-1-6-9: swapped Mathlib's pointwise Set multiplication (x * I, which needs
'open scoped Pointwise' and is easy to get subtly wrong) for the equivalent
elementwise statement.
- goodman-1-6-13: replaced a misuse of min (a 2-argument function) applied to a Set
with Mathlib's IsLeast predicate, matching what "least element" means in
Int.gcd's characterization.
- goodman-1-6-23: fixed Matrix index types (Fin n, not a bare Nat) and replaced an
illegal literal '...' row with Matrix.vecMul; verified against the book's raw
text that the n-by-n unimodular-matrix formulation is faithful, not a model
invention.
textbook/goodman-1.6.raw.jsonl keeps the unedited model output for reference. The
remaining 13 statements are unedited and still need a real Lean elaboration pass
(check_statements.py) plus a provability run (lean-bench) on a Mathlib-backed
project -- neither ran here since this sandbox has no Lean.
- extract_section.py: slice a book section out of a pdftotext -layout dump and
list its labeled Theorem/Proposition/Lemma/Corollary/Definition items.
- formalize.py: LLM-formalize a section into Lean 4 candidate statements
(preferring Mathlib vocabulary) plus a definitions manifest.
- check_statements.py: elaboration-only sanity check against a real
Mathlib-backed Lean project (must run outside the Cowork sandbox, which has
no Lean toolchain and can't run macOS binaries anyway).
- build_library.py: assemble solved lean-bench results into a reusable .lean
file, reusing each winning proof verbatim.
- llm.py: standalone OpenAI-compatible chat client + .env loader, kept
independent of lean_agent so this pipeline works without it installed.
- Source PDFs and raw/layout text dumps are gitignored (copyrighted material);
only code and the final short Lean statement datasets are tracked.