-- Mathlib/SetTheory/Ordinal/FixedPointApproximants.lean
theorem lfpApprox_monotone : Monotone (lfpApprox f x)

Proof state:
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ Monotone (lfpApprox f x)

Tactic:
intros a b h

Result:
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ lfpApprox f x a ≤ lfpApprox f x b

Proof state:
case h.h₁
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
a' : Ordinal.{u}
h' : a' < a
⊢ ∃ b_1 < b, f (lfpApprox f x b_1) = f (lfpApprox f x a')

Tactic:
use a'

Result:
case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
a' : Ordinal.{u}
h' : a' < a
⊢ a' < b ∧ f (lfpApprox f x a') = f (lfpApprox f x a')

Proof state:
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ sSup ({x_1 | ∃ b, ∃ (_ : b < a), f (lfpApprox f x b) = x_1} ∪ {x}) ≤
    sSup ({x_1 | ∃ b_1, ∃ (_ : b_1 < b), f (lfpApprox f x b_1) = x_1} ∪ {x})

Tactic:
refine sSup_le_sSup ?h

Result:
case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ {x_1 | ∃ b, ∃ (_ : b < a), f (lfpApprox f x b) = x_1} ∪ {x} ⊆
    {x_1 | ∃ b_1, ∃ (_ : b_1 < b), f (lfpApprox f x b_1) = x_1} ∪ {x}

Proof state:
case h.h₁
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ {x_1 | ∃ b, ∃ (_ : b < a), f (lfpApprox f x b) = x_1} ≤ {x_1 | ∃ b_1, ∃ (_ : b_1 < b), f (lfpApprox f x b_1) = x_1}

Tactic:
simp only [exists_prop, Set.le_eq_subset, Set.setOf_subset_setOf, forall_exists_index, and_imp,
  forall_apply_eq_imp_iff₂]

Result:
case h.h₁
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ ∀ a_1 < a, ∃ b_1 < b, f (lfpApprox f x b_1) = f (lfpApprox f x a_1)

Proof state:
case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ {x_1 | ∃ b, ∃ (_ : b < a), f (lfpApprox f x b) = x_1} ∪ {x} ⊆
    {x_1 | ∃ b_1, ∃ (_ : b_1 < b), f (lfpApprox f x b_1) = x_1} ∪ {x}

Tactic:
apply sup_le_sup_right

Result:
case h.h₁
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ {x_1 | ∃ b, ∃ (_ : b < a), f (lfpApprox f x b) = x_1} ≤ {x_1 | ∃ b_1, ∃ (_ : b_1 < b), f (lfpApprox f x b_1) = x_1}

Proof state:
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ lfpApprox f x a ≤ lfpApprox f x b

Tactic:
rw [lfpApprox, lfpApprox]

Result:
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ sSup ({x_1 | ∃ b, ∃ (_ : b < a), f (lfpApprox f x b) = x_1} ∪ {x}) ≤
    sSup ({x_1 | ∃ b_1, ∃ (_ : b_1 < b), f (lfpApprox f x b_1) = x_1} ∪ {x})

Proof state:
case h.h₁
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
⊢ ∀ a_1 < a, ∃ b_1 < b, f (lfpApprox f x b_1) = f (lfpApprox f x a_1)

Tactic:
intros a' h'

Result:
case h.h₁
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
a' : Ordinal.{u}
h' : a' < a
⊢ ∃ b_1 < b, f (lfpApprox f x b_1) = f (lfpApprox f x a')

Proof state:
case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
a b : Ordinal.{u}
h : a ≤ b
a' : Ordinal.{u}
h' : a' < a
⊢ a' < b ∧ f (lfpApprox f x a') = f (lfpApprox f x a')

Tactic:
exact ⟨lt_of_lt_of_le h' h, rfl⟩

Result:
no goals