Theorem: OrderIso.limsup_apply
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ g (limsup u f) = limsup (fun x => g (u x)) f
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ limsup (fun x => g (u x)) f ≤ g (limsup u f)
tactic: refine le_antisymm ((OrderIso.to_galoisConnection g).l_limsup_le hgu hu_co) ?_
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ limsup (fun x => g (u x)) f ≤ g (limsup u f)
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ g (g.symm (limsup (fun x => g (u x)) f)) ≤ g (limsup u f)
tactic: rw [← g.symm.symm_apply_apply <| limsup (fun x => g (u x)) f, g.symm_symm]
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ g (g.symm (limsup (fun x => g (u x)) f)) ≤ g (limsup u f)
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ g.symm (limsup (fun x => g (u x)) f) ≤ limsup u f
tactic: refine g.monotone ?_
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
⊢ g.symm (limsup (fun x => g (u x)) f) ≤ limsup u f
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ g.symm (limsup (fun x => g (u x)) f) ≤ limsup u f
tactic: have hf : u = fun i => g.symm (g (u i)) := funext fun i => (g.symm_apply_apply (u i)).symm
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ g.symm (limsup (fun x => g (u x)) f) ≤ limsup u f
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ g.symm (limsup (fun x => g (u x)) f) ≤ limsup (fun i => g.symm (g (u i))) f
tactic: nth_rw 2 [hf]
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ g.symm (limsup (fun x => g (u x)) f) ≤ limsup (fun i => g.symm (g (u i))) f
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g.symm (g (u x))
tactic: refine (OrderIso.to_galoisConnection g.symm).l_limsup_le ?_ hgu_co
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g.symm (g (u x))
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => u x
tactic: simp_rw [g.symm_apply_apply]
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
ι : Type u_4
ι' : Type u_5
γ : Type u_6
inst✝¹ : ConditionallyCompleteLattice β
inst✝ : ConditionallyCompleteLattice γ
f : Filter α
u : α → β
g : β ≃o γ
hu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
hgu : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hgu_co : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun x => g (u x)) _auto✝
hf : u = fun i => g.symm (g (u i))
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun x => u x
state_after: no goals
tactic: exact hu