Theorem: limsup_max
File: Mathlib/Order/LiminfLimsup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
⊢ limsup (fun a => max (u a) (v a)) f = max (limsup u f) (limsup v f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
bddmax : IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun a => u a ⊔ v a
⊢ limsup (fun a => max (u a) (v a)) f = max (limsup u f) (limsup v f)
tactic: have bddmax := IsBoundedUnder.sup h₃ h₄
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
bddmax : IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun a => u a ⊔ v a
⊢ limsup (fun a => max (u a) (v a)) f = max (limsup u f) (limsup v f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
bddmax : IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun a => u a ⊔ v a
cobddmax : IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => max (u a) (v a)
⊢ limsup (fun a => max (u a) (v a)) f = max (limsup u f) (limsup v f)
tactic: have cobddmax := isCoboundedUnder_le_max (v := v) (Or.inl h₁)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
bddmax : IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun a => u a ⊔ v a
cobddmax : IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => max (u a) (v a)
⊢ limsup (fun a => max (u a) (v a)) f = max (limsup u f) (limsup v f)
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
bddmax : IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun a => u a ⊔ v a
cobddmax : IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => max (u a) (v a)
⊢ limsup (fun a => max (u a) (v a)) f ≤ max (limsup u f) (limsup v f)

case a
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLinearOrder β
f : Filter α
u v : α → β
h₁ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₂ : autoParam (IsCoboundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
h₃ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f u) _auto✝
h₄ : autoParam (IsBoundedUnder (fun x x_1 => x ≤ x_1) f v) _auto✝
bddmax : IsBoundedUnder (fun x x_1 => x ≤ x_1) f fun a => u a ⊔ v a
cobddmax : IsCoboundedUnder (fun x x_1 => x ≤ x_1) f fun a => max (u a) (v a)
⊢ max (limsup u f) (limsup v f) ≤ limsup (fun a => max (u a) (v a)) f
tactic: apply le_antisymm