Theorem: OmegaCompletePartialOrder.ContinuousHom.Prod.apply_apply
File: Mathlib/Order/OmegaCompletePartialOrder.lean

Proof steps:
state_before: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
x y : (α →𝒄 β) × α
h : x ≤ y
⊢ (fun f => f.1 f.2) x ≤ (fun f => f.1 f.2) y
state_after: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
x y : (α →𝒄 β) × α
h : x ≤ y
⊢ x.1 x.2 ≤ y.1 y.2
tactic: dsimp
state_before: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
x y : (α →𝒄 β) × α
h : x ≤ y
⊢ x.1 x.2 ≤ y.1 y.2
state_after: no goals
tactic: trans y.fst x.snd <;> [apply h.1; apply y.1.monotone h.2]
state_before: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
⊢ Continuous { toFun := fun f => f.1 f.2, monotone' := ⋯ }
state_after: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
c : Chain ((α →𝒄 β) × α)
⊢ { toFun := fun f => f.1 f.2, monotone' := ⋯ } (ωSup c) = ωSup (c.map { toFun := fun f => f.1 f.2, monotone' := ⋯ })
tactic: intro c
state_before: α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
c : Chain ((α →𝒄 β) × α)
⊢ { toFun := fun f => f.1 f.2, monotone' := ⋯ } (ωSup c) = ωSup (c.map { toFun := fun f => f.1 f.2, monotone' := ⋯ })
state_after: case a
α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
c : Chain ((α →𝒄 β) × α)
⊢ { toFun := fun f => f.1 f.2, monotone' := ⋯ } (ωSup c) ≤ ωSup (c.map { toFun := fun f => f.1 f.2, monotone' := ⋯ })

case a
α : Type u
α' : Type u_1
β : Type v
β' : Type u_2
γ : Type u_3
φ : Type u_4
inst✝⁵ : OmegaCompletePartialOrder α
inst✝⁴ : OmegaCompletePartialOrder β
inst✝³ : OmegaCompletePartialOrder γ
inst✝² : OmegaCompletePartialOrder φ
inst✝¹ : OmegaCompletePartialOrder α'
inst✝ : OmegaCompletePartialOrder β'
c : Chain ((α →𝒄 β) × α)
⊢ ωSup (c.map { toFun := fun f => f.1 f.2, monotone' := ⋯ }) ≤ { toFun := fun f => f.1 f.2, monotone' := ⋯ } (ωSup c)
tactic: apply le_antisymm