Terminology
| Principia Machina: map |
|---|
| Reading the program The move to Lean Status Terminology: the words of both versions |
| Lean itself Lean theorem prover Principia Machina in Lean |
| Version 1 The Principia Machina its specification |
What this registry is
Version 2 of the Principia Machina restates the framework in Lean 4, a language in which proofs are checked by machine. Lean, its build tool Lake and its mathematics library Mathlib already use many of the words version 1 used every day. In Lean the kernel is the proof checker, an environment is everything defined so far, and a module is a source file; Mathlib has measures and manifolds. A version 2 text that used those words bare would mean two things at once.
This registry records how each version 1 term carries over. A row gives the version 1 term; the version 2 word that replaces it, or "unchanged"; its three-letter code, where it has one; the Lean namespace where it lives in the Lean sources; and the collision the new word avoids, or the rule that settles it. Every term of version 1's framework that has no row here is carried into version 2 unchanged.
The move is declared, term by term; it is not a search and replace. Version 1's records, digests and version numbers are not changed, and version 1's pages keep version 1's words. In version 2, words are the names, in prose and in the Lean sources alike. A three-letter code is an abbreviation for tables, digest labels and page titles, and is used nowhere a word fits.
The codes are approved
The three-letter codes on this page are approved. The Declarer approved the code table on 15 October 2026, once and as a whole, as it had been proposed. A code added to the table later is proposed until the Declarer approves it.
The codes were drawn up under rule R8 below: any two differ in at least two letters and none is a Lean core type, and a code that is also a known acronym elsewhere is flagged in its row. A note such as "not PRS (one letter from PFS)" records a candidate code that failed the rule.
The registry
One row per term, in the order of the terminology map this page is generated from. A blank cell means the map gives nothing there: the term has no code, or no Lean namespace of its own. "none" in the code column means the word deliberately has no code and is always written in full. Rules are cited by number (R1 to R9, below); a row that avoids a Mathlib word binds only under rule R7.
| Version 1 term | Version 2 word | Code | Lean namespace | Collision or rule |
|---|---|---|---|---|
| The Principia Machina, TPM | Principia Machina | PMA | Principia
|
the name is the Declarer's selection |
| TPS, The Principia Machina Specification | Principia Framework Specification | PFS | generated docs | also "perfect forward secrecy", flagged |
| TPK, The Prime Kernel | Starting Set | SST | Principia.StartingSet
|
"kernel" is Lean's checker; R2 |
| TrM, The Translation Manifold | Correspondence Table | COR | Principia.Correspondence
|
Mathlib manifolds |
| TMS, The Measure Set | Criteria Set | CRI | Principia.Criteria
|
Mathlib Measure, MeasurableSet |
| TFK, The Full Kernel | Research Assembly | RAS | Principia.ResearchAssembly
|
"sealed" stays the adjective |
| ENVIRONMENT; ENVIRONMENT INVENTORY; ENVIRONMENT_QUANTITY | Physical Referent; REFERENT INVENTORY; REFERENT_QUANTITY | none | Principia.Referent
|
Lean.Environment; R5
|
| ENVIRONMENT MODULE and its declarations | Provision, kinds Interaction and Convention | PRV | Principia.Provision
|
Lean and Lake modules; not INT (Int)
|
| RR, Research Register | Research Record Register | RRG | Principia.Register
|
|
| Congruence Protocol; CAC | Audit and Congruence Protocol; CAC | ACP; CAC | Principia.Congruence
|
Mathlib Con; compound
|
| Public Recorder; PLATFORM | Recorder; Platform | REC | Principia.Recorder
|
not PRS (one letter from PFS) |
| TPX | Custos | CUS | PHP extension; Principia.Governor for its pure decisions
|
the name is the Declarer's selection |
| TPC, TPC-PHP, TPC-PY | Calculator, one residence; binary pcalc
|
PCC | Principia, Main
|
not calc, a Lean keyword
|
| PRB | Research Client | RCL | Python | not RAC (one letter from RAS) |
| GTP | Agent Contract | AGC | spec part | not GAC (one letter from CAC) |
| CA-GTP | Certified Agent | CTA | not CRA (one from CRI), not CAG (one from CAC) | |
| (no v1 term) | Agent Implementation Profile: the vendor-neutral generic prompt any agent may load, published with its digest | AIP | the term is the Declarer's selection | |
| PACKAGE (probe) | Probe Pack | none | Principia.ProbePack
|
Lake.Package
|
| MANIFEST page, tree, revision | Index page, Index tree, INDEX REVISION | none | Principia.Index
|
lake-manifest.json
|
| LIBRARY PAGE | Reading page | none | lean_lib
| |
| kernel tests T1-T6 | fundamental tests T1-T6 | Principia.StartingSet.Tests
|
||
| H-DECL, H-OP, H-OWN, H-SPON, ANY | Declarer, Operator, Initiator, Sponsor, Public | Principia.Role
|
groups pma-declarer, pma-operator, pma-initiator, pma-sponsor; Public is *
| |
| AI-LEAD, AI-CO | Holder, Coworker (lock states) | Principia.LockState
|
not "position" (Lean.Position)
| |
| USER, AGENT | unchanged | Principia.AccountClass
|
group pma-agent
| |
| D(TPK), D(TrM), D(TMS), D(TFK), D(TPS), D(IS) | D(SST), D(COR), D(CRI), D(RAS), D(PFS), D(IS) | |||
| content hash, page hash | digest; page digest | R4 | ||
| UWC, DOF, DOMAIN, UNIT, REGIME, GRADE, STATUS, STRIKE, HOLD, RELEASE, falcon, canary, parrot, sponsor, fingerprint, governor, lane, seat | unchanged | checked, no collision | ||
| register record; CLASS, GRADE, STATUS, the envelope | unchanged | Principia.Record
|
the record table's types | |
| envelope field TPS (the specification version a push conformed to) | PFS | EnvelopeField.pfsVersion
|
follows the TPS row; the code is approved with the code table; v1 records keep TPS | |
| record-table writers LEAD; TPX | HOLDER; CUSTOS | FieldWriter.holder, .custos
|
follow the AI-LEAD and TPX rows | |
| type class (the record table's RID, IDSET, ... OBJECT) | value type | Principia.Record.ValueType
|
a type class is a Lean mechanism; R2 | |
| DERIVATION {STEPS, TEXT} | DERIVATION, forms PROSE, STRUCTURED, KERNEL | Principia.Record.Derivation, DerivationForm
|
wire word KERNEL kept; Lean name kernelProof (R2); PROSE may carry an unchecked attachment
| |
| (no v1 term) | DERIVATION_CLASS: INSPECTION, MECHANICAL, PROVED | Principia.Record.DerivationClass
|
the check classes, with PROSE credited INSPECTION, STRUCTURED MECHANICAL, KERNEL PROVED |
The naming rules
Nine rules govern every version 2 name. The registry's last column cites them by number.
- R1. Wire names and Lean names. A record field, state or code keeps its capital spelling on pages, in records and in prose (
UNIT,AT,MATCH). In Lean the same thing is a lowerCamel word that is not a Lean keyword (unit,atPoint,outcome). One table maps each wire name to its Lean name; no name is escaped to get past a keyword. - R2. No bare colliding word. A word that clashes seriously with a meaning in Lean, Lake or Mathlib is never used alone. It is written as a two-word compound, in prose and in code, and Lean's own sense is always qualified: "the Lean kernel" when Lean's proof checker is meant.
- R3. Every layer and zone is a namespace. Each layer and zone of the framework is a namespace under
Principia, such asPrincipia.StartingSet. No single-word framework type sits at the root, and nothing shadows a Lean, Lake or Mathlib type. - R4. Digest, not hash. Every SHA-256 value is a digest. "Hash" is left to Lean's own 64-bit
hashand to MediaWiki's SHA-1 of a page, which version 2 text calls the page digest. - R5. No type named like a Lean type. No framework type is named Name, Option, Unit, Level, Position, Format, Json, Declaration, Module, Environment, Kernel, Task, Job, Package, Workspace, Manifest, Target, Script, Cache, Env or Int.
- R6. A registry. This page: every version 1 term with its version 2 word, code, Lean name, collision and rule. The move is declared, term by term, not done by search and replace, and version 1's records, digests and version numbers are not changed.
- R7. Mathlib rows are conditional. A row that avoids a Mathlib word binds only if version 2 adopts Mathlib, Lean's mathematics library. Version 2 is written in core Lean for now, by the Declarer's choice; a later move to Mathlib would be a change of its own, and the rows are recorded now so that it is made with them in view.
- R8. Codes. Any two codes differ in at least two letters, so a one-letter slip cannot turn one into another. No code is a Lean core type, and none is a well-known acronym in computing, cryptography or physics; where an overlap remains, the row says so.
- R9. The size test. A name must read right for a spring on a track: nothing may sound too big for the smallest system the framework is used on.
How a new term gets a row
Every term of version 1's framework that is not listed here is carried into version 2 unchanged until a row says otherwise. Nothing is renamed silently.
When the work meets a term that needs a new word, most often because Lean, Lake or Mathlib already uses it, a row is added to the terminology map with all five columns:
- the version 1 term, as version 1 wrote it;
- the version 2 word, checked against Lean, Lake and Mathlib (R2, R3, R5) and against the size test (R9);
- a code, only if the word needs one, checked under R8 against every code already in the table; a new code is proposed until the Declarer approves it;
- the Lean namespace, under
Principia(R3); - the collision the word avoids, or the rule applied.
This page is then generated again from the map and checked against it row by row, so the page and the map cannot differ. Like every framework page, it reaches this wiki only after the Declarer approves the change.
Read further
- The move to Lean: why version 2 is written in Lean, with the new words in context.
- The Principia Machina Specification: version 1's normative text, where the terms in the left-hand column are defined.
- The Principia Machina: version 1, its home page; it stays as history.
This page is generated from the terminology map in the Principia Machina source and replaced whole at each publish; an edit made here is overwritten. Terminology map as of 15 October 2026.