Encyclopedia Foundation Foundation Universal Forcing Strict Mathlib Nno
ARTICLE 4 claims 3 theorems 1 model
Foundation Universal Forcing Strict Mathlib Nno
A machine-checked bridge shows that the framework's counting numbers satisfy the same universal property that defines the natural numbers in category theory.
The Mathlib bridge
The natural numbers are usually introduced by counting: zero, then one, then two, and so on. Category theory gives a sharper definition. A natural numbers object (NNO) in a category is a thing with a distinguished starting point and a successor step such that any other structure with a starting point and a step has exactly one structure-preserving map from the NNO to it. This universal property is what makes the natural numbers the natural numbers: it pins down their behavior without relying on a particular construction.
The framework's own counting numbers, called LogicNat, are built from a zero and a successor function. The module MathlibNNO.lean proves that LogicNat satisfies the NNO universal property. Specifically, it proves two theorems. First, for any type α, any base element, and any step function on α, there exists a function from LogicNat to α that sends zero to the base and sends each successor to the step applied to the previous value. Second, that function is unique: any two functions satisfying those conditions are equal. Together these two statements are exactly the universal property of a natural numbers object.
The module also packages these two theorems into a structure called MathlibNNOCert, which bundles the existence and uniqueness statements as a single certificate. A further theorem, mathlibNNOCert_holds, assembles the certificate from the two proved theorems. The point of this packaging is interoperability: the framework's counting numbers can be used anywhere Mathlib, the standard mathematical library for the Lean proof assistant, expects a natural numbers object. This is a bridge, not a new result. The universal property itself was already proved in the categorical recursor module; MathlibNNO.lean merely exposes it in the form Mathlib's category theory namespace recognizes.
In Recognition Science, this bridge matters because the framework's foundational claims flow from a single forced cost function, and the counting numbers are part of that foundation. The framework models natural numbers as a discrete ledger, a record of successive recognition events. The theorem here shows that this ledger-based counting has the same universal behavior as the standard natural numbers, so the framework's arithmetic is not a separate exotic system but a realization of the same structure mathematicians already use.
THEOREM logicNat_has_type_NNO_universal_property · logicNat_NNO_uniqueness · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
theorem logicNat_has_type_NNO_universal_property :
∀ {α : Type*} (base : α) (step : α → α),
∃ (f : LogicNat → α),
f LogicNat.zero = base ∧
∀ n, f (LogicNat.succ n) = step (f n) :=
@nno_universal_existence
theorem logicNat_NNO_uniqueness :
∀ {α : Type*} (base : α) (step : α → α)
(f g : LogicNat → α),
f LogicNat.zero = base → (∀ n, f (LogicNat.succ n) = step (f n)) →
g LogicNat.zero = base → (∀ n, g (LogicNat.succ n) = step (g n)) →
f = g :=
@nno_universal_uniqueness
THEOREM mathlibNNOCert_holds · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
theorem mathlibNNOCert_holds : MathlibNNOCert :=
{ exists_rec := logicNat_has_type_NNO_universal_property
unique_rec := logicNat_NNO_uniqueness }
THEOREM logicNat_has_type_NNO_universal_property · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
theorem logicNat_has_type_NNO_universal_property :
∀ {α : Type*} (base : α) (step : α → α),
∃ (f : LogicNat → α),
f LogicNat.zero = base ∧
∀ n, f (LogicNat.succ n) = step (f n) :=
@nno_universal_existence
MODEL MathlibNNOCert · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
structure MathlibNNOCert where
exists_rec :
∀ {α : Type*} (base : α) (step : α → α),
∃ (f : LogicNat → α),
f LogicNat.zero = base ∧
∀ n, f (LogicNat.succ n) = step (f n)
unique_rec :
∀ {α : Type*} (base : α) (step : α → α)
(f g : LogicNat → α),
f LogicNat.zero = base → (∀ n, f (LogicNat.succ n) = step (f n)) →
g LogicNat.zero = base → (∀ n, g (LogicNat.succ n) = step (g n)) →
f = g
What this page does not claim
This module does not prove the universal property from scratch; it re-exposes an existing proof. This module does not show that LogicNat is the only natural numbers object in the framework's category. This module does not establish any connection between the natural numbers and the fine-structure constant.
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/UniversalForcing/Strict/MathlibNNO.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:
- How does the categorical recursor module prove the universal property for LogicNat?
- What other structures in the framework's foundation are exposed as Mathlib-facing bridges?
- Does the NNO universal property uniquely determine LogicNat up to isomorphism?
- How does the ledger model of natural numbers connect to the forced cost function J?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM logicNat_has_type_NNO_universal_property · logicNat_NNO_uniqueness · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
theorem logicNat_has_type_NNO_universal_property : ∀ {α : Type*} (base : α) (step : α → α), ∃ (f : LogicNat → α), f LogicNat.zero = base ∧ ∀ n, f (LogicNat.succ n) = step (f n) := @nno_universal_existencetheorem logicNat_NNO_uniqueness : ∀ {α : Type*} (base : α) (step : α → α) (f g : LogicNat → α), f LogicNat.zero = base → (∀ n, f (LogicNat.succ n) = step (f n)) → g LogicNat.zero = base → (∀ n, g (LogicNat.succ n) = step (g n)) → f = g := @nno_universal_uniquenessThe module proves that LogicNat satisfies the NNO universal property. logicNat_has_type_NNO_universal_property · logicNat_NNO_uniqueness · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.leanTHEOREM mathlibNNOCert_holds · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
theorem mathlibNNOCert_holds : MathlibNNOCert := { exists_rec := logicNat_has_type_NNO_universal_property unique_rec := logicNat_NNO_uniqueness }The module packages the existence and uniqueness statements into a structure called MathlibNNOCert. mathlibNNOCert_holds · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.leanTHEOREM logicNat_has_type_NNO_universal_property · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
theorem logicNat_has_type_NNO_universal_property : ∀ {α : Type*} (base : α) (step : α → α), ∃ (f : LogicNat → α), f LogicNat.zero = base ∧ ∀ n, f (LogicNat.succ n) = step (f n) := @nno_universal_existenceThe universal property itself was already proved in the categorical recursor module. logicNat_has_type_NNO_universal_property · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.leanMODEL MathlibNNOCert · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean
structure MathlibNNOCert where exists_rec : ∀ {α : Type*} (base : α) (step : α → α), ∃ (f : LogicNat → α), f LogicNat.zero = base ∧ ∀ n, f (LogicNat.succ n) = step (f n) unique_rec : ∀ {α : Type*} (base : α) (step : α → α) (f g : LogicNat → α), f LogicNat.zero = base → (∀ n, f (LogicNat.succ n) = step (f n)) → g LogicNat.zero = base → (∀ n, g (LogicNat.succ n) = step (g n)) → f = gThe framework models natural numbers as a discrete ledger, a record of successive recognition events. MathlibNNOCert · IndisputableMonolith/Foundation/UniversalForcing/Strict/MathlibNNO.lean