Represent proof search as state
Rust types represent claims, definitions, subgoals, attempts, and strategy families. A SQLite ProofStore records branches and claim evidence rather than leaving the search as an unstructured conversation.
Experimental proof pipeline
Explore proof strategies. Inspect every acceptance boundary.
A proof-orchestration prototype combining a Rust state and search core with a Python proposer and solver stack. AMPP models candidate claims, strategy branches, subgoals, verification stages, and audit artifacts; parts of the verifier stack remain scaffolding and do not yet justify unconditional formal-proof guarantees.
Creative search and mathematical acceptance have different jobs. AMPP explores how candidate generation, branch management, solver interfaces, and a claim store can be separated so the evidence behind a proposed proof step is inspectable. The current implementation also makes the remaining acceptance gaps concrete.
Rust types represent claims, definitions, subgoals, attempts, and strategy families. A SQLite ProofStore records branches and claim evidence rather than leaving the search as an unstructured conversation.
The Python ensemble orders proposers by weights, collects candidates, deduplicates hashes, and applies rubric triage. Strategies include induction, contradiction, extremal arguments, constructions, and double counting.
The Rust cascade runs structural validation and then dispatches the candidate’s selected Python stages. Adapters cover counterexample-search scaffolding, SymPy, Z3, external theorem provers, and Lean source compilation.
Beam states track accepted claim counts, resolved subgoals, and stale iterations. Run artifacts and verification records expose how a branch evolved and which stages produced a response.
Inspect the stage contracts carefully: “not rejected” is not the same as a formal proof.
Explore an illustrative candidate frontier and bounded tests of the claim that n² + n + 17 is always prime. A single counterexample refutes it; passing a finite range cannot prove it.
Educational browser model, not AMPP execution. The real V1 evaluator is currently a placeholder. The finite example has a counterexample at n=16; no slider setting constitutes a formal proof or a real search-performance result.
Python supplies flexible proposal and solver integrations while Rust tracks typed search and claim state. The bridge is a narrow protocol rather than shared mutable in-process objects.
Candidate hashes and failed attempts make retries inspectable and allow exact rejected proposals to be filtered. This avoids treating every new generation as unrelated work.
The intended architecture distinguishes creativity from acceptance, but the current cascade permits selected stages, skip-as-pass adapters, and a placeholder V1 evaluator. Mandatory proof certificates and fail-closed handling would be needed for stronger guarantees.
Implementation details, examples, and project documentation.
Selected-stage execution, rejected hashes, artifact recording, and the final stored claim status.
Bounded/random-test scaffolding and the current always-True placeholder evaluator.
Temporary Lean file compilation and skipped success when Lean is absent.
Branch scoring, staleness, active strategy diversity, and state synchronization.
Architecture and descriptions reflect the linked repository snapshot. The playground explains a mechanism; it does not execute the repository or report measured performance.