Encyclopedia Foundation Foundation Primitive Recognition Calculus Prctype Theory Parse Canonicity
ARTICLE 4 claims 4 theorems
Foundation Primitive Recognition Calculus Prctype Theory Parse Canonicity
A two-element type is the smallest possible discrete record: exactly two entries, and every entry is one of them.
The two-valued ledger
A two-element type is a mathematical object with exactly two distinct members. In the Martin-Löf type theory that underlies modern constructive mathematics, the canonical example is the boolean type, whose two members are usually called false and true. The property of canonicity, for such a type, is the guarantee that every closed term of the type is one of those two constructors. There are no hidden or exotic inhabitants: a closed term of the boolean type is either false or true, and the proof is a direct case analysis on the term.
The framework's machine-checked library of formal theorems records this fact as a theorem named canonicity. The theorem states that for any term b of the two-element type, b equals false or b equals true. A companion theorem, no_confusion, states that false is not equal to true, so the two inhabitants are genuinely distinct and the type has exactly two elements. Together these two theorems give the complete census of the type: two inhabitants, no more, no fewer, and no overlap between them.
In Recognition Science, this two-element type serves as the ledger, a discrete record of events with only two possible entries. The framework parses Martin-Löf type theory into its formal system interface, and the canonicity theorem is what makes the parse faithful. Because every closed term is one of the two canonical constructors, the ledger's entries are fully enumerated: there is no third kind of entry, no undefined state, no ambiguity about what a token can be.
The framework then proves that this two-element system is expressive: it can distinguish its two tokens, since false differs from true. This expressiveness is enough to embed the framework's δ core, the primitive recognition calculus, into the type-theoretic system. The theorem type_theory_realizes_delta packages all of this: canonicity, no-confusion, and the embedding, as a single conjunction. The practical consequence is that the foundational ledger of the framework is not an arbitrary choice but a structure whose complete inventory is known and machine-checked.
What canonicity does not claim is any content about what the two entries mean. It establishes that there are exactly two closed terms and that they are distinct; it does not assign semantic roles, physical interpretations, or computational significance to false versus true. The theorem is purely structural. It also does not claim that every type in the framework has two inhabitants; it applies to this specific two-element type. And it does not claim that the type theory itself is consistent or that the framework's axioms are sound; those are separate questions about the ambient logical system, not about the census of this one type.
THEOREM canonicity · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
/-- **Canonicity.** Every closed term of `𝟚` is one of the two canonical
constructors. The type has exactly two inhabitants. -/
theorem canonicity (b : Two) : b = false ∨ b = true := by
cases b
· exact Or.inl rfl
· exact Or.inr rfl
THEOREM no_confusion · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
/-- **No-confusion / constructor disjointness.** The two canonical terms are
distinct: this is the recursor's verdict, the type theory's own distinction. -/
theorem no_confusion : (false : Two) ≠ true := by decide
THEOREM ttSystem_expressive · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
theorem ttSystem_expressive : ttSystem.Expressive := by
show (false : Two) ≠ true
decide
THEOREM type_theory_realizes_delta · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
/-- **The faithful parse, packaged.** Type theory's two-element type satisfies
canonicity (exactly two closed terms) and no-confusion (they are distinct), and the
foundation realizes the δ core. -/
theorem type_theory_realizes_delta :
(∀ b : Two, b = false ∨ b = true)
∧ ((false : Two) ≠ true)
∧ Nonempty (PRCEmbeddingInto ttSystem) :=
⟨canonicity, no_confusion, ttSystem_embeds_delta⟩
What this page does not claim
Canonicity assigns no semantic meaning to false versus true; it is purely structural. Canonicity applies only to the two-element type, not to every type in the framework. The theorem does not establish consistency or soundness of the ambient type theory.
Verify this page
Every tagged claim above names its theorem. To check one yourself rather than trust this page, elaborate the source module with Lean 4 and audit its axiom basis:
$ lake env lean IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
expected axiom basis: [propext, Classical.choice, Quot.sound] (the Lean kernel's standard three; no RS-specific axioms)
A page whose claims cannot be reproduced this way does not ship. In production, every anchor links to the exact declaration in the public source release, and this block carries the build receipt for the page itself.
Derived articles
This page is generated by a question-recursion engine: the questions its answers raise become the next pages. The current agenda, with open targets marked red:
- What role does the two-element ledger play in the broader recognition calculus?
- How does the δ core embedding relate to the forcing chain that derives physical constants?
- What distinguishes a faithful parse from a merely consistent one in the framework's formal system interface?
- Does canonicity hold for other types in the framework beyond the two-element type?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM canonicity · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
/-- **Canonicity.** Every closed term of `𝟚` is one of the two canonical constructors. The type has exactly two inhabitants. -/ theorem canonicity (b : Two) : b = false ∨ b = true := by cases b · exact Or.inl rfl · exact Or.inr rflThe theorem states that for any term b of the two-element type, b equals false or b equals true. canonicity · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.leanTHEOREM no_confusion · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
/-- **No-confusion / constructor disjointness.** The two canonical terms are distinct: this is the recursor's verdict, the type theory's own distinction. -/ theorem no_confusion : (false : Two) ≠ true := by decideA companion theorem, no_confusion, states that false is not equal to true, so the two inhabitants are genuinely distinct and the type has exactly two elements. no_confusion · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.leanTHEOREM ttSystem_expressive · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
theorem ttSystem_expressive : ttSystem.Expressive := by show (false : Two) ≠ true decideThe framework then proves that this two-element system is expressive: it can distinguish its two tokens, since false differs from true. ttSystem_expressive · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.leanTHEOREM type_theory_realizes_delta · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean
/-- **The faithful parse, packaged.** Type theory's two-element type satisfies canonicity (exactly two closed terms) and no-confusion (they are distinct), and the foundation realizes the δ core. -/ theorem type_theory_realizes_delta : (∀ b : Two, b = false ∨ b = true) ∧ ((false : Two) ≠ true) ∧ Nonempty (PRCEmbeddingInto ttSystem) := ⟨canonicity, no_confusion, ttSystem_embeds_delta⟩The theorem type_theory_realizes_delta packages all of this: canonicity, no-confusion, and the embedding, as a single conjunction. type_theory_realizes_delta · IndisputableMonolith/Foundation/PrimitiveRecognitionCalculus/PRCTypeTheoryParse.lean