File: Mathlib/SetTheory/Ordinal/FixedPointApproximants.lean

full_name: Cardinal.not_injective_limitation_set
code: theorem not_injective_limitation_set : ¬ InjOn g (Iio (ord <| succ #α)) 
goal: ¬Set.InjOn g (Set.Iio (SuccOrder.succ (Cardinal.mk α)).ord)

full_name: OrdinalApprox.lfpApprox
code: /-- Ordinal approximants of the least fixed point greater then an initial value x -/
def lfpApprox (a : Ordinal.{u}) : α 
goal: α

full_name: OrdinalApprox.lfpApprox_monotone
code: theorem lfpApprox_monotone : Monotone (lfpApprox f x) 
goal: Monotone (OrdinalApprox.lfpApprox f x)

full_name: OrdinalApprox.le_lfpApprox
code: theorem le_lfpApprox {a : Ordinal} : x ≤ lfpApprox f x a 
goal: x ≤ OrdinalApprox.lfpApprox f x a

full_name: OrdinalApprox.lfpApprox_add_one
code: theorem lfpApprox_add_one (h : x ≤ f x) (a : Ordinal) :
    lfpApprox f x (a+1) = f (lfpApprox f x a) 
goal: OrdinalApprox.lfpApprox f x (a + 1) = f (OrdinalApprox.lfpApprox f x a)

full_name: OrdinalApprox.lfpApprox_eq_of_mem_fixedPoints
code: /-- The ordinal approximants of the least fixed point are stabilizing
  when reaching a fixed point of f -/
theorem lfpApprox_eq_of_mem_fixedPoints {a b : Ordinal} (h_init : x ≤ f x) (h_ab : a ≤ b)
    (h : lfpApprox f x a ∈ fixedPoints f) : lfpApprox f x b = lfpApprox f x a 
goal: OrdinalApprox.lfpApprox f x b = OrdinalApprox.lfpApprox f x a

full_name: OrdinalApprox.exists_lfpApprox_eq_lfpApprox
code: /-- There are distinct ordinals smaller than the successor of the domains cardinals
  with equal value -/
theorem exists_lfpApprox_eq_lfpApprox : ∃ a < ord <| succ #α, ∃ b < ord <| succ #α,
    a ≠ b ∧ lfpApprox f x a = lfpApprox f x b 
goal: ∃ a < (Order.succ (Cardinal.mk α)).ord,
  ∃ b < (Order.succ (Cardinal.mk α)).ord, a ≠ b ∧ OrdinalApprox.lfpApprox f x a = OrdinalApprox.lfpApprox f x b

full_name: OrdinalApprox.lfpApprox_mem_fixedPoints_of_eq
code: /-- If there are distinct ordinals with equal value then
  every value succeding the smaller ordinal are fixed points -/
lemma lfpApprox_mem_fixedPoints_of_eq {a b c : Ordinal}
    (h_init : x ≤ f x) (h_ab : a < b) (h_ac : a ≤ c) (h_fab : lfpApprox f x a = lfpApprox f x b) :
    lfpApprox f x c ∈ fixedPoints f 
goal: OrdinalApprox.lfpApprox f x c ∈ Function.fixedPoints ⇑f

full_name: OrdinalApprox.lfpApprox_ord_mem_fixedPoint
code: /-- A fixed point of f is reached after the successor of the domains cardinality -/
theorem lfpApprox_ord_mem_fixedPoint (h_init : x ≤ f x) :
    lfpApprox f x (ord <| succ #α) ∈ fixedPoints f 
goal: OrdinalApprox.lfpApprox f x (Order.succ (Cardinal.mk α)).ord ∈ Function.fixedPoints ⇑f

full_name: OrdinalApprox.lfpApprox_le_of_mem_fixedPoints
code: /-- Every value of the ordinal approximants are less or equal than every fixed point of f greater
  then the initial value -/
theorem lfpApprox_le_of_mem_fixedPoints {a : α}
    (h_a : a ∈ fixedPoints f) (h_le_init : x ≤ a) (i : Ordinal) : lfpApprox f x i ≤ a 
goal: OrdinalApprox.lfpApprox f x i ≤ a

full_name: OrdinalApprox.lfpApprox_ord_eq_lfp
code: /-- The least fixed point of f is reached after the successor of the domains cardinality -/
theorem lfpApprox_ord_eq_lfp : lfpApprox f ⊥ (ord <| succ #α) = lfp f 
goal: OrdinalApprox.lfpApprox f ⊥ (Order.succ (Cardinal.mk α)).ord = OrderHom.lfp f

full_name: OrdinalApprox.lfp_mem_range_lfpApprox
code: /-- Some ordinal approximation of the least fixed point is the least fixed point. -/
theorem lfp_mem_range_lfpApprox : lfp f ∈ Set.range (lfpApprox f ⊥) 
goal: OrderHom.lfp f ∈ Set.range (OrdinalApprox.lfpApprox f ⊥)

full_name: OrdinalApprox.gfpApprox
code: /-- Ordinal approximants of the greatest fixed point -/
def gfpApprox (a : Ordinal.{u}) : α 
goal: α

full_name: OrdinalApprox.gfpApprox_antitone
code: theorem gfpApprox_antitone : Antitone (gfpApprox f x) 
goal: Antitone (OrdinalApprox.gfpApprox f x)

full_name: OrdinalApprox.gfpApprox_le
code: theorem gfpApprox_le {a : Ordinal} : gfpApprox f x a ≤ x 
goal: OrdinalApprox.gfpApprox f x a ≤ x

full_name: OrdinalApprox.gfpApprox_add_one
code: theorem gfpApprox_add_one (h : f x ≤ x) (a : Ordinal) :
    gfpApprox f x (a+1) = f (gfpApprox f x a) 
goal: OrdinalApprox.gfpApprox f x (a + 1) = f (OrdinalApprox.gfpApprox f x a)

full_name: OrdinalApprox.gfpApprox_eq_of_mem_fixedPoints
code: /-- The ordinal approximants of the least fixed point are stabilizing
  when reaching a fixed point of f -/
theorem gfpApprox_eq_of_mem_fixedPoints {a b : Ordinal} (h_init : f x ≤ x) (h_ab : a ≤ b)
    (h : gfpApprox f x a ∈ fixedPoints f) : gfpApprox f x b = gfpApprox f x a 
goal: OrdinalApprox.gfpApprox f x b = OrdinalApprox.gfpApprox f x a

full_name: OrdinalApprox.exists_gfpApprox_eq_gfpApprox
code: /-- There are distinct ordinals smaller than the successor of the domains cardinals with
  equal value -/
theorem exists_gfpApprox_eq_gfpApprox : ∃ a < ord <| succ #α, ∃ b < ord <| succ #α,
    a ≠ b ∧ gfpApprox f x a = gfpApprox f x b 
goal: ∃ a < (Order.succ (Cardinal.mk α)).ord,
  ∃ b < (Order.succ (Cardinal.mk α)).ord, a ≠ b ∧ OrdinalApprox.gfpApprox f x a = OrdinalApprox.gfpApprox f x b

full_name: OrdinalApprox.gfpApprox_ord_mem_fixedPoint
code: /-- A fixed point of f is reached after the successor of the domains cardinality -/
lemma gfpApprox_ord_mem_fixedPoint (h_init : f x ≤ x) :
    gfpApprox f x (ord <| succ #α) ∈ fixedPoints f 
goal: OrdinalApprox.gfpApprox f x (Order.succ (Cardinal.mk α)).ord ∈ Function.fixedPoints ⇑f

full_name: OrdinalApprox.le_gfpApprox_of_mem_fixedPoints
code: /-- Every value of the ordinal approximants are greater or equal than every fixed point of f
  that is smaller then the initial value -/
lemma le_gfpApprox_of_mem_fixedPoints {a : α}
    (h_a : a ∈ fixedPoints f) (h_le_init : a ≤ x) (i : Ordinal) : a ≤ gfpApprox f x i 
goal: a ≤ OrdinalApprox.gfpApprox f x i

full_name: OrdinalApprox.gfpApprox_ord_eq_gfp
code: /-- The greatest fixed point of f is reached after the successor of the domains cardinality -/
theorem gfpApprox_ord_eq_gfp : gfpApprox f ⊤ (ord <| succ #α) = gfp f 
goal: OrdinalApprox.gfpApprox f ⊤ (Order.succ (Cardinal.mk α)).ord = OrderHom.gfp f

full_name: OrdinalApprox.gfp_mem_range_gfpApprox
code: /-- Some ordinal approximation of the greatest fixed point is the greatest fixed point. -/
theorem gfp_mem_range_gfpApprox : gfp f ∈ Set.range (gfpApprox f ⊤) 
goal: OrderHom.gfp f ∈ Set.range (OrdinalApprox.gfpApprox f ⊤)