Admission
Deposits land inlemmas/inbox/. Nothing in them is trusted: admission re-derives everything.
- regenerates the Lean module from the fixed template. The statement may only use allowlisted identifiers (
Real.exp,Real.tanh,Real.sqrt,Real.log,Real.sinh,Real.cosh,ℝand bound variables), and the proof must be one of the search portfolio’s tactic scripts. A module therefore cannot run commands, add axioms, or usesorryornative_decide; - compiles it with Lean against the Hub’s own spec package;
- checks the axioms of the compiled theorem: only
propext,Classical.choiceandQuot.soundare allowed; - checks that the id is the hash of the statement;
- deduplicates: for an identical statement, the fastest proof is kept;
- re-derives the visibility Hub-side. Lemmas of nodes passed as
--private-nodeonly ever go to the org library; - writes an audit-log entry.
Contribution caps
off, org or public) is the loosest setting any repository of the organisation may use. A repository’s [lemmas] contribute can only be stricter.
Audit log
Snapshots
[lemmas] snapshot = "<time>" retrieves only lemmas created up to that time, which reproduces a solving process exactly.
Migration
After a Lean or Mathlib upgrade:pending-migration and leave retrieval. Proofs already issued are unaffected, because they pin their own toolchain.
Export
To move libraries to another Hub when there is no network path between them, write them to one deposit file:--public-only skips org libraries) and merges lemmas with the same statement. Lemmas pending migration are skipped. --specs re-checks every lemma with Lean before writing. Copy the file into the target Hub’s lemmas/inbox/ and run admission there. Admission re-checks everything again, because nothing in the file is trusted. The target Hub’s spec package must contain the search-portfolio entries the proofs name; otherwise admission rejects those lemmas.
