Pith. sign in

IndisputableMonolith.Foundation.UniversalForcing.Strict.CanonicalIso

IndisputableMonolith/Foundation/UniversalForcing/Strict/CanonicalIso.lean · 85 lines · 4 declarations

show as:
view math explainer →

open module explainer GitHub source

Explainer status: pending

   1import IndisputableMonolith.Foundation.UniversalForcing.Strict.Invariance
   2import IndisputableMonolith.Foundation.UniversalForcing.CanonicalIso
   3
   4/-!
   5  Strict/CanonicalIso.lean
   6
   7  Structure-preserving Universal Forcing for the strict "no escape hatch"
   8  realizations.
   9
  10  `Strict/Invariance.lean` already proves the strict universal forcing bijection
  11  `strict_universal_forcing R S` between the forced arithmetics of any two
  12  `StrictLogicRealization`s.  This module upgrades that bijection, on the strict
  13  surface, to a *unique structure-preserving isomorphism* of Peano algebras,
  14  reusing `UniversalForcing.universalForcingPeanoEquiv` and
  15  `UniversalForcing.peanoEquiv_unique` through the strict-to-lightweight functor.
  16
  17  A strict realization supplies only native comparison / composition / identity /
  18  invariance / non-triviality data; its forced arithmetic is derived, not
  19  supplied.  So the canonical Peano isomorphism here is genuinely forced by the
  20  native law data, with no orbit handed in by the caller.
  21-/
  22
  23namespace IndisputableMonolith
  24namespace Foundation
  25namespace UniversalForcing
  26namespace Strict
  27namespace CanonicalIso
  28
  29/-- **Strict Universal Forcing, structure-preserving form.**
  30
  31For any two strict Law-of-Logic realizations, the bijection between their forced
  32arithmetics is a structure-preserving isomorphism of Peano algebras: it sends
  33zero to zero and commutes with the successor map. -/
  34noncomputable def strict_universal_forcing_peanoEquiv
  35    (R S : StrictLogicRealization) :
  36    PeanoEquiv (StrictLogicRealization.arith R).peano
  37      (StrictLogicRealization.arith S).peano :=
  38  universalForcingPeanoEquiv (StrictLogicRealization.toLightweight R)
  39    (StrictLogicRealization.toLightweight S)
  40
  41/-- **Strict canonicality.**
  42
  43Any two structure-preserving isomorphisms between the forced arithmetics of two
  44strict realizations have the same underlying function.  The strict universal
  45forcing isomorphism is therefore the unique one. -/
  46theorem strict_peanoEquiv_unique (R S : StrictLogicRealization)
  47    (e₁ e₂ : PeanoEquiv (StrictLogicRealization.arith R).peano
  48      (StrictLogicRealization.arith S).peano) :
  49    (e₁.toEquiv : (StrictLogicRealization.arith R).peano.carrier
  50        → (StrictLogicRealization.arith S).peano.carrier)
  51      = e₂.toEquiv :=
  52  peanoEquiv_unique (StrictLogicRealization.toLightweight R)
  53    (StrictLogicRealization.toLightweight S) e₁ e₂
  54
  55/-- **Strict Universal Forcing isomorphism certificate.**
  56
  57For any two strict Law-of-Logic realizations there is a canonical
  58structure-preserving isomorphism between their forced arithmetics, and it is
  59unique. -/
  60structure StrictUniversalForcingIsoCert where
  61  /-- The canonical Peano-algebra isomorphism between any two strict forced
  62  arithmetics. -/
  63  iso : ∀ R S : StrictLogicRealization,
  64    PeanoEquiv (StrictLogicRealization.arith R).peano
  65      (StrictLogicRealization.arith S).peano
  66  /-- That isomorphism is unique as a structure-preserving map. -/
  67  unique : ∀ (R S : StrictLogicRealization)
  68      (e₁ e₂ : PeanoEquiv (StrictLogicRealization.arith R).peano
  69        (StrictLogicRealization.arith S).peano),
  70      (e₁.toEquiv : (StrictLogicRealization.arith R).peano.carrier
  71          → (StrictLogicRealization.arith S).peano.carrier)
  72        = e₂.toEquiv
  73
  74/-- The strict certificate is inhabited by the strict canonical iso and its
  75uniqueness. -/
  76noncomputable def strictUniversalForcingIsoCert : StrictUniversalForcingIsoCert where
  77  iso := fun R S => strict_universal_forcing_peanoEquiv R S
  78  unique := fun R S => strict_peanoEquiv_unique R S
  79
  80end CanonicalIso
  81end Strict
  82end UniversalForcing
  83end Foundation
  84end IndisputableMonolith
  85

source mirrored from github.com/jonwashburn/shape-of-logic