pith. machine review for the scientific record. sign in
abbrev

FreeOrbit

definition
show as:
view math explainer →
module
IndisputableMonolith.Foundation.UniversalForcing.StrictRealization
domain
Foundation
line
46 · github
papers citing
none yet

open explainer

Generate a durable explainer page for this declaration.

open lean source

IndisputableMonolith.Foundation.UniversalForcing.StrictRealization on GitHub at line 46.

browse module

All declarations in this module, on Recognition.

explainer page

Tracked in the explainer inventory; generation is lazy so crawlers do not trigger LLM jobs.

open explainer

depends on

used by

formal source

  43namespace StrictLogicRealization
  44
  45/-- The strict free orbit is uniformly the `LogicNat` iteration object. -/
  46abbrev FreeOrbit (_R : StrictLogicRealization) : Type :=
  47  LogicNat
  48
  49/-- Interpret the free orbit of a strict realization in its carrier by
  50primitive recursion over the native generator and composition operation. -/
  51def interpret (R : StrictLogicRealization) : FreeOrbit R → R.Carrier
  52  | LogicNat.identity => R.one
  53  | LogicNat.step n => R.compose R.generator (interpret R n)
  54
  55@[simp] theorem interpret_zero (R : StrictLogicRealization) :
  56    interpret R LogicNat.zero = R.one := rfl
  57
  58@[simp] theorem interpret_step (R : StrictLogicRealization) (n : FreeOrbit R) :
  59    interpret R (LogicNat.succ n) = R.compose R.generator (interpret R n) := rfl
  60
  61/-- Convert a strict realization to the existing lightweight interface.
  62The orbit fields are all derived from `LogicNat`, not supplied by the caller. -/
  63def toLightweight (R : StrictLogicRealization) : LogicRealization where
  64  Carrier := R.Carrier
  65  Cost := R.Cost
  66  zeroCost := R.zeroCost
  67  compare := R.compare
  68  zero := R.one
  69  step := fun x => R.compose R.generator x
  70  Orbit := FreeOrbit R
  71  orbitZero := LogicNat.zero
  72  orbitStep := LogicNat.succ
  73  interpret := interpret R
  74  interpret_zero := rfl
  75  interpret_step := by intro n; rfl
  76  orbit_no_confusion := by