Theorem: Part.fix_eq_ωSup
File: Mathlib/Control/LawfulFix.lean

tactic: apply le_antisymm
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
⊢ Part.fix ↑f = ωSup (approxChain f)

tactic: intro x
state_before: case a
α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
⊢ Part.fix ↑f ≤ ωSup (approxChain f)

tactic: cases' exists_fix_le_approx f x with i hx
state_before: case a
α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
⊢ Part.fix (↑f) x ≤ ωSup (approxChain f) x

tactic: trans approx f i.succ x
state_before: case a.intro
α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ Part.fix (↑f) x ≤ ωSup (approxChain f) x

tactic: apply le_ωSup_of_le i.succ
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ approx (↑f) (Nat.succ i) x ≤ ωSup (approxChain f) x

tactic: dsimp [approx]
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ approx (↑f) (Nat.succ i) x ≤ ↑(Chain.map (approxChain f) (Pi.evalOrderHom x)) (Nat.succ i)

tactic: rfl
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ ↑f (approx (↑f) i) x ≤ ↑(approxChain f) (Nat.succ i) x

tactic: trans
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ Part.fix (↑f) x ≤ approx (↑f) (Nat.succ i) x

tactic: apply hx
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ Part.fix (↑f) x ≤ ?m.11030

α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ ?m.11030 ≤ approx (↑f) (Nat.succ i) x

α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ Part (β x)

tactic: apply approx_mono' f
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
x : α✝
i : ℕ
hx : Part.fix (↑f) x ≤ approx (↑f) i x
⊢ approx (↑f) i x ≤ approx (↑f) (Nat.succ i) x

tactic: apply ωSup_le _ _ _
state_before: case a
α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
⊢ ωSup (approxChain f) ≤ Part.fix ↑f

tactic: simp only [Fix.approxChain, OrderHom.coe_fun_mk]
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
⊢ ∀ (i : ℕ), ↑(approxChain f) i ≤ Part.fix ↑f

tactic: intro y x
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
⊢ ∀ (i : ℕ), approx (↑f) i ≤ Part.fix ↑f

tactic: apply approx_le_fix f
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type ?u.10198
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
y : ℕ
x : α✝
⊢ approx (↑f) y x ≤ Part.fix (↑f) x