Encyclopedia Foundation Foundation Universal Forcing Forced Semiring Map Preserves Add
ARTICLE 3 claims 3 theorems
Foundation Universal Forcing Forced Semiring Map Preserves Add
A machine-checked proof shows that any structure respecting zero and counting must respect addition, pinning down the arithmetic of the natural numbers.
The arithmetic that distinction forces
The natural numbers are the counting numbers: 0, 1, 2, 3, and so on, with the operations of addition and multiplication. A fundamental question about them is whether their arithmetic is something we invent or something forced upon us by more basic structure. The Recognition Science framework's ledger, a discrete record of events, provides a setting where this question has a precise answer.
The framework's machine-checked library of formal theorems proves a result called map_preserves_add. It states that any function from the counting numbers to themselves that sends 0 to 0 and commutes with the successor operation (the operation that takes a number to the next one, so 2 becomes 3) must also preserve addition. In symbols, if the function is h, then h(a + b) = h(a) + h(b) for all a and b. The proof is a single induction on the second argument, because addition is defined by recursion on it.
The same two hypotheses, fixing zero and commuting with successor, also force the function to preserve multiplication and to fix 1. These three results together show that any structure that respects the basic act of counting must respect the full arithmetic of the natural numbers. The framework's library then applies this to a specific canonical map between any two realizations of the ledger, proving that this map is a bijection preserving 0, 1, +, and ×.
In Recognition Science, this is the capstone: distinction forces the natural numbers. The forced carrier is isomorphic to the natural numbers as a structure with 0, 1, +, and ×, with no base, no positional notation, and no arithmetic axioms posited. The arithmetic is determined, not chosen.
What the theorem does not claim is also important. It does not say that the natural numbers are the only possible arithmetic structure, nor that the proof establishes anything about the physical world. It is a statement about the framework's formal ledger, not about empirical reality. The theorem also does not claim that the canonical map is non-trivial; in the strict presentation, it is simply the identity function, and the honest note in the library says so plainly.
THEOREM map_preserves_add · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean
/-- A map fixing zero and commuting with `succ` preserves addition. Addition
recurses on its second argument, so the proof is a single induction. -/
theorem map_preserves_add (h : LogicNat → LogicNat)
(h0 : h LogicNat.zero = LogicNat.zero)
(hs : ∀ n, h (LogicNat.succ n) = LogicNat.succ (h n)) :
∀ a b : LogicNat, h (a + b) = h a + h b := by
intro a b
induction b with
| identity =>
show h (a + LogicNat.zero) = h a + h LogicNat.zero
rw [add_zero, h0, add_zero]
| step b ih =>
show h (a + LogicNat.succ b) = h a + h (LogicNat.succ b)
rw [add_succ, hs, ih, hs, add_succ]
THEOREM map_preserves_mul · map_preserves_one · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean
/-- A map fixing zero and commuting with `succ` (hence, by the previous lemma,
preserving `+`) preserves multiplication. Multiplication recurses on its second
argument via addition. -/
theorem map_preserves_mul (h : LogicNat → LogicNat)
(h0 : h LogicNat.zero = LogicNat.zero)
(hs : ∀ n, h (LogicNat.succ n) = LogicNat.succ (h n)) :
∀ a b : LogicNat, h (a * b) = h a * h b := by
have hadd := map_preserves_add h h0 hs
intro a b
induction b with
| identity =>
show h (a * LogicNat.zero) = h a * h LogicNat.zero
rw [mul_zero, h0, mul_zero]
| step b ih =>
show h (a * LogicNat.succ b) = h a * h (LogicNat.succ b)
rw [mul_succ, hadd, ih, hs, mul_succ]
/-- A zero/step-preserving map fixes `1 = succ 0`. -/
theorem map_preserves_one (h : LogicNat → LogicNat)
(h0 : h LogicNat.zero = LogicNat.zero)
(hs : ∀ n, h (LogicNat.succ n) = LogicNat.succ (h n)) :
h 1 = 1 := by
show h (LogicNat.succ LogicNat.zero) = LogicNat.succ LogicNat.zero
rw [hs, h0]
THEOREM forcedArithmeticIsNat · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean
/-- The forced arithmetic is `ℕ`. -/
noncomputable def forcedArithmeticIsNat : ForcedArithmeticIsNat where
toEquiv := LogicNat.equivNat
map_zero := LogicNat.toNat_zero
map_one := toNat_one
map_add := LogicNat.toNat_add
map_mul := LogicNat.toNat_mul
What this page does not claim
The theorem does not claim that the natural numbers are the only possible arithmetic structure. The theorem does not claim anything about the physical world or empirical reality. The canonical map is not claimed to be non-trivial; in the strict presentation it is the identity function.
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/ForcedSemiring.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 is the precise definition of the successor operation on the ledger?
- How does the framework's canonical map relate to the identity function on the natural numbers?
- What is the cross-carrier canonicity result in CanonicalForcing.ArithmeticOf, and how does it differ from the strict presentation?
- Does the framework's forcing chain produce any arithmetic structure beyond the natural numbers?
MACHINE LAYER · GROUNDED CLAIM TABLE · CLICK TO EXPAND
THEOREM map_preserves_add · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean
/-- A map fixing zero and commuting with `succ` preserves addition. Addition recurses on its second argument, so the proof is a single induction. -/ theorem map_preserves_add (h : LogicNat → LogicNat) (h0 : h LogicNat.zero = LogicNat.zero) (hs : ∀ n, h (LogicNat.succ n) = LogicNat.succ (h n)) : ∀ a b : LogicNat, h (a + b) = h a + h b := by intro a b induction b with | identity => show h (a + LogicNat.zero) = h a + h LogicNat.zero rw [add_zero, h0, add_zero] | step b ih => show h (a + LogicNat.succ b) = h a + h (LogicNat.succ b) rw [add_succ, hs, ih, hs, add_succ]Any function from the counting numbers to themselves that sends 0 to 0 and commutes with the successor operation must also preserve addition. map_preserves_add · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.leanTHEOREM map_preserves_mul · map_preserves_one · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean
/-- A map fixing zero and commuting with `succ` (hence, by the previous lemma, preserving `+`) preserves multiplication. Multiplication recurses on its second argument via addition. -/ theorem map_preserves_mul (h : LogicNat → LogicNat) (h0 : h LogicNat.zero = LogicNat.zero) (hs : ∀ n, h (LogicNat.succ n) = LogicNat.succ (h n)) : ∀ a b : LogicNat, h (a * b) = h a * h b := by have hadd := map_preserves_add h h0 hs intro a b induction b with | identity => show h (a * LogicNat.zero) = h a * h LogicNat.zero rw [mul_zero, h0, mul_zero] | step b ih => show h (a * LogicNat.succ b) = h a * h (LogicNat.succ b) rw [mul_succ, hadd, ih, hs, mul_succ]/-- A zero/step-preserving map fixes `1 = succ 0`. -/ theorem map_preserves_one (h : LogicNat → LogicNat) (h0 : h LogicNat.zero = LogicNat.zero) (hs : ∀ n, h (LogicNat.succ n) = LogicNat.succ (h n)) : h 1 = 1 := by show h (LogicNat.succ LogicNat.zero) = LogicNat.succ LogicNat.zero rw [hs, h0]The same two hypotheses, fixing zero and commuting with successor, also force the function to preserve multiplication and to fix 1. map_preserves_mul · map_preserves_one · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.leanTHEOREM forcedArithmeticIsNat · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean
/-- The forced arithmetic is `ℕ`. -/ noncomputable def forcedArithmeticIsNat : ForcedArithmeticIsNat where toEquiv := LogicNat.equivNat map_zero := LogicNat.toNat_zero map_one := toNat_one map_add := LogicNat.toNat_add map_mul := LogicNat.toNat_mulThe forced carrier is isomorphic to the natural numbers as a structure with 0, 1, +, and ×, with no base, no positional notation, and no arithmetic axioms posited. forcedArithmeticIsNat · IndisputableMonolith/Foundation/UniversalForcing/ForcedSemiring.lean