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

tickEquivNat_apply

proved
show as:
view math explainer →
module
IndisputableMonolith.Foundation.TimeAsOrbit
domain
Foundation
line
65 · github
papers citing
none yet

open explainer

Read the cached plain-language explainer.

open lean source

IndisputableMonolith.Foundation.TimeAsOrbit on GitHub at line 65.

browse module

All declarations in this module, on Recognition.

explainer page

A cached Ask Recognition explainer exists for this declaration.

open explainer

depends on

formal source

  62  left_inv := by intro t; cases t; rfl
  63  right_inv := by intro n; rfl
  64
  65@[simp] theorem tickEquivNat_apply (t : Tick) : tickEquivNat t = t.index := rfl
  66@[simp] theorem tickEquivNat_symm_apply (n : Nat) :
  67    tickEquivNat.symm n = ⟨n⟩ := rfl
  68
  69@[simp] theorem tickEquivNat_zero : tickEquivNat tickZero = 0 := rfl
  70
  71@[simp] theorem tickEquivNat_succ (t : Tick) :
  72    tickEquivNat (tickSucc t) = (tickEquivNat t) + 1 := rfl
  73
  74/-- The canonical equivalence `Tick ≃ LogicNat` via `Nat`. -/
  75def tickEquivLogicNat : Tick ≃ LogicNat :=
  76  tickEquivNat.trans LogicNat.equivNat.symm
  77
  78/-! ## Tick is a natural-number object -/
  79
  80/-- Recursor on `Tick`: iterate `f` from `x` exactly `t.index` times. -/
  81def tickRecursor {X : Type u} (x : X) (f : X → X) (t : Tick) : X :=
  82  Nat.rec x (fun _ acc => f acc) t.index
  83
  84@[simp] theorem tickRecursor_zero {X : Type u} (x : X) (f : X → X) :
  85    tickRecursor x f tickZero = x := rfl
  86
  87@[simp] theorem tickRecursor_succ {X : Type u} (x : X) (f : X → X) (t : Tick) :
  88    tickRecursor x f (tickSucc t) = f (tickRecursor x f t) := rfl
  89
  90/-- **Tick is a Lawvere natural-number object.** Together with `tickZero`
  91and `tickSucc`, the `Tick` type satisfies the universal property of the
  92natural-number object: primitive recursion exists and is unique. -/
  93def tick_isNNO :
  94    IsNaturalNumberObject (N := Tick) tickZero tickSucc where
  95  recursor := fun {X} x f => tickRecursor x f