order.omega_complete_partial_order
⟷
Mathlib.Order.OmegaCompletePartialOrder
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
wlog
(#16495)
Benefits:
Downside:
Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/wlog/near/296996966
Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -284,7 +284,7 @@ lemma eq_of_chain {c : chain (part α)} {a b : α} (ha : some a ∈ c) (hb : som
begin
cases ha with i ha, replace ha := ha.symm,
cases hb with j hb, replace hb := hb.symm,
- wlog h : i ≤ j := le_total i j using [a b i j, b a j i],
+ wlog h : i ≤ j, { exact (this j hb i ha (le_of_not_le h)).symm },
rw [eq_some_iff] at ha hb,
have := c.monotone h _ ha, apply mem_unique this hb
end
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(first ported)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -6,7 +6,7 @@ Authors: Simon Hudon
import Control.Monad.Basic
import Data.Part
import Order.Hom.Order
-import Data.Nat.Order.Basic
+import Algebra.Order.Group.Nat
import Tactic.Wlog
#align_import order.omega_complete_partial_order from "leanprover-community/mathlib"@"92ca63f0fb391a9ca5f22d2409a6080e786d99f7"
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -187,7 +187,7 @@ open OmegaCompletePartialOrder
section Prio
-/- ./././Mathport/Syntax/Translate/Basic.lean:339:40: warning: unsupported option extends_priority -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:340:40: warning: unsupported option extends_priority -/
set_option extends_priority 50
#print OmegaCompletePartialOrder /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -378,7 +378,7 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
cases' ha with i ha; replace ha := ha.symm
cases' hb with j hb; replace hb := hb.symm
wlog h : i ≤ j; · exact (this j hb i ha (le_of_not_le h)).symm
- rw [eq_some_iff] at ha hb
+ rw [eq_some_iff] at ha hb
have := c.monotone h _ ha; apply mem_unique this hb
#align part.eq_of_chain Part.eq_of_chain
-/
@@ -409,9 +409,9 @@ theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.
#print Part.mem_chain_of_mem_ωSup /-
theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ωSup c) : some a ∈ c :=
by
- simp [Part.ωSup] at h ; split_ifs at h
+ simp [Part.ωSup] at h; split_ifs at h
· have h' := Classical.choose_spec h_1
- rw [← eq_some_iff] at h ; rw [← h]; exact h'
+ rw [← eq_some_iff] at h; rw [← h]; exact h'
· rcases h with ⟨⟨⟩⟩
#align part.mem_chain_of_mem_ωSup Part.mem_chain_of_mem_ωSup
-/
@@ -438,7 +438,7 @@ theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈
constructor
· split_ifs; swap; rintro ⟨⟨⟩⟩
intro h'; have hh := Classical.choose_spec h
- simp at h' ; subst x; exact hh
+ simp at h'; subst x; exact hh
· intro h
have h' : ∃ a : α, some a ∈ c := ⟨_, h⟩
rw [dif_pos h']; have hh := Classical.choose_spec h'
@@ -555,7 +555,7 @@ theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f)
#print CompleteLattice.iSup_continuous /-
theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
- sSup_continuous _ <| Set.forall_range_iff.2 h
+ sSup_continuous _ <| Set.forall_mem_range.2 h
#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
-/
@@ -563,7 +563,7 @@ theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Contin
theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) : Continuous' (sSup s) :=
by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
- simp only [Set.ball_image_iff, continuous'_coe] at hc
+ simp only [Set.forall_mem_image, continuous'_coe] at hc
rw [sSup_image]
norm_cast
exact supr_continuous fun f => supr_continuous fun hf => hc f hf
@@ -733,9 +733,9 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
simp only [ωSup_le_iff, Part.bind_le, chain.mem_map_iff, and_imp, OrderHom.bind_coe, exists_imp]
constructor <;> intro h'''
· intro b hb; apply ωSup_le _ _ _
- rintro i y hy; simp only [Part.mem_ωSup] at hb
+ rintro i y hy; simp only [Part.mem_ωSup] at hb
rcases hb with ⟨j, hb⟩; replace hb := hb.symm
- simp only [Part.eq_some_iff, chain.map_coe, Function.comp_apply, OrderHom.apply_coe] at hy hb
+ simp only [Part.eq_some_iff, chain.map_coe, Function.comp_apply, OrderHom.apply_coe] at hy hb
replace hb : b ∈ f (c (max i j)) := f.mono (c.mono (le_max_right i j)) _ hb
replace hy : y ∈ g (c (max i j)) b := g.mono (c.mono (le_max_left i j)) _ _ hy
apply h''' (max i j)
@@ -744,7 +744,7 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
exact ⟨_, hb, hy⟩
· intro i; intro y hy
simp only [exists_prop, Part.bind_eq_bind, Part.mem_bind_iff, chain.map_coe,
- Function.comp_apply, OrderHom.bind_coe] at hy
+ Function.comp_apply, OrderHom.bind_coe] at hy
rcases hy with ⟨b, hb₀, hb₁⟩
apply h''' b _
· apply le_ωSup (c.map g) _ _ _ hb₁
mathlib commit https://github.com/leanprover-community/mathlib/commit/b1abe23ae96fef89ad30d9f4362c307f72a55010
@@ -235,7 +235,7 @@ theorem le_ωSup_of_le {c : Chain α} {x : α} (i : ℕ) (h : x ≤ c i) : x ≤
#print OmegaCompletePartialOrder.ωSup_total /-
theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i) : ωSup c ≤ x ∨ x ≤ ωSup c :=
by_cases (fun this : ∀ i, c i ≤ x => Or.inl (ωSup_le _ _ this)) fun this : ¬∀ i, c i ≤ x =>
- have : ∃ i, ¬c i ≤ x := by simp only [not_forall] at this ⊢ <;> assumption
+ have : ∃ i, ¬c i ≤ x := by simp only [Classical.not_forall] at this ⊢ <;> assumption
let ⟨i, hx⟩ := this
have : x ≤ c i := (h i).resolve_left hx
Or.inr <| le_ωSup_of_le _ this
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2020 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon
-/
-import Mathbin.Control.Monad.Basic
-import Mathbin.Data.Part
-import Mathbin.Order.Hom.Order
-import Mathbin.Data.Nat.Order.Basic
-import Mathbin.Tactic.Wlog
+import Control.Monad.Basic
+import Data.Part
+import Order.Hom.Order
+import Data.Nat.Order.Basic
+import Tactic.Wlog
#align_import order.omega_complete_partial_order from "leanprover-community/mathlib"@"92ca63f0fb391a9ca5f22d2409a6080e786d99f7"
@@ -187,7 +187,7 @@ open OmegaCompletePartialOrder
section Prio
-/- ./././Mathport/Syntax/Translate/Basic.lean:334:40: warning: unsupported option extends_priority -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:339:40: warning: unsupported option extends_priority -/
set_option extends_priority 50
#print OmegaCompletePartialOrder /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/63721b2c3eba6c325ecf8ae8cca27155a4f6306f
@@ -537,8 +537,8 @@ instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α
where
ωSup c := ⨆ i, c i
ωSup_le := fun ⟨c, _⟩ s hs => by
- simp only [iSup_le_iff, OrderHom.coe_fun_mk] at hs ⊢ <;> intro i <;> apply hs i
- le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk] <;> apply le_iSup_of_le i <;> rfl
+ simp only [iSup_le_iff, OrderHom.coe_mk] at hs ⊢ <;> intro i <;> apply hs i
+ le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_mk] <;> apply le_iSup_of_le i <;> rfl
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
@@ -784,31 +784,31 @@ theorem continuous (F : α →𝒄 β) (C : Chain α) : F (ωSup C) = ωSup (C.m
#align omega_complete_partial_order.continuous_hom.continuous OmegaCompletePartialOrder.ContinuousHom.continuous
-/
-#print OmegaCompletePartialOrder.ContinuousHom.ofFun /-
+#print OmegaCompletePartialOrder.ContinuousHom.copy /-
/-- Construct a continuous function from a bare function, a continuous function, and a proof that
they are equal. -/
@[simps, reducible]
-def ofFun (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β := by
+def copy (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β := by
refine' { toOrderHom := { toFun := f .. } .. } <;> subst h <;> rcases g with ⟨⟨⟩⟩ <;> assumption
-#align omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.ofFun
+#align omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.copy
-/
-#print OmegaCompletePartialOrder.ContinuousHom.ofMono /-
+#print OmegaCompletePartialOrder.ContinuousHom.mk /-
/-- Construct a continuous function from a monotone function with a proof of continuity. -/
@[simps, reducible]
-def ofMono (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)) : α →𝒄 β
+def mk (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)) : α →𝒄 β
where
toFun := f
monotone' := f.Monotone
cont := h
-#align omega_complete_partial_order.continuous_hom.of_mono OmegaCompletePartialOrder.ContinuousHom.ofMono
+#align omega_complete_partial_order.continuous_hom.of_mono OmegaCompletePartialOrder.ContinuousHom.mk
-/
#print OmegaCompletePartialOrder.ContinuousHom.id /-
/-- The identity as a continuous function. -/
@[simps]
def id : α →𝒄 α :=
- ofMono OrderHom.id continuous_id
+ mk OrderHom.id continuous_id
#align omega_complete_partial_order.continuous_hom.id OmegaCompletePartialOrder.ContinuousHom.id
-/
@@ -816,7 +816,7 @@ def id : α →𝒄 α :=
/-- The composition of continuous functions. -/
@[simps]
def comp (f : β →𝒄 γ) (g : α →𝒄 β) : α →𝒄 γ :=
- ofMono (OrderHom.comp ↑f ↑g) (continuous_comp _ _ g.cont f.cont)
+ mk (OrderHom.comp ↑f ↑g) (continuous_comp _ _ g.cont f.cont)
#align omega_complete_partial_order.continuous_hom.comp OmegaCompletePartialOrder.ContinuousHom.comp
-/
@@ -852,15 +852,17 @@ theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) :
#align omega_complete_partial_order.continuous_hom.comp_assoc OmegaCompletePartialOrder.ContinuousHom.comp_assoc
-/
+#print OmegaCompletePartialOrder.ContinuousHom.coe_apply /-
@[simp]
theorem coe_apply (a : α) (f : α →𝒄 β) : (f : α →o β) a = f a :=
rfl
#align omega_complete_partial_order.continuous_hom.coe_apply OmegaCompletePartialOrder.ContinuousHom.coe_apply
+-/
#print OmegaCompletePartialOrder.ContinuousHom.const /-
/-- `function.const` is a continuous function. -/
def const (x : β) : α →𝒄 β :=
- ofMono (OrderHom.const _ x) (continuous_const x)
+ mk (OrderHom.const _ x) (continuous_const x)
#align omega_complete_partial_order.continuous_hom.const OmegaCompletePartialOrder.ContinuousHom.const
-/
@@ -915,7 +917,7 @@ theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
of the functions in the `ω`-chain. -/
@[simps]
protected def ωSup (c : Chain (α →𝒄 β)) : α →𝒄 β :=
- ContinuousHom.ofMono (ωSup <| c.map toMono)
+ ContinuousHom.mk (ωSup <| c.map toMono)
(by
intro c'
apply eq_of_forall_ge_iff; intro z
@@ -987,7 +989,7 @@ def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
/-- `part.bind` as a continuous function. -/
@[simps (config := { rhsMd := reducible })]
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
- ofMono (OrderHom.bind ↑f ↑g) fun c =>
+ mk (OrderHom.bind ↑f ↑g) fun c =>
by
rw [OrderHom.bind, ← OrderHom.bind, ωSup_bind, ← f.continuous, ← g.continuous]
rfl
@@ -998,7 +1000,7 @@ noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄
/-- `part.map` as a continuous function. -/
@[simps (config := { rhsMd := reducible })]
noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
- ofFun (fun x => f <$> g x) (bind g (const (pure ∘ f))) <| by
+ copy (fun x => f <$> g x) (bind g (const (pure ∘ f))) <| by
ext <;>
simp only [map_eq_bind_pure_comp, bind_apply, OrderHom.bind_coe, const_apply,
OrderHom.const_coe_coe, coe_apply]
@@ -1009,7 +1011,7 @@ noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β)
/-- `part.seq` as a continuous function. -/
@[simps (config := { rhsMd := reducible })]
noncomputable def seq {β γ : Type v} (f : α →𝒄 Part (β → γ)) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
- ofFun (fun x => f x <*> g x) (bind f <| flip <| flip map g)
+ copy (fun x => f x <*> g x) (bind f <| flip <| flip map g)
(by
ext <;>
simp only [seq_eq_bind_map, flip, Part.bind_eq_bind, map_apply, Part.mem_bind_iff,
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2020 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon
-
-! This file was ported from Lean 3 source module order.omega_complete_partial_order
-! leanprover-community/mathlib commit 92ca63f0fb391a9ca5f22d2409a6080e786d99f7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Control.Monad.Basic
import Mathbin.Data.Part
@@ -14,6 +9,8 @@ import Mathbin.Order.Hom.Order
import Mathbin.Data.Nat.Order.Basic
import Mathbin.Tactic.Wlog
+#align_import order.omega_complete_partial_order from "leanprover-community/mathlib"@"92ca63f0fb391a9ca5f22d2409a6080e786d99f7"
+
/-!
# Omega Complete Partial Orders
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -77,6 +77,7 @@ variable {β γ}
variable {α} {α' : Type _} {β' : Type _} [Preorder α'] [Preorder β']
+#print OrderHom.bind /-
/-- `part.bind` as a monotone function -/
@[simps]
def bind {β γ} (f : α →o Part β) (g : α →o β → Part γ) : α →o Part γ
@@ -88,6 +89,7 @@ def bind {β γ} (f : α →o Part β) (g : α →o β → Part γ) : α →o Pa
intro b hb ha
refine' ⟨b, f.monotone h _ hb, g.monotone h _ _ ha⟩
#align order_hom.bind OrderHom.bind
+-/
end OrderHom
@@ -159,9 +161,11 @@ theorem map_id : c.map OrderHom.id = c :=
#align omega_complete_partial_order.chain.map_id OmegaCompletePartialOrder.Chain.map_id
-/
+#print OmegaCompletePartialOrder.Chain.map_comp /-
theorem map_comp : (c.map f).map g = c.map (g.comp f) :=
rfl
#align omega_complete_partial_order.chain.map_comp OmegaCompletePartialOrder.Chain.map_comp
+-/
#print OmegaCompletePartialOrder.Chain.map_le_map /-
@[mono]
@@ -170,11 +174,13 @@ theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g := fun i
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
-/
+#print OmegaCompletePartialOrder.Chain.zip /-
/-- `chain.zip` pairs up the elements of two chains that have the same index -/
@[simps]
def zip (c₀ : Chain α) (c₁ : Chain β) : Chain (α × β) :=
OrderHom.prod c₀ c₁
#align omega_complete_partial_order.chain.zip OmegaCompletePartialOrder.Chain.zip
+-/
end Chain
@@ -333,11 +339,13 @@ theorem continuous_id : Continuous (@OrderHom.id α _) := by intro <;> rw [c.map
#align omega_complete_partial_order.continuous_id OmegaCompletePartialOrder.continuous_id
-/
+#print OmegaCompletePartialOrder.continuous_comp /-
theorem continuous_comp (hfc : Continuous f) (hgc : Continuous g) : Continuous (g.comp f) :=
by
dsimp [Continuous] at *; intro
rw [hfc, hgc, chain.map_comp]
#align omega_complete_partial_order.continuous_comp OmegaCompletePartialOrder.continuous_comp
+-/
#print OmegaCompletePartialOrder.id_continuous' /-
theorem id_continuous' : Continuous' (@id α) :=
@@ -367,6 +375,7 @@ variable {α : Type u} {β : Type v} {γ : Type _}
open OmegaCompletePartialOrder
+#print Part.eq_of_chain /-
theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : some b ∈ c) : a = b :=
by
cases' ha with i ha; replace ha := ha.symm
@@ -375,12 +384,16 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
rw [eq_some_iff] at ha hb
have := c.monotone h _ ha; apply mem_unique this hb
#align part.eq_of_chain Part.eq_of_chain
+-/
+#print Part.ωSup /-
/-- The (noncomputable) `ωSup` definition for the `ω`-CPO structure on `part α`. -/
protected noncomputable def ωSup (c : Chain (Part α)) : Part α :=
if h : ∃ a, some a ∈ c then some (Classical.choose h) else none
#align part.ωSup Part.ωSup
+-/
+#print Part.ωSup_eq_some /-
theorem ωSup_eq_some {c : Chain (Part α)} {a : α} (h : some a ∈ c) : Part.ωSup c = some a :=
have : ∃ a, some a ∈ c := ⟨a, h⟩
have a' : some (Classical.choose this) ∈ c := Classical.choose_spec this
@@ -388,11 +401,15 @@ theorem ωSup_eq_some {c : Chain (Part α)} {a : α} (h : some a ∈ c) : Part.
Part.ωSup c = some (Classical.choose this) := dif_pos this
_ = some a := congr_arg _ (eq_of_chain a' h)
#align part.ωSup_eq_some Part.ωSup_eq_some
+-/
+#print Part.ωSup_eq_none /-
theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.ωSup c = none :=
dif_neg h
#align part.ωSup_eq_none Part.ωSup_eq_none
+-/
+#print Part.mem_chain_of_mem_ωSup /-
theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ωSup c) : some a ∈ c :=
by
simp [Part.ωSup] at h ; split_ifs at h
@@ -400,6 +417,7 @@ theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ω
rw [← eq_some_iff] at h ; rw [← h]; exact h'
· rcases h with ⟨⟨⟩⟩
#align part.mem_chain_of_mem_ωSup Part.mem_chain_of_mem_ωSup
+-/
#print Part.omegaCompletePartialOrder /-
noncomputable instance omegaCompletePartialOrder : OmegaCompletePartialOrder (Part α)
@@ -416,6 +434,7 @@ noncomputable instance omegaCompletePartialOrder : OmegaCompletePartialOrder (Pa
section Inst
+#print Part.mem_ωSup /-
theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈ c :=
by
simp [OmegaCompletePartialOrder.ωSup, Part.ωSup]
@@ -428,6 +447,7 @@ theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈
rw [dif_pos h']; have hh := Classical.choose_spec h'
rw [eq_of_chain hh h]; simp
#align part.mem_ωSup Part.mem_ωSup
+-/
end Inst
@@ -451,10 +471,12 @@ variable [∀ x, OmegaCompletePartialOrder <| β x]
variable [OmegaCompletePartialOrder γ]
+#print Pi.OmegaCompletePartialOrder.flip₁_continuous' /-
theorem flip₁_continuous' (f : ∀ x : α, γ → β x) (a : α) (hf : Continuous' fun x y => f y x) :
Continuous' (f a) :=
Continuous.of_bundled _ (fun x y h => hf.to_monotone h a) fun c => congr_fun (hf.to_bundled _ c) a
#align pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'
+-/
#print Pi.OmegaCompletePartialOrder.flip₂_continuous' /-
theorem flip₂_continuous' (f : γ → ∀ x, β x) (hf : ∀ x, Continuous' fun g => f g x) :
@@ -480,11 +502,13 @@ variable [OmegaCompletePartialOrder β]
variable [OmegaCompletePartialOrder γ]
+#print Prod.ωSup /-
/-- The supremum of a chain in the product `ω`-CPO. -/
@[simps]
protected def ωSup (c : Chain (α × β)) : α × β :=
(ωSup (c.map OrderHom.fst), ωSup (c.map OrderHom.snd))
#align prod.ωSup Prod.ωSup
+-/
@[simps ωSup_fst ωSup_snd]
instance : OmegaCompletePartialOrder (α × β)
@@ -493,11 +517,13 @@ instance : OmegaCompletePartialOrder (α × β)
ωSup_le := fun c ⟨x, x'⟩ h => ⟨ωSup_le _ _ fun i => (h i).1, ωSup_le _ _ fun i => (h i).2⟩
le_ωSup c i := ⟨le_ωSup (c.map OrderHom.fst) i, le_ωSup (c.map OrderHom.snd) i⟩
+#print Prod.ωSup_zip /-
theorem ωSup_zip (c₀ : Chain α) (c₁ : Chain β) : ωSup (c₀.zip c₁) = (ωSup c₀, ωSup c₁) :=
by
apply eq_of_forall_ge_iff; rintro ⟨z₁, z₂⟩
simp [ωSup_le_iff, forall_and]
#align prod.ωSup_zip Prod.ωSup_zip
+-/
end Prod
@@ -519,6 +545,7 @@ instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
+#print CompleteLattice.sSup_continuous /-
theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (sSup s) :=
by
intro c; apply eq_of_forall_ge_iff; intro z
@@ -526,12 +553,16 @@ theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f)
simpa (config := { contextual := true }) [ωSup_le_iff, hs _ _ _]
exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuous
+-/
+#print CompleteLattice.iSup_continuous /-
theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
sSup_continuous _ <| Set.forall_range_iff.2 h
#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
+-/
+#print CompleteLattice.sSup_continuous' /-
theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) : Continuous' (sSup s) :=
by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
@@ -540,25 +571,32 @@ theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f)
norm_cast
exact supr_continuous fun f => supr_continuous fun hf => hc f hf
#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'
+-/
+#print CompleteLattice.sup_continuous /-
theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊔ g) := by
rw [← sSup_pair]; apply Sup_continuous
rintro f (rfl | rfl | _) <;> assumption
#align complete_lattice.sup_continuous CompleteLattice.sup_continuous
+-/
+#print CompleteLattice.top_continuous /-
theorem top_continuous : Continuous (⊤ : α →o β) :=
by
intro c; apply eq_of_forall_ge_iff; intro z
simp only [ωSup_le_iff, forall_const, chain.map_coe, (· ∘ ·), Function.const, OrderHom.hasTop_top,
OrderHom.const_coe_coe]
#align complete_lattice.top_continuous CompleteLattice.top_continuous
+-/
+#print CompleteLattice.bot_continuous /-
theorem bot_continuous : Continuous (⊥ : α →o β) :=
by
rw [← sSup_empty]
exact Sup_continuous _ fun f hf => hf.elim
#align complete_lattice.bot_continuous CompleteLattice.bot_continuous
+-/
end CompleteLattice
@@ -566,6 +604,7 @@ namespace CompleteLattice
variable {α β : Type _} [OmegaCompletePartialOrder α] [CompleteLinearOrder β]
+#print CompleteLattice.inf_continuous /-
theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊓ g) := by
refine' fun c => eq_of_forall_ge_iff fun z => _
@@ -576,11 +615,14 @@ theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g
(h (max i j)).imp (le_trans <| f.mono <| c.mono <| le_max_left _ _)
(le_trans <| g.mono <| c.mono <| le_max_right _ _)⟩
#align complete_lattice.inf_continuous CompleteLattice.inf_continuous
+-/
+#print CompleteLattice.inf_continuous' /-
theorem inf_continuous' {f g : α → β} (hf : Continuous' f) (hg : Continuous' g) :
Continuous' (f ⊓ g) :=
⟨_, inf_continuous _ _ hf.snd hg.snd⟩
#align complete_lattice.inf_continuous' CompleteLattice.inf_continuous'
+-/
end CompleteLattice
@@ -630,7 +672,6 @@ structure ContinuousHom extends OrderHom α β where
attribute [nolint doc_blame] continuous_hom.to_order_hom
--- mathport name: «expr →𝒄 »
infixr:25 " →𝒄 " => ContinuousHom
-- Input: \r\MIc
@@ -687,6 +728,7 @@ theorem ite_continuous' {p : Prop} [hp : Decidable p] (f g : α → β) (hf : Co
#align omega_complete_partial_order.continuous_hom.ite_continuous' OmegaCompletePartialOrder.ContinuousHom.ite_continuous'
-/
+#print OmegaCompletePartialOrder.ContinuousHom.ωSup_bind /-
theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α →o β → Part γ) :
ωSup (c.map (f.bind g)) = ωSup (c.map f) >>= ωSup (c.map g) :=
by
@@ -711,19 +753,25 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
· apply le_ωSup (c.map g) _ _ _ hb₁
· apply le_ωSup (c.map f) i _ hb₀
#align omega_complete_partial_order.continuous_hom.ωSup_bind OmegaCompletePartialOrder.ContinuousHom.ωSup_bind
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.bind_continuous' /-
theorem bind_continuous' {β γ : Type v} (f : α → Part β) (g : α → β → Part γ) :
Continuous' f → Continuous' g → Continuous' fun x => f x >>= g x
| ⟨hf, hf'⟩, ⟨hg, hg'⟩ =>
Continuous.of_bundled' (OrderHom.bind ⟨f, hf⟩ ⟨g, hg⟩)
(by intro c <;> rw [ωSup_bind, ← hf', ← hg'] <;> rfl)
#align omega_complete_partial_order.continuous_hom.bind_continuous' OmegaCompletePartialOrder.ContinuousHom.bind_continuous'
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.map_continuous' /-
theorem map_continuous' {β γ : Type v} (f : β → γ) (g : α → Part β) (hg : Continuous' g) :
Continuous' fun x => f <$> g x := by
simp only [map_eq_bind_pure_comp] <;> apply bind_continuous' _ _ hg <;> apply const_continuous'
#align omega_complete_partial_order.continuous_hom.map_continuous' OmegaCompletePartialOrder.ContinuousHom.map_continuous'
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.seq_continuous' /-
theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α → Part β) (hf : Continuous' f)
(hg : Continuous' g) : Continuous' fun x => f x <*> g x := by
simp only [seq_eq_bind_map] <;> apply bind_continuous' _ _ hf <;>
@@ -731,6 +779,7 @@ theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α
intro <;>
apply map_continuous' _ _ hg
#align omega_complete_partial_order.continuous_hom.seq_continuous' OmegaCompletePartialOrder.ContinuousHom.seq_continuous'
+-/
#print OmegaCompletePartialOrder.ContinuousHom.continuous /-
theorem continuous (F : α →𝒄 β) (C : Chain α) : F (ωSup C) = ωSup (C.map F) :=
@@ -787,18 +836,24 @@ protected theorem coe_inj (f g : α →𝒄 β) (h : (f : α → β) = g) : f =
#align omega_complete_partial_order.continuous_hom.coe_inj OmegaCompletePartialOrder.ContinuousHom.coe_inj
-/
+#print OmegaCompletePartialOrder.ContinuousHom.comp_id /-
@[simp]
theorem comp_id (f : β →𝒄 γ) : f.comp id = f := by ext <;> rfl
#align omega_complete_partial_order.continuous_hom.comp_id OmegaCompletePartialOrder.ContinuousHom.comp_id
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.id_comp /-
@[simp]
theorem id_comp (f : β →𝒄 γ) : id.comp f = f := by ext <;> rfl
#align omega_complete_partial_order.continuous_hom.id_comp OmegaCompletePartialOrder.ContinuousHom.id_comp
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.comp_assoc /-
@[simp]
theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) : f.comp (g.comp h) = (f.comp g).comp h :=
by ext <;> rfl
#align omega_complete_partial_order.continuous_hom.comp_assoc OmegaCompletePartialOrder.ContinuousHom.comp_assoc
+-/
@[simp]
theorem coe_apply (a : α) (f : α →𝒄 β) : (f : α →o β) a = f a :=
@@ -880,6 +935,7 @@ instance : OmegaCompletePartialOrder (α →𝒄 β) :=
namespace Prod
+#print OmegaCompletePartialOrder.ContinuousHom.Prod.apply /-
/-- The application of continuous functions as a continuous function. -/
@[simps]
def apply : (α →𝒄 β) × α →𝒄 β where
@@ -903,6 +959,7 @@ def apply : (α →𝒄 β) × α →𝒄 β where
apply le_ωSup_of_le i
rfl
#align omega_complete_partial_order.continuous_hom.prod.apply OmegaCompletePartialOrder.ContinuousHom.Prod.apply
+-/
end Prod
@@ -912,9 +969,11 @@ theorem ωSup_def (c : Chain (α →𝒄 β)) (x : α) : ωSup c x = ContinuousH
#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_def
-/
+#print OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup /-
theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
ωSup c₀ (ωSup c₁) = Prod.apply (ωSup (c₀.zip c₁)) := by simp [prod.apply_apply, Prod.ωSup_zip]
#align omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
+-/
#print OmegaCompletePartialOrder.ContinuousHom.flip /-
/-- A family of continuous functions yields a continuous family of functions. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -387,7 +387,6 @@ theorem ωSup_eq_some {c : Chain (Part α)} {a : α} (h : some a ∈ c) : Part.
calc
Part.ωSup c = some (Classical.choose this) := dif_pos this
_ = some a := congr_arg _ (eq_of_chain a' h)
-
#align part.ωSup_eq_some Part.ωSup_eq_some
theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.ωSup c = none :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -396,7 +396,7 @@ theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.
theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ωSup c) : some a ∈ c :=
by
- simp [Part.ωSup] at h ; split_ifs at h
+ simp [Part.ωSup] at h ; split_ifs at h
· have h' := Classical.choose_spec h_1
rw [← eq_some_iff] at h ; rw [← h]; exact h'
· rcases h with ⟨⟨⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -232,7 +232,7 @@ theorem le_ωSup_of_le {c : Chain α} {x : α} (i : ℕ) (h : x ≤ c i) : x ≤
#print OmegaCompletePartialOrder.ωSup_total /-
theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i) : ωSup c ≤ x ∨ x ≤ ωSup c :=
by_cases (fun this : ∀ i, c i ≤ x => Or.inl (ωSup_le _ _ this)) fun this : ¬∀ i, c i ≤ x =>
- have : ∃ i, ¬c i ≤ x := by simp only [not_forall] at this⊢ <;> assumption
+ have : ∃ i, ¬c i ≤ x := by simp only [not_forall] at this ⊢ <;> assumption
let ⟨i, hx⟩ := this
have : x ≤ c i := (h i).resolve_left hx
Or.inr <| le_ωSup_of_le _ this
@@ -372,7 +372,7 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
cases' ha with i ha; replace ha := ha.symm
cases' hb with j hb; replace hb := hb.symm
wlog h : i ≤ j; · exact (this j hb i ha (le_of_not_le h)).symm
- rw [eq_some_iff] at ha hb
+ rw [eq_some_iff] at ha hb
have := c.monotone h _ ha; apply mem_unique this hb
#align part.eq_of_chain Part.eq_of_chain
@@ -396,9 +396,9 @@ theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.
theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ωSup c) : some a ∈ c :=
by
- simp [Part.ωSup] at h; split_ifs at h
+ simp [Part.ωSup] at h ; split_ifs at h
· have h' := Classical.choose_spec h_1
- rw [← eq_some_iff] at h; rw [← h]; exact h'
+ rw [← eq_some_iff] at h ; rw [← h]; exact h'
· rcases h with ⟨⟨⟩⟩
#align part.mem_chain_of_mem_ωSup Part.mem_chain_of_mem_ωSup
@@ -407,7 +407,7 @@ noncomputable instance omegaCompletePartialOrder : OmegaCompletePartialOrder (Pa
where
ωSup := Part.ωSup
le_ωSup c i := by
- intro x hx; rw [← eq_some_iff] at hx⊢
+ intro x hx; rw [← eq_some_iff] at hx ⊢
rw [ωSup_eq_some, ← hx]; rw [← hx]; exact ⟨i, rfl⟩
ωSup_le := by
rintro c x hx a ha; replace ha := mem_chain_of_mem_ωSup ha
@@ -423,7 +423,7 @@ theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈
constructor
· split_ifs; swap; rintro ⟨⟨⟩⟩
intro h'; have hh := Classical.choose_spec h
- simp at h'; subst x; exact hh
+ simp at h' ; subst x; exact hh
· intro h
have h' : ∃ a : α, some a ∈ c := ⟨_, h⟩
rw [dif_pos h']; have hh := Classical.choose_spec h'
@@ -515,7 +515,7 @@ instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α
where
ωSup c := ⨆ i, c i
ωSup_le := fun ⟨c, _⟩ s hs => by
- simp only [iSup_le_iff, OrderHom.coe_fun_mk] at hs⊢ <;> intro i <;> apply hs i
+ simp only [iSup_le_iff, OrderHom.coe_fun_mk] at hs ⊢ <;> intro i <;> apply hs i
le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk] <;> apply le_iSup_of_le i <;> rfl
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
@@ -536,7 +536,7 @@ theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Contin
theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) : Continuous' (sSup s) :=
by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
- simp only [Set.ball_image_iff, continuous'_coe] at hc
+ simp only [Set.ball_image_iff, continuous'_coe] at hc
rw [sSup_image]
norm_cast
exact supr_continuous fun f => supr_continuous fun hf => hc f hf
@@ -695,9 +695,9 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
simp only [ωSup_le_iff, Part.bind_le, chain.mem_map_iff, and_imp, OrderHom.bind_coe, exists_imp]
constructor <;> intro h'''
· intro b hb; apply ωSup_le _ _ _
- rintro i y hy; simp only [Part.mem_ωSup] at hb
+ rintro i y hy; simp only [Part.mem_ωSup] at hb
rcases hb with ⟨j, hb⟩; replace hb := hb.symm
- simp only [Part.eq_some_iff, chain.map_coe, Function.comp_apply, OrderHom.apply_coe] at hy hb
+ simp only [Part.eq_some_iff, chain.map_coe, Function.comp_apply, OrderHom.apply_coe] at hy hb
replace hb : b ∈ f (c (max i j)) := f.mono (c.mono (le_max_right i j)) _ hb
replace hy : y ∈ g (c (max i j)) b := g.mono (c.mono (le_max_left i j)) _ _ hy
apply h''' (max i j)
@@ -706,7 +706,7 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
exact ⟨_, hb, hy⟩
· intro i; intro y hy
simp only [exists_prop, Part.bind_eq_bind, Part.mem_bind_iff, chain.map_coe,
- Function.comp_apply, OrderHom.bind_coe] at hy
+ Function.comp_apply, OrderHom.bind_coe] at hy
rcases hy with ⟨b, hb₀, hb₁⟩
apply h''' b _
· apply le_ωSup (c.map g) _ _ _ hb₁
@@ -744,7 +744,7 @@ theorem continuous (F : α →𝒄 β) (C : Chain α) : F (ωSup C) = ωSup (C.m
they are equal. -/
@[simps, reducible]
def ofFun (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β := by
- refine' { toOrderHom := { toFun := f.. }.. } <;> subst h <;> rcases g with ⟨⟨⟩⟩ <;> assumption
+ refine' { toOrderHom := { toFun := f .. } .. } <;> subst h <;> rcases g with ⟨⟨⟩⟩ <;> assumption
#align omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.ofFun
-/
@@ -885,7 +885,7 @@ namespace Prod
@[simps]
def apply : (α →𝒄 β) × α →𝒄 β where
toFun f := f.1 f.2
- monotone' x y h := by dsimp; trans y.fst x.snd <;> [apply h.1;apply y.1.Monotone h.2]
+ monotone' x y h := by dsimp; trans y.fst x.snd <;> [apply h.1; apply y.1.Monotone h.2]
cont := by
intro c
apply le_antisymm
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -65,7 +65,7 @@ universe u v
attribute [-simp] Part.bind_eq_bind Part.map_eq_map
-open Classical
+open scoped Classical
namespace OrderHom
@@ -163,10 +163,12 @@ theorem map_comp : (c.map f).map g = c.map (g.comp f) :=
rfl
#align omega_complete_partial_order.chain.map_comp OmegaCompletePartialOrder.Chain.map_comp
+#print OmegaCompletePartialOrder.Chain.map_le_map /-
@[mono]
theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g := fun i => by
simp [mem_map_iff] <;> intros <;> exists i <;> apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
+-/
/-- `chain.zip` pairs up the elements of two chains that have the same index -/
@[simps]
@@ -207,6 +209,7 @@ variable {α : Type u} {β : Type v} {γ : Type _}
variable [OmegaCompletePartialOrder α]
+#print OmegaCompletePartialOrder.lift /-
/-- Transfer a `omega_complete_partial_order` on `β` to a `omega_complete_partial_order` on `α`
using a strictly monotone function `f : β →o α`, a definition of ωSup and a proof that `f` is
continuous with regard to the provided `ωSup` and the ωCPO on `α`. -/
@@ -218,11 +221,15 @@ protected def lift [PartialOrder β] (f : β →o α) (ωSup₀ : Chain β →
ωSup_le c x hx := h _ _ (by rw [h'] <;> apply ωSup_le <;> intro <;> apply f.monotone (hx i))
le_ωSup c i := h _ _ (by rw [h'] <;> apply le_ωSup (c.map f))
#align omega_complete_partial_order.lift OmegaCompletePartialOrder.lift
+-/
+#print OmegaCompletePartialOrder.le_ωSup_of_le /-
theorem le_ωSup_of_le {c : Chain α} {x : α} (i : ℕ) (h : x ≤ c i) : x ≤ ωSup c :=
le_trans h (le_ωSup c _)
#align omega_complete_partial_order.le_ωSup_of_le OmegaCompletePartialOrder.le_ωSup_of_le
+-/
+#print OmegaCompletePartialOrder.ωSup_total /-
theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i) : ωSup c ≤ x ∨ x ≤ ωSup c :=
by_cases (fun this : ∀ i, c i ≤ x => Or.inl (ωSup_le _ _ this)) fun this : ¬∀ i, c i ≤ x =>
have : ∃ i, ¬c i ≤ x := by simp only [not_forall] at this⊢ <;> assumption
@@ -230,12 +237,16 @@ theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i)
have : x ≤ c i := (h i).resolve_left hx
Or.inr <| le_ωSup_of_le _ this
#align omega_complete_partial_order.ωSup_total OmegaCompletePartialOrder.ωSup_total
+-/
+#print OmegaCompletePartialOrder.ωSup_le_ωSup_of_le /-
@[mono]
theorem ωSup_le_ωSup_of_le {c₀ c₁ : Chain α} (h : c₀ ≤ c₁) : ωSup c₀ ≤ ωSup c₁ :=
ωSup_le _ _ fun i => Exists.rec_on (h i) fun j h => le_trans h (le_ωSup _ _)
#align omega_complete_partial_order.ωSup_le_ωSup_of_le OmegaCompletePartialOrder.ωSup_le_ωSup_of_le
+-/
+#print OmegaCompletePartialOrder.ωSup_le_iff /-
theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤ x :=
by
constructor <;> intros
@@ -243,6 +254,7 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
exact le_ωSup _ _; assumption
exact ωSup_le _ _ ‹_›
#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iff
+-/
#print OmegaCompletePartialOrder.subtype /-
/-- A subset `p : α → Prop` of the type closed under `ωSup` induces an
@@ -445,11 +457,13 @@ theorem flip₁_continuous' (f : ∀ x : α, γ → β x) (a : α) (hf : Continu
Continuous.of_bundled _ (fun x y h => hf.to_monotone h a) fun c => congr_fun (hf.to_bundled _ c) a
#align pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'
+#print Pi.OmegaCompletePartialOrder.flip₂_continuous' /-
theorem flip₂_continuous' (f : γ → ∀ x, β x) (hf : ∀ x, Continuous' fun g => f g x) :
Continuous' f :=
Continuous.of_bundled _ (fun x y h a => (hf a).to_monotone h)
(by intro c <;> ext a <;> apply (hf a).to_bundled _ c)
#align pi.omega_complete_partial_order.flip₂_continuous' Pi.OmegaCompletePartialOrder.flip₂_continuous'
+-/
end OmegaCompletePartialOrder
@@ -661,10 +675,12 @@ protected theorem monotone (f : α →𝒄 β) : Monotone f :=
#align omega_complete_partial_order.continuous_hom.monotone OmegaCompletePartialOrder.ContinuousHom.monotone
-/
+#print OmegaCompletePartialOrder.ContinuousHom.apply_mono /-
@[mono]
theorem apply_mono {f g : α →𝒄 β} {x y : α} (h₁ : f ≤ g) (h₂ : x ≤ y) : f x ≤ g y :=
OrderHom.apply_mono (show (f : α →o β) ≤ g from h₁) h₂
#align omega_complete_partial_order.continuous_hom.apply_mono OmegaCompletePartialOrder.ContinuousHom.apply_mono
+-/
#print OmegaCompletePartialOrder.ContinuousHom.ite_continuous' /-
theorem ite_continuous' {p : Prop} [hp : Decidable p] (f g : α → β) (hf : Continuous' f)
@@ -816,6 +832,7 @@ def toMono : (α →𝒄 β) →o α →o β where
#align omega_complete_partial_order.continuous_hom.to_mono OmegaCompletePartialOrder.ContinuousHom.toMono
-/
+#print OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge /-
/-- When proving that a chain of applications is below a bound `z`, it suffices to consider the
functions and values being selected from the same index in the chains.
@@ -832,12 +849,15 @@ theorem forall_forall_merge (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
· apply (c₀ i).Monotone; apply c₁.monotone; apply le_max_right
· apply c₀.monotone; apply le_max_left
#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge' /-
@[simp]
theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z : β) :
(∀ j i : ℕ, (c₀ i) (c₁ j) ≤ z) ↔ ∀ i : ℕ, (c₀ i) (c₁ i) ≤ z := by
rw [forall_swap, forall_forall_merge]
#align omega_complete_partial_order.continuous_hom.forall_forall_merge' OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'
+-/
#print OmegaCompletePartialOrder.ContinuousHom.ωSup /-
/-- The `ωSup` operator for continuous functions, which takes the pointwise countable supremum
@@ -887,14 +907,17 @@ def apply : (α →𝒄 β) × α →𝒄 β where
end Prod
+#print OmegaCompletePartialOrder.ContinuousHom.ωSup_def /-
theorem ωSup_def (c : Chain (α →𝒄 β)) (x : α) : ωSup c x = ContinuousHom.ωSup c x :=
rfl
#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_def
+-/
theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
ωSup c₀ (ωSup c₁) = Prod.apply (ωSup (c₀.zip c₁)) := by simp [prod.apply_apply, Prod.ωSup_zip]
#align omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
+#print OmegaCompletePartialOrder.ContinuousHom.flip /-
/-- A family of continuous functions yields a continuous family of functions. -/
@[simps]
def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
@@ -903,7 +926,9 @@ def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
monotone' x y h a := (f a).Monotone h
cont := by intro <;> ext <;> change f x _ = _ <;> rw [(f x).Continuous] <;> rfl
#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flip
+-/
+#print OmegaCompletePartialOrder.ContinuousHom.bind /-
/-- `part.bind` as a continuous function. -/
@[simps (config := { rhsMd := reducible })]
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
@@ -912,6 +937,7 @@ noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄
rw [OrderHom.bind, ← OrderHom.bind, ωSup_bind, ← f.continuous, ← g.continuous]
rfl
#align omega_complete_partial_order.continuous_hom.bind OmegaCompletePartialOrder.ContinuousHom.bind
+-/
#print OmegaCompletePartialOrder.ContinuousHom.map /-
/-- `part.map` as a continuous function. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -77,12 +77,6 @@ variable {β γ}
variable {α} {α' : Type _} {β' : Type _} [Preorder α'] [Preorder β']
-/- warning: order_hom.bind -> OrderHom.bind is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}}, (OrderHom.{u1, u2} α (Part.{u2} β) _inst_1 (PartialOrder.toPreorder.{u2} (Part.{u2} β) (Part.partialOrder.{u2} β))) -> (OrderHom.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.preorder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (i : β) => PartialOrder.toPreorder.{u2} (Part.{u2} γ) (Part.partialOrder.{u2} γ)))) -> (OrderHom.{u1, u2} α (Part.{u2} γ) _inst_1 (PartialOrder.toPreorder.{u2} (Part.{u2} γ) (Part.partialOrder.{u2} γ)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : Preorder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}}, (OrderHom.{u1, u2} α (Part.{u2} β) _inst_1 (PartialOrder.toPreorder.{u2} (Part.{u2} β) (Part.instPartialOrderPart.{u2} β))) -> (OrderHom.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.preorder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (i : β) => PartialOrder.toPreorder.{u2} (Part.{u2} γ) (Part.instPartialOrderPart.{u2} γ)))) -> (OrderHom.{u1, u2} α (Part.{u2} γ) _inst_1 (PartialOrder.toPreorder.{u2} (Part.{u2} γ) (Part.instPartialOrderPart.{u2} γ)))
-Case conversion may be inaccurate. Consider using '#align order_hom.bind OrderHom.bindₓ'. -/
/-- `part.bind` as a monotone function -/
@[simps]
def bind {β γ} (f : α →o Part β) (g : α →o β → Part γ) : α →o Part γ
@@ -165,33 +159,15 @@ theorem map_id : c.map OrderHom.id = c :=
#align omega_complete_partial_order.chain.map_id OmegaCompletePartialOrder.Chain.map_id
-/
-/- warning: omega_complete_partial_order.chain.map_comp -> OmegaCompletePartialOrder.Chain.map_comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] [_inst_3 : Preorder.{u3} γ] (c : OmegaCompletePartialOrder.Chain.{u1} α _inst_1) {f : OrderHom.{u1, u2} α β _inst_1 _inst_2} (g : OrderHom.{u2, u3} β γ _inst_2 _inst_3), Eq.{succ u3} (OmegaCompletePartialOrder.Chain.{u3} γ _inst_3) (OmegaCompletePartialOrder.Chain.map.{u2, u3} β γ _inst_2 _inst_3 (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c f) g) (OmegaCompletePartialOrder.Chain.map.{u1, u3} α γ _inst_1 _inst_3 c (OrderHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g f))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} [_inst_1 : Preorder.{u2} α] [_inst_2 : Preorder.{u3} β] [_inst_3 : Preorder.{u1} γ] (c : OmegaCompletePartialOrder.Chain.{u2} α _inst_1) {f : OrderHom.{u2, u3} α β _inst_1 _inst_2} (g : OrderHom.{u3, u1} β γ _inst_2 _inst_3), Eq.{succ u1} (OmegaCompletePartialOrder.Chain.{u1} γ _inst_3) (OmegaCompletePartialOrder.Chain.map.{u3, u1} β γ _inst_2 _inst_3 (OmegaCompletePartialOrder.Chain.map.{u2, u3} α β _inst_1 _inst_2 c f) g) (OmegaCompletePartialOrder.Chain.map.{u2, u1} α γ _inst_1 _inst_3 c (OrderHom.comp.{u2, u3, u1} α β γ _inst_1 _inst_2 _inst_3 g f))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.chain.map_comp OmegaCompletePartialOrder.Chain.map_compₓ'. -/
theorem map_comp : (c.map f).map g = c.map (g.comp f) :=
rfl
#align omega_complete_partial_order.chain.map_comp OmegaCompletePartialOrder.Chain.map_comp
-/- warning: omega_complete_partial_order.chain.map_le_map -> OmegaCompletePartialOrder.Chain.map_le_map is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{u1} α _inst_1) {f : OrderHom.{u1, u2} α β _inst_1 _inst_2} {g : OrderHom.{u1, u2} α β _inst_1 _inst_2}, (LE.le.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toHasLe.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHom.preorder.{u1, u2} α β _inst_1 _inst_2)) f g) -> (LE.le.{u2} (OmegaCompletePartialOrder.Chain.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.hasLe.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c f) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c g))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{u1} α _inst_1) {f : OrderHom.{u1, u2} α β _inst_1 _inst_2} {g : OrderHom.{u1, u2} α β _inst_1 _inst_2}, (LE.le.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toLE.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHom.instPreorderOrderHom.{u1, u2} α β _inst_1 _inst_2)) f g) -> (LE.le.{u2} (OmegaCompletePartialOrder.Chain.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.instLEChain.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c f) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c g))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_mapₓ'. -/
@[mono]
theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g := fun i => by
simp [mem_map_iff] <;> intros <;> exists i <;> apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
-/- warning: omega_complete_partial_order.chain.zip -> OmegaCompletePartialOrder.Chain.zip is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β], (OmegaCompletePartialOrder.Chain.{u1} α _inst_1) -> (OmegaCompletePartialOrder.Chain.{u2} β _inst_2) -> (OmegaCompletePartialOrder.Chain.{max u1 u2} (Prod.{u1, u2} α β) (Prod.preorder.{u1, u2} α β _inst_1 _inst_2))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β], (OmegaCompletePartialOrder.Chain.{u1} α _inst_1) -> (OmegaCompletePartialOrder.Chain.{u2} β _inst_2) -> (OmegaCompletePartialOrder.Chain.{max u2 u1} (Prod.{u1, u2} α β) (Prod.instPreorderProd.{u1, u2} α β _inst_1 _inst_2))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.chain.zip OmegaCompletePartialOrder.Chain.zipₓ'. -/
/-- `chain.zip` pairs up the elements of two chains that have the same index -/
@[simps]
def zip (c₀ : Chain α) (c₁ : Chain β) : Chain (α × β) :=
@@ -231,12 +207,6 @@ variable {α : Type u} {β : Type v} {γ : Type _}
variable [OmegaCompletePartialOrder α]
-/- warning: omega_complete_partial_order.lift -> OmegaCompletePartialOrder.lift is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : PartialOrder.{u2} β] (f : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (ωSup₀ : (OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) -> β), (forall (x : β) (y : β), (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => β -> α) (OrderHom.hasCoeToFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => β -> α) (OrderHom.hasCoeToFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) f y)) -> (LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) x y)) -> (forall (c : OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)), Eq.{succ u1} α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => β -> α) (OrderHom.hasCoeToFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) f (ωSup₀ c)) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 (OmegaCompletePartialOrder.Chain.map.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c f))) -> (OmegaCompletePartialOrder.{u2} β)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : PartialOrder.{u2} β] (f : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (ωSup₀ : (OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) -> β), (forall (x : β) (y : β), (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OrderHom.toFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) f x) (OrderHom.toFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) f y)) -> (LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) x y)) -> (forall (c : OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)), Eq.{succ u1} α (OrderHom.toFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) f (ωSup₀ c)) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 (OmegaCompletePartialOrder.Chain.map.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c f))) -> (OmegaCompletePartialOrder.{u2} β)
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.lift OmegaCompletePartialOrder.liftₓ'. -/
/-- Transfer a `omega_complete_partial_order` on `β` to a `omega_complete_partial_order` on `α`
using a strictly monotone function `f : β →o α`, a definition of ωSup and a proof that `f` is
continuous with regard to the provided `ωSup` and the ωCPO on `α`. -/
@@ -249,22 +219,10 @@ protected def lift [PartialOrder β] (f : β →o α) (ωSup₀ : Chain β →
le_ωSup c i := h _ _ (by rw [h'] <;> apply le_ωSup (c.map f))
#align omega_complete_partial_order.lift OmegaCompletePartialOrder.lift
-/- warning: omega_complete_partial_order.le_ωSup_of_le -> OmegaCompletePartialOrder.le_ωSup_of_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α} (i : Nat), (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i)) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α} (i : Nat), (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.le_ωSup_of_le OmegaCompletePartialOrder.le_ωSup_of_leₓ'. -/
theorem le_ωSup_of_le {c : Chain α} {x : α} (i : ℕ) (h : x ≤ c i) : x ≤ ωSup c :=
le_trans h (le_ωSup c _)
#align omega_complete_partial_order.le_ωSup_of_le OmegaCompletePartialOrder.le_ωSup_of_le
-/- warning: omega_complete_partial_order.ωSup_total -> OmegaCompletePartialOrder.ωSup_total is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α}, (forall (i : Nat), Or (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i) x) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i))) -> (Or (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α}, (forall (i : Nat), Or (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i) x) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i))) -> (Or (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.ωSup_total OmegaCompletePartialOrder.ωSup_totalₓ'. -/
theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i) : ωSup c ≤ x ∨ x ≤ ωSup c :=
by_cases (fun this : ∀ i, c i ≤ x => Or.inl (ωSup_le _ _ this)) fun this : ¬∀ i, c i ≤ x =>
have : ∃ i, ¬c i ≤ x := by simp only [not_forall] at this⊢ <;> assumption
@@ -273,23 +231,11 @@ theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i)
Or.inr <| le_ωSup_of_le _ this
#align omega_complete_partial_order.ωSup_total OmegaCompletePartialOrder.ωSup_total
-/- warning: omega_complete_partial_order.ωSup_le_ωSup_of_le -> OmegaCompletePartialOrder.ωSup_le_ωSup_of_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c₀ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))}, (LE.le.{u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.Chain.hasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₀ c₁) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₀) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₁))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c₀ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))}, (LE.le.{u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.Chain.instLEChain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₀ c₁) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₀) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₁))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.ωSup_le_ωSup_of_le OmegaCompletePartialOrder.ωSup_le_ωSup_of_leₓ'. -/
@[mono]
theorem ωSup_le_ωSup_of_le {c₀ c₁ : Chain α} (h : c₀ ≤ c₁) : ωSup c₀ ≤ ωSup c₁ :=
ωSup_le _ _ fun i => Exists.rec_on (h i) fun j h => le_trans h (le_ωSup _ _)
#align omega_complete_partial_order.ωSup_le_ωSup_of_le OmegaCompletePartialOrder.ωSup_le_ωSup_of_le
-/- warning: omega_complete_partial_order.ωSup_le_iff -> OmegaCompletePartialOrder.ωSup_le_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] (c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (x : α), Iff (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (forall (i : Nat), LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i) x)
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] (c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (x : α), Iff (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (forall (i : Nat), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i) x)
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iffₓ'. -/
theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤ x :=
by
constructor <;> intros
@@ -375,12 +321,6 @@ theorem continuous_id : Continuous (@OrderHom.id α _) := by intro <;> rw [c.map
#align omega_complete_partial_order.continuous_id OmegaCompletePartialOrder.continuous_id
-/
-/- warning: omega_complete_partial_order.continuous_comp -> OmegaCompletePartialOrder.continuous_comp is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] [_inst_3 : OmegaCompletePartialOrder.{u3} γ] (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (g : OrderHom.{u2, u3} β γ (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OmegaCompletePartialOrder.toPartialOrder.{u3} γ _inst_3))), (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 _inst_2 f) -> (OmegaCompletePartialOrder.Continuous.{u2, u3} β γ _inst_2 _inst_3 g) -> (OmegaCompletePartialOrder.Continuous.{u1, u3} α γ _inst_1 _inst_3 (OrderHom.comp.{u1, u2, u3} α β γ (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (PartialOrder.toPreorder.{u3} γ (OmegaCompletePartialOrder.toPartialOrder.{u3} γ _inst_3)) g f))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {γ : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : OmegaCompletePartialOrder.{u3} β] [_inst_3 : OmegaCompletePartialOrder.{u1} γ] (f : OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β _inst_2))) (g : OrderHom.{u3, u1} β γ (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u1} γ (OmegaCompletePartialOrder.toPartialOrder.{u1} γ _inst_3))), (OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 _inst_2 f) -> (OmegaCompletePartialOrder.Continuous.{u3, u1} β γ _inst_2 _inst_3 g) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α γ _inst_1 _inst_3 (OrderHom.comp.{u2, u3, u1} α β γ (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β _inst_2)) (PartialOrder.toPreorder.{u1} γ (OmegaCompletePartialOrder.toPartialOrder.{u1} γ _inst_3)) g f))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_comp OmegaCompletePartialOrder.continuous_compₓ'. -/
theorem continuous_comp (hfc : Continuous f) (hgc : Continuous g) : Continuous (g.comp f) :=
by
dsimp [Continuous] at *; intro
@@ -415,12 +355,6 @@ variable {α : Type u} {β : Type v} {γ : Type _}
open OmegaCompletePartialOrder
-/- warning: part.eq_of_chain -> Part.eq_of_chain is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))} {a : α} {b : α}, (Membership.Mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (OmegaCompletePartialOrder.Chain.hasMem.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (Part.some.{u1} α a) c) -> (Membership.Mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (OmegaCompletePartialOrder.Chain.hasMem.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (Part.some.{u1} α b) c) -> (Eq.{succ u1} α a b)
-but is expected to have type
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))} {a : α} {b : α}, (Membership.mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (OmegaCompletePartialOrder.Chain.instMembershipChain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (Part.some.{u1} α a) c) -> (Membership.mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (OmegaCompletePartialOrder.Chain.instMembershipChain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (Part.some.{u1} α b) c) -> (Eq.{succ u1} α a b)
-Case conversion may be inaccurate. Consider using '#align part.eq_of_chain Part.eq_of_chainₓ'. -/
theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : some b ∈ c) : a = b :=
by
cases' ha with i ha; replace ha := ha.symm
@@ -430,23 +364,11 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
have := c.monotone h _ ha; apply mem_unique this hb
#align part.eq_of_chain Part.eq_of_chain
-/- warning: part.ωSup -> Part.ωSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}}, (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) -> (Part.{u1} α)
-but is expected to have type
- forall {α : Type.{u1}}, (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) -> (Part.{u1} α)
-Case conversion may be inaccurate. Consider using '#align part.ωSup Part.ωSupₓ'. -/
/-- The (noncomputable) `ωSup` definition for the `ω`-CPO structure on `part α`. -/
protected noncomputable def ωSup (c : Chain (Part α)) : Part α :=
if h : ∃ a, some a ∈ c then some (Classical.choose h) else none
#align part.ωSup Part.ωSup
-/- warning: part.ωSup_eq_some -> Part.ωSup_eq_some is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))} {a : α}, (Membership.Mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (OmegaCompletePartialOrder.Chain.hasMem.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (Part.some.{u1} α a) c) -> (Eq.{succ u1} (Part.{u1} α) (Part.ωSup.{u1} α c) (Part.some.{u1} α a))
-but is expected to have type
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))} {a : α}, (Membership.mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (OmegaCompletePartialOrder.Chain.instMembershipChain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (Part.some.{u1} α a) c) -> (Eq.{succ u1} (Part.{u1} α) (Part.ωSup.{u1} α c) (Part.some.{u1} α a))
-Case conversion may be inaccurate. Consider using '#align part.ωSup_eq_some Part.ωSup_eq_someₓ'. -/
theorem ωSup_eq_some {c : Chain (Part α)} {a : α} (h : some a ∈ c) : Part.ωSup c = some a :=
have : ∃ a, some a ∈ c := ⟨a, h⟩
have a' : some (Classical.choose this) ∈ c := Classical.choose_spec this
@@ -456,22 +378,10 @@ theorem ωSup_eq_some {c : Chain (Part α)} {a : α} (h : some a ∈ c) : Part.
#align part.ωSup_eq_some Part.ωSup_eq_some
-/- warning: part.ωSup_eq_none -> Part.ωSup_eq_none is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))}, (Not (Exists.{succ u1} α (fun (a : α) => Membership.Mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (OmegaCompletePartialOrder.Chain.hasMem.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (Part.some.{u1} α a) c))) -> (Eq.{succ u1} (Part.{u1} α) (Part.ωSup.{u1} α c) (Part.none.{u1} α))
-but is expected to have type
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))}, (Not (Exists.{succ u1} α (fun (a : α) => Membership.mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (OmegaCompletePartialOrder.Chain.instMembershipChain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (Part.some.{u1} α a) c))) -> (Eq.{succ u1} (Part.{u1} α) (Part.ωSup.{u1} α c) (Part.none.{u1} α))
-Case conversion may be inaccurate. Consider using '#align part.ωSup_eq_none Part.ωSup_eq_noneₓ'. -/
theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.ωSup c = none :=
dif_neg h
#align part.ωSup_eq_none Part.ωSup_eq_none
-/- warning: part.mem_chain_of_mem_ωSup -> Part.mem_chain_of_mem_ωSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))} {a : α}, (Membership.Mem.{u1, u1} α (Part.{u1} α) (Part.hasMem.{u1} α) a (Part.ωSup.{u1} α c)) -> (Membership.Mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (OmegaCompletePartialOrder.Chain.hasMem.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (Part.some.{u1} α a) c)
-but is expected to have type
- forall {α : Type.{u1}} {c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))} {a : α}, (Membership.mem.{u1, u1} α (Part.{u1} α) (Part.instMembershipPart.{u1} α) a (Part.ωSup.{u1} α c)) -> (Membership.mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (OmegaCompletePartialOrder.Chain.instMembershipChain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (Part.some.{u1} α a) c)
-Case conversion may be inaccurate. Consider using '#align part.mem_chain_of_mem_ωSup Part.mem_chain_of_mem_ωSupₓ'. -/
theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ωSup c) : some a ∈ c :=
by
simp [Part.ωSup] at h; split_ifs at h
@@ -495,12 +405,6 @@ noncomputable instance omegaCompletePartialOrder : OmegaCompletePartialOrder (Pa
section Inst
-/- warning: part.mem_ωSup -> Part.mem_ωSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (x : α) (c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))), Iff (Membership.Mem.{u1, u1} α (Part.{u1} α) (Part.hasMem.{u1} α) x (OmegaCompletePartialOrder.ωSup.{u1} (Part.{u1} α) (Part.omegaCompletePartialOrder.{u1} α) c)) (Membership.Mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (OmegaCompletePartialOrder.Chain.hasMem.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.partialOrder.{u1} α))) (Part.some.{u1} α x) c)
-but is expected to have type
- forall {α : Type.{u1}} (x : α) (c : OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))), Iff (Membership.mem.{u1, u1} α (Part.{u1} α) (Part.instMembershipPart.{u1} α) x (OmegaCompletePartialOrder.ωSup.{u1} (Part.{u1} α) (Part.omegaCompletePartialOrder.{u1} α) c)) (Membership.mem.{u1, u1} (Part.{u1} α) (OmegaCompletePartialOrder.Chain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (OmegaCompletePartialOrder.Chain.instMembershipChain.{u1} (Part.{u1} α) (PartialOrder.toPreorder.{u1} (Part.{u1} α) (Part.instPartialOrderPart.{u1} α))) (Part.some.{u1} α x) c)
-Case conversion may be inaccurate. Consider using '#align part.mem_ωSup Part.mem_ωSupₓ'. -/
theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈ c :=
by
simp [OmegaCompletePartialOrder.ωSup, Part.ωSup]
@@ -536,23 +440,11 @@ variable [∀ x, OmegaCompletePartialOrder <| β x]
variable [OmegaCompletePartialOrder γ]
-/- warning: pi.omega_complete_partial_order.flip₁_continuous' -> Pi.OmegaCompletePartialOrder.flip₁_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : α -> Type.{u2}} {γ : Type.{u3}} [_inst_1 : forall (x : α), OmegaCompletePartialOrder.{u2} (β x)] [_inst_2 : OmegaCompletePartialOrder.{u3} γ] (f : forall (x : α), γ -> (β x)) (a : α), (OmegaCompletePartialOrder.Continuous'.{u3, max u1 u2} γ (forall (y : α), β y) _inst_2 (Pi.omegaCompletePartialOrder.{u1, u2} α (fun (y : α) => β y) (fun (a : α) => _inst_1 a)) (fun (x : γ) (y : α) => f y x)) -> (OmegaCompletePartialOrder.Continuous'.{u3, u2} γ (β a) _inst_2 (_inst_1 a) (f a))
-but is expected to have type
- forall {α : Type.{u2}} {β : α -> Type.{u1}} {γ : Type.{u3}} [_inst_1 : forall (x : α), OmegaCompletePartialOrder.{u1} (β x)] [_inst_2 : OmegaCompletePartialOrder.{u3} γ] (f : forall (x : α), γ -> (β x)) (a : α), (OmegaCompletePartialOrder.Continuous'.{u3, max u2 u1} γ (forall (y : α), β y) _inst_2 (Pi.instOmegaCompletePartialOrderForAll.{u2, u1} α (fun (y : α) => β y) (fun (a : α) => _inst_1 a)) (fun (x : γ) (y : α) => f y x)) -> (OmegaCompletePartialOrder.Continuous'.{u3, u1} γ (β a) _inst_2 (_inst_1 a) (f a))
-Case conversion may be inaccurate. Consider using '#align pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'ₓ'. -/
theorem flip₁_continuous' (f : ∀ x : α, γ → β x) (a : α) (hf : Continuous' fun x y => f y x) :
Continuous' (f a) :=
Continuous.of_bundled _ (fun x y h => hf.to_monotone h a) fun c => congr_fun (hf.to_bundled _ c) a
#align pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'
-/- warning: pi.omega_complete_partial_order.flip₂_continuous' -> Pi.OmegaCompletePartialOrder.flip₂_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : α -> Type.{u2}} {γ : Type.{u3}} [_inst_1 : forall (x : α), OmegaCompletePartialOrder.{u2} (β x)] [_inst_2 : OmegaCompletePartialOrder.{u3} γ] (f : γ -> (forall (x : α), β x)), (forall (x : α), OmegaCompletePartialOrder.Continuous'.{u3, u2} γ (β x) _inst_2 (_inst_1 x) (fun (g : γ) => f g x)) -> (OmegaCompletePartialOrder.Continuous'.{u3, max u1 u2} γ (forall (x : α), β x) _inst_2 (Pi.omegaCompletePartialOrder.{u1, u2} α (fun (x : α) => β x) (fun (a : α) => _inst_1 a)) f)
-but is expected to have type
- forall {α : Type.{u1}} {β : α -> Type.{u2}} {γ : Type.{u3}} [_inst_1 : forall (x : α), OmegaCompletePartialOrder.{u2} (β x)] [_inst_2 : OmegaCompletePartialOrder.{u3} γ] (f : γ -> (forall (x : α), β x)), (forall (x : α), OmegaCompletePartialOrder.Continuous'.{u3, u2} γ (β x) _inst_2 (_inst_1 x) (fun (g : γ) => f g x)) -> (OmegaCompletePartialOrder.Continuous'.{u3, max u1 u2} γ (forall (x : α), β x) _inst_2 (Pi.instOmegaCompletePartialOrderForAll.{u1, u2} α (fun (x : α) => β x) (fun (a : α) => _inst_1 a)) f)
-Case conversion may be inaccurate. Consider using '#align pi.omega_complete_partial_order.flip₂_continuous' Pi.OmegaCompletePartialOrder.flip₂_continuous'ₓ'. -/
theorem flip₂_continuous' (f : γ → ∀ x, β x) (hf : ∀ x, Continuous' fun g => f g x) :
Continuous' f :=
Continuous.of_bundled _ (fun x y h a => (hf a).to_monotone h)
@@ -575,12 +467,6 @@ variable [OmegaCompletePartialOrder β]
variable [OmegaCompletePartialOrder γ]
-/- warning: prod.ωSup -> Prod.ωSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β], (OmegaCompletePartialOrder.Chain.{max u1 u2} (Prod.{u1, u2} α β) (Prod.preorder.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)))) -> (Prod.{u1, u2} α β)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β], (OmegaCompletePartialOrder.Chain.{max u2 u1} (Prod.{u1, u2} α β) (Prod.instPreorderProd.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)))) -> (Prod.{u1, u2} α β)
-Case conversion may be inaccurate. Consider using '#align prod.ωSup Prod.ωSupₓ'. -/
/-- The supremum of a chain in the product `ω`-CPO. -/
@[simps]
protected def ωSup (c : Chain (α × β)) : α × β :=
@@ -594,12 +480,6 @@ instance : OmegaCompletePartialOrder (α × β)
ωSup_le := fun c ⟨x, x'⟩ h => ⟨ωSup_le _ _ fun i => (h i).1, ωSup_le _ _ fun i => (h i).2⟩
le_ωSup c i := ⟨le_ωSup (c.map OrderHom.fst) i, le_ωSup (c.map OrderHom.snd) i⟩
-/- warning: prod.ωSup_zip -> Prod.ωSup_zip is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (c₁ : OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))), Eq.{succ (max u1 u2)} (Prod.{u1, u2} α β) (OmegaCompletePartialOrder.ωSup.{max u1 u2} (Prod.{u1, u2} α β) (Prod.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.Chain.zip.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) c₀ c₁)) (Prod.mk.{u1, u2} α β (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₀) (OmegaCompletePartialOrder.ωSup.{u2} β _inst_2 c₁))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : OmegaCompletePartialOrder.{u1} β] (c₀ : OmegaCompletePartialOrder.Chain.{u2} α (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} β (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β _inst_2))), Eq.{max (succ u2) (succ u1)} (Prod.{u2, u1} α β) (OmegaCompletePartialOrder.ωSup.{max u2 u1} (Prod.{u2, u1} α β) (Prod.instOmegaCompletePartialOrderProd.{u2, u1} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.Chain.zip.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β _inst_2)) c₀ c₁)) (Prod.mk.{u2, u1} α β (OmegaCompletePartialOrder.ωSup.{u2} α _inst_1 c₀) (OmegaCompletePartialOrder.ωSup.{u1} β _inst_2 c₁))
-Case conversion may be inaccurate. Consider using '#align prod.ωSup_zip Prod.ωSup_zipₓ'. -/
theorem ωSup_zip (c₀ : Chain α) (c₁ : Chain β) : ωSup (c₀.zip c₁) = (ωSup c₀, ωSup c₁) :=
by
apply eq_of_forall_ge_iff; rintro ⟨z₁, z₂⟩
@@ -626,12 +506,6 @@ instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
-/- warning: complete_lattice.Sup_continuous -> CompleteLattice.sSup_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))), (forall (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))), (Membership.Mem.{max u1 u2, max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (Set.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))) (Set.hasMem.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))) f s) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) s))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))), (forall (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))), (Membership.mem.{max u1 u2, max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (Set.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))) (Set.instMembershipSet.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))) f s) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instSupSetOrderHomToPreorderToPartialOrderToCompleteSemilatticeInf.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) s))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuousₓ'. -/
theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (sSup s) :=
by
intro c; apply eq_of_forall_ge_iff; intro z
@@ -640,23 +514,11 @@ theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f)
exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuous
-/- warning: complete_lattice.supr_continuous -> CompleteLattice.iSup_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {ι : Sort.{u3}} {f : ι -> (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))}, (forall (i : ι), OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (f i)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (iSup.{max u1 u2, u3} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) ι (fun (i : ι) => f i)))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLattice.{u3} β] {ι : Sort.{u1}} {f : ι -> (OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2))))}, (forall (i : ι), OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2) (f i)) -> (OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2) (iSup.{max u3 u2, u1} (OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2)))) (OrderHom.instSupSetOrderHomToPreorderToPartialOrderToCompleteSemilatticeInf.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) _inst_2) ι (fun (i : ι) => f i)))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.supr_continuous CompleteLattice.iSup_continuousₓ'. -/
theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
sSup_continuous _ <| Set.forall_range_iff.2 h
#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
-/- warning: complete_lattice.Sup_continuous' -> CompleteLattice.sSup_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (α -> β)), (forall (f : α -> β), (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u1 u2} (α -> β) (Pi.supSet.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2))) s))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (α -> β)), (forall (f : α -> β), (Membership.mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.instMembershipSet.{max u1 u2} (α -> β)) f s) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u2 u1} (α -> β) (Pi.supSet.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => CompleteLattice.toSupSet.{u2} β _inst_2)) s))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'ₓ'. -/
theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) : Continuous' (sSup s) :=
by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
@@ -666,24 +528,12 @@ theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f)
exact supr_continuous fun f => supr_continuous fun hf => hc f hf
#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'
-/- warning: complete_lattice.sup_continuous -> CompleteLattice.sup_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))} {g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))}, (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Sup.sup.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))) f g))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))} {g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))}, (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (Sup.sup.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instSupOrderHomToPreorderToPartialOrder.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))) f g))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.sup_continuous CompleteLattice.sup_continuousₓ'. -/
theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊔ g) := by
rw [← sSup_pair]; apply Sup_continuous
rintro f (rfl | rfl | _) <;> assumption
#align complete_lattice.sup_continuous CompleteLattice.sup_continuous
-/- warning: complete_lattice.top_continuous -> CompleteLattice.top_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Top.top.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (OrderHom.hasTop.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))) (BoundedOrder.toOrderTop.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (Top.top.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instTopOrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.top_continuous CompleteLattice.top_continuousₓ'. -/
theorem top_continuous : Continuous (⊤ : α →o β) :=
by
intro c; apply eq_of_forall_ge_iff; intro z
@@ -691,12 +541,6 @@ theorem top_continuous : Continuous (⊤ : α →o β) :=
OrderHom.const_coe_coe]
#align complete_lattice.top_continuous CompleteLattice.top_continuous
-/- warning: complete_lattice.bot_continuous -> CompleteLattice.bot_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Bot.bot.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (OrderHom.hasBot.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))) (BoundedOrder.toOrderBot.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (Bot.bot.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instBotOrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.bot_continuous CompleteLattice.bot_continuousₓ'. -/
theorem bot_continuous : Continuous (⊥ : α →o β) :=
by
rw [← sSup_empty]
@@ -709,12 +553,6 @@ namespace CompleteLattice
variable {α β : Type _} [OmegaCompletePartialOrder α] [CompleteLinearOrder β]
-/- warning: complete_lattice.inf_continuous -> CompleteLattice.inf_continuous is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLinearOrder.{u2} β] (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) (g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))), (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) (Inf.inf.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) (OrderHom.hasInf.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)))) f g))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLinearOrder.{u1} β] (f : OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))) (g : OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))), (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) (Inf.inf.{max u1 u2} (OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))) (OrderHom.instInfOrderHomToPreorderToPartialOrder.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (Lattice.toSemilatticeInf.{u1} β (CompleteLattice.toLattice.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)))) f g))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.inf_continuous CompleteLattice.inf_continuousₓ'. -/
theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊓ g) := by
refine' fun c => eq_of_forall_ge_iff fun z => _
@@ -726,12 +564,6 @@ theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g
(le_trans <| g.mono <| c.mono <| le_max_right _ _)⟩
#align complete_lattice.inf_continuous CompleteLattice.inf_continuous
-/- warning: complete_lattice.inf_continuous' -> CompleteLattice.inf_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLinearOrder.{u2} β] {f : α -> β} {g : α -> β}, (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) (Inf.inf.{max u1 u2} (α -> β) (Pi.hasInf.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => SemilatticeInf.toHasInf.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) f g))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLinearOrder.{u1} β] {f : α -> β} {g : α -> β}, (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) (Inf.inf.{max u1 u2} (α -> β) (Pi.instInfForAll.{u2, u1} α (fun (ᾰ : α) => β) (fun (i : α) => Lattice.toInf.{u1} β (CompleteLattice.toLattice.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)))) f g))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.inf_continuous' CompleteLattice.inf_continuous'ₓ'. -/
theorem inf_continuous' {f g : α → β} (hf : Continuous' f) (hg : Continuous' g) :
Continuous' (f ⊓ g) :=
⟨_, inf_continuous _ _ hf.snd hg.snd⟩
@@ -829,12 +661,6 @@ protected theorem monotone (f : α →𝒄 β) : Monotone f :=
#align omega_complete_partial_order.continuous_hom.monotone OmegaCompletePartialOrder.ContinuousHom.monotone
-/
-/- warning: omega_complete_partial_order.continuous_hom.apply_mono -> OmegaCompletePartialOrder.ContinuousHom.apply_mono is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] {f : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {g : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {x : α} {y : α}, (LE.le.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toHasLe.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) f g) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x y) -> (LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) g y))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] {f : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {g : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {x : α} {y : α}, (LE.le.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toLE.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) f g) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x y) -> (LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 f) x) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 g) y))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.apply_mono OmegaCompletePartialOrder.ContinuousHom.apply_monoₓ'. -/
@[mono]
theorem apply_mono {f g : α →𝒄 β} {x y : α} (h₁ : f ≤ g) (h₂ : x ≤ y) : f x ≤ g y :=
OrderHom.apply_mono (show (f : α →o β) ≤ g from h₁) h₂
@@ -846,12 +672,6 @@ theorem ite_continuous' {p : Prop} [hp : Decidable p] (f g : α → β) (hf : Co
#align omega_complete_partial_order.continuous_hom.ite_continuous' OmegaCompletePartialOrder.ContinuousHom.ite_continuous'
-/
-/- warning: omega_complete_partial_order.continuous_hom.ωSup_bind -> OmegaCompletePartialOrder.ContinuousHom.ωSup_bind is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (f : OrderHom.{u1, u2} α (Part.{u2} β) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Part.{u2} β) (Part.partialOrder.{u2} β))) (g : OrderHom.{u1, u2} α (β -> (Part.{u2} γ)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Pi.preorder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (i : β) => PartialOrder.toPreorder.{u2} (Part.{u2} γ) (Part.partialOrder.{u2} γ)))), Eq.{succ u2} (Part.{u2} γ) (OmegaCompletePartialOrder.ωSup.{u2} (Part.{u2} γ) (Part.omegaCompletePartialOrder.{u2} γ) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α (Part.{u2} γ) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Part.{u2} γ) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Part.{u2} γ) (Part.omegaCompletePartialOrder.{u2} γ))) c (OrderHom.bind.{u1, u2} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) β γ f g))) (Bind.bind.{u2, u2} Part.{u2} (Monad.toHasBind.{u2, u2} Part.{u2} Part.monad.{u2}) β γ (OmegaCompletePartialOrder.ωSup.{u2} (Part.{u2} β) (Part.omegaCompletePartialOrder.{u2} β) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α (Part.{u2} β) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Part.{u2} β) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Part.{u2} β) (Part.omegaCompletePartialOrder.{u2} β))) c f)) (OmegaCompletePartialOrder.ωSup.{u2} (β -> (Part.{u2} γ)) (Pi.omegaCompletePartialOrder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ)) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α (β -> (Part.{u2} γ)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (β -> (Part.{u2} γ)) (OmegaCompletePartialOrder.toPartialOrder.{u2} (β -> (Part.{u2} γ)) (Pi.omegaCompletePartialOrder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ)))) c g)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (f : OrderHom.{u1, u2} α (Part.{u2} β) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Part.{u2} β) (Part.instPartialOrderPart.{u2} β))) (g : OrderHom.{u1, u2} α (β -> (Part.{u2} γ)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Pi.preorder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (i : β) => PartialOrder.toPreorder.{u2} (Part.{u2} γ) (Part.instPartialOrderPart.{u2} γ)))), Eq.{succ u2} (Part.{u2} γ) (OmegaCompletePartialOrder.ωSup.{u2} (Part.{u2} γ) (Part.omegaCompletePartialOrder.{u2} γ) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α (Part.{u2} γ) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Part.{u2} γ) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Part.{u2} γ) (Part.omegaCompletePartialOrder.{u2} γ))) c (OrderHom.bind.{u1, u2} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) β γ f g))) (Bind.bind.{u2, u2} Part.{u2} (Monad.toBind.{u2, u2} Part.{u2} Part.instMonadPart.{u2}) β γ (OmegaCompletePartialOrder.ωSup.{u2} (Part.{u2} β) (Part.omegaCompletePartialOrder.{u2} β) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α (Part.{u2} β) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (Part.{u2} β) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Part.{u2} β) (Part.omegaCompletePartialOrder.{u2} β))) c f)) (OmegaCompletePartialOrder.ωSup.{u2} (β -> (Part.{u2} γ)) (Pi.instOmegaCompletePartialOrderForAll.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ)) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α (β -> (Part.{u2} γ)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} (β -> (Part.{u2} γ)) (OmegaCompletePartialOrder.toPartialOrder.{u2} (β -> (Part.{u2} γ)) (Pi.instOmegaCompletePartialOrderForAll.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ)))) c g)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.ωSup_bind OmegaCompletePartialOrder.ContinuousHom.ωSup_bindₓ'. -/
theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α →o β → Part γ) :
ωSup (c.map (f.bind g)) = ωSup (c.map f) >>= ωSup (c.map g) :=
by
@@ -877,12 +697,6 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
· apply le_ωSup (c.map f) i _ hb₀
#align omega_complete_partial_order.continuous_hom.ωSup_bind OmegaCompletePartialOrder.ContinuousHom.ωSup_bind
-/- warning: omega_complete_partial_order.continuous_hom.bind_continuous' -> OmegaCompletePartialOrder.ContinuousHom.bind_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} β)) (g : α -> β -> (Part.{u2} γ)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.omegaCompletePartialOrder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ)) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Bind.bind.{u2, u2} Part.{u2} (Monad.toHasBind.{u2, u2} Part.{u2} Part.monad.{u2}) β γ (f x) (g x)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} β)) (g : α -> β -> (Part.{u2} γ)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.instOmegaCompletePartialOrderForAll.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ)) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Bind.bind.{u2, u2} Part.{u2} (Monad.toBind.{u2, u2} Part.{u2} Part.instMonadPart.{u2}) β γ (f x) (g x)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.bind_continuous' OmegaCompletePartialOrder.ContinuousHom.bind_continuous'ₓ'. -/
theorem bind_continuous' {β γ : Type v} (f : α → Part β) (g : α → β → Part γ) :
Continuous' f → Continuous' g → Continuous' fun x => f x >>= g x
| ⟨hf, hf'⟩, ⟨hg, hg'⟩ =>
@@ -890,23 +704,11 @@ theorem bind_continuous' {β γ : Type v} (f : α → Part β) (g : α → β
(by intro c <;> rw [ωSup_bind, ← hf', ← hg'] <;> rfl)
#align omega_complete_partial_order.continuous_hom.bind_continuous' OmegaCompletePartialOrder.ContinuousHom.bind_continuous'
-/- warning: omega_complete_partial_order.continuous_hom.map_continuous' -> OmegaCompletePartialOrder.ContinuousHom.map_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : β -> γ) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Functor.map.{u2, u2} (fun {β : Type.{u2}} => Part.{u2} β) (Applicative.toFunctor.{u2, u2} (fun {β : Type.{u2}} => Part.{u2} β) (Monad.toApplicative.{u2, u2} (fun {β : Type.{u2}} => Part.{u2} β) Part.monad.{u2})) β γ f (g x)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : β -> γ) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Functor.map.{u2, u2} Part.{u2} (Applicative.toFunctor.{u2, u2} Part.{u2} (Monad.toApplicative.{u2, u2} Part.{u2} Part.instMonadPart.{u2})) β γ f (g x)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.map_continuous' OmegaCompletePartialOrder.ContinuousHom.map_continuous'ₓ'. -/
theorem map_continuous' {β γ : Type v} (f : β → γ) (g : α → Part β) (hg : Continuous' g) :
Continuous' fun x => f <$> g x := by
simp only [map_eq_bind_pure_comp] <;> apply bind_continuous' _ _ hg <;> apply const_continuous'
#align omega_complete_partial_order.continuous_hom.map_continuous' OmegaCompletePartialOrder.ContinuousHom.map_continuous'
-/- warning: omega_complete_partial_order.continuous_hom.seq_continuous' -> OmegaCompletePartialOrder.ContinuousHom.seq_continuous' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} (β -> γ))) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} (β -> γ)) _inst_1 (Part.omegaCompletePartialOrder.{u2} (β -> γ)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Seq.seq.{u2, u2} Part.{u2} (Applicative.toHasSeq.{u2, u2} Part.{u2} (Monad.toApplicative.{u2, u2} Part.{u2} Part.monad.{u2})) β γ (f x) (g x)))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} (β -> γ))) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} (β -> γ)) _inst_1 (Part.omegaCompletePartialOrder.{u2} (β -> γ)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Seq.seq.{u2, u2} Part.{u2} (Applicative.toSeq.{u2, u2} Part.{u2} (Monad.toApplicative.{u2, u2} Part.{u2} Part.instMonadPart.{u2})) β γ (f x) (fun (x._@.Mathlib.Order.OmegaCompletePartialOrder._hyg.6462 : Unit) => g x)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.seq_continuous' OmegaCompletePartialOrder.ContinuousHom.seq_continuous'ₓ'. -/
theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α → Part β) (hf : Continuous' f)
(hg : Continuous' g) : Continuous' fun x => f x <*> g x := by
simp only [seq_eq_bind_map] <;> apply bind_continuous' _ _ hf <;>
@@ -970,32 +772,14 @@ protected theorem coe_inj (f g : α →𝒄 β) (h : (f : α → β) = g) : f =
#align omega_complete_partial_order.continuous_hom.coe_inj OmegaCompletePartialOrder.ContinuousHom.coe_inj
-/
-/- warning: omega_complete_partial_order.continuous_hom.comp_id -> OmegaCompletePartialOrder.ContinuousHom.comp_id is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {γ : Type.{u2}} [_inst_2 : OmegaCompletePartialOrder.{u1} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] (f : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3) (OmegaCompletePartialOrder.ContinuousHom.comp.{u1, u1, u2} β β γ _inst_2 _inst_2 _inst_3 f (OmegaCompletePartialOrder.ContinuousHom.id.{u1} β _inst_2)) f
-but is expected to have type
- forall {β : Type.{u2}} {γ : Type.{u1}} [_inst_2 : OmegaCompletePartialOrder.{u2} β] [_inst_3 : OmegaCompletePartialOrder.{u1} γ] (f : OmegaCompletePartialOrder.ContinuousHom.{u2, u1} β γ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (OmegaCompletePartialOrder.ContinuousHom.{u2, u1} β γ _inst_2 _inst_3) (OmegaCompletePartialOrder.ContinuousHom.comp.{u2, u2, u1} β β γ _inst_2 _inst_2 _inst_3 f (OmegaCompletePartialOrder.ContinuousHom.id.{u2} β _inst_2)) f
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.comp_id OmegaCompletePartialOrder.ContinuousHom.comp_idₓ'. -/
@[simp]
theorem comp_id (f : β →𝒄 γ) : f.comp id = f := by ext <;> rfl
#align omega_complete_partial_order.continuous_hom.comp_id OmegaCompletePartialOrder.ContinuousHom.comp_id
-/- warning: omega_complete_partial_order.continuous_hom.id_comp -> OmegaCompletePartialOrder.ContinuousHom.id_comp is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {γ : Type.{u2}} [_inst_2 : OmegaCompletePartialOrder.{u1} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] (f : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3), Eq.{max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3) (OmegaCompletePartialOrder.ContinuousHom.comp.{u1, u2, u2} β γ γ _inst_2 _inst_3 _inst_3 (OmegaCompletePartialOrder.ContinuousHom.id.{u2} γ _inst_3) f) f
-but is expected to have type
- forall {β : Type.{u2}} {γ : Type.{u1}} [_inst_2 : OmegaCompletePartialOrder.{u2} β] [_inst_3 : OmegaCompletePartialOrder.{u1} γ] (f : OmegaCompletePartialOrder.ContinuousHom.{u2, u1} β γ _inst_2 _inst_3), Eq.{max (succ u2) (succ u1)} (OmegaCompletePartialOrder.ContinuousHom.{u2, u1} β γ _inst_2 _inst_3) (OmegaCompletePartialOrder.ContinuousHom.comp.{u2, u1, u1} β γ γ _inst_2 _inst_3 _inst_3 (OmegaCompletePartialOrder.ContinuousHom.id.{u1} γ _inst_3) f) f
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.id_comp OmegaCompletePartialOrder.ContinuousHom.id_compₓ'. -/
@[simp]
theorem id_comp (f : β →𝒄 γ) : id.comp f = f := by ext <;> rfl
#align omega_complete_partial_order.continuous_hom.id_comp OmegaCompletePartialOrder.ContinuousHom.id_comp
-/- warning: omega_complete_partial_order.continuous_hom.comp_assoc -> OmegaCompletePartialOrder.ContinuousHom.comp_assoc is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {γ : Type.{u3}} {φ : Type.{u4}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] [_inst_3 : OmegaCompletePartialOrder.{u3} γ] [_inst_4 : OmegaCompletePartialOrder.{u4} φ] (f : OmegaCompletePartialOrder.ContinuousHom.{u3, u4} γ φ _inst_3 _inst_4) (g : OmegaCompletePartialOrder.ContinuousHom.{u2, u3} β γ _inst_2 _inst_3) (h : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2), Eq.{max (succ u1) (succ u4)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u4} α φ _inst_1 _inst_4) (OmegaCompletePartialOrder.ContinuousHom.comp.{u1, u3, u4} α γ φ _inst_1 _inst_3 _inst_4 f (OmegaCompletePartialOrder.ContinuousHom.comp.{u1, u2, u3} α β γ _inst_1 _inst_2 _inst_3 g h)) (OmegaCompletePartialOrder.ContinuousHom.comp.{u1, u2, u4} α β φ _inst_1 _inst_2 _inst_4 (OmegaCompletePartialOrder.ContinuousHom.comp.{u2, u3, u4} β γ φ _inst_2 _inst_3 _inst_4 f g) h)
-but is expected to have type
- forall {α : Type.{u3}} {β : Type.{u4}} {γ : Type.{u2}} {φ : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u3} α] [_inst_2 : OmegaCompletePartialOrder.{u4} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] [_inst_4 : OmegaCompletePartialOrder.{u1} φ] (f : OmegaCompletePartialOrder.ContinuousHom.{u2, u1} γ φ _inst_3 _inst_4) (g : OmegaCompletePartialOrder.ContinuousHom.{u4, u2} β γ _inst_2 _inst_3) (h : OmegaCompletePartialOrder.ContinuousHom.{u3, u4} α β _inst_1 _inst_2), Eq.{max (succ u3) (succ u1)} (OmegaCompletePartialOrder.ContinuousHom.{u3, u1} α φ _inst_1 _inst_4) (OmegaCompletePartialOrder.ContinuousHom.comp.{u3, u2, u1} α γ φ _inst_1 _inst_3 _inst_4 f (OmegaCompletePartialOrder.ContinuousHom.comp.{u3, u4, u2} α β γ _inst_1 _inst_2 _inst_3 g h)) (OmegaCompletePartialOrder.ContinuousHom.comp.{u3, u4, u1} α β φ _inst_1 _inst_2 _inst_4 (OmegaCompletePartialOrder.ContinuousHom.comp.{u4, u2, u1} β γ φ _inst_2 _inst_3 _inst_4 f g) h)
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.comp_assoc OmegaCompletePartialOrder.ContinuousHom.comp_assocₓ'. -/
@[simp]
theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) : f.comp (g.comp h) = (f.comp g).comp h :=
by ext <;> rfl
@@ -1032,12 +816,6 @@ def toMono : (α →𝒄 β) →o α →o β where
#align omega_complete_partial_order.continuous_hom.to_mono OmegaCompletePartialOrder.ContinuousHom.toMono
-/
-/- warning: omega_complete_partial_order.continuous_hom.forall_forall_merge -> OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (i : Nat) (j : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ i)) z)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (i : Nat) (j : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ i)) z)
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_mergeₓ'. -/
/-- When proving that a chain of applications is below a bound `z`, it suffices to consider the
functions and values being selected from the same index in the chains.
@@ -1055,12 +833,6 @@ theorem forall_forall_merge (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
· apply c₀.monotone; apply le_max_left
#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge
-/- warning: omega_complete_partial_order.continuous_hom.forall_forall_merge' -> OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (j : Nat) (i : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ i)) z)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (j : Nat) (i : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ i)) z)
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.forall_forall_merge' OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'ₓ'. -/
@[simp]
theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z : β) :
(∀ j i : ℕ, (c₀ i) (c₁ j) ≤ z) ↔ ∀ i : ℕ, (c₀ i) (c₁ i) ≤ z := by
@@ -1089,12 +861,6 @@ instance : OmegaCompletePartialOrder (α →𝒄 β) :=
namespace Prod
-/- warning: omega_complete_partial_order.continuous_hom.prod.apply -> OmegaCompletePartialOrder.ContinuousHom.Prod.apply is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β], OmegaCompletePartialOrder.ContinuousHom.{max u1 u2, u2} (Prod.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (Prod.omegaCompletePartialOrder.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) _inst_1) _inst_2
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β], OmegaCompletePartialOrder.ContinuousHom.{max u2 u1, u2} (Prod.{max u2 u1, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (Prod.instOmegaCompletePartialOrderProd.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) _inst_1) _inst_2
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.prod.apply OmegaCompletePartialOrder.ContinuousHom.Prod.applyₓ'. -/
/-- The application of continuous functions as a continuous function. -/
@[simps]
def apply : (α →𝒄 β) × α →𝒄 β where
@@ -1121,32 +887,14 @@ def apply : (α →𝒄 β) × α →𝒄 β where
end Prod
-/- warning: omega_complete_partial_order.continuous_hom.ωSup_def -> OmegaCompletePartialOrder.ContinuousHom.ωSup_def is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (x : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ωSup.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) c) x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.ωSup.{u1, u2} α β _inst_1 _inst_2 c) x)
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (x : α), Eq.{succ u2} β (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OmegaCompletePartialOrder.ωSup.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) c)) x) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OmegaCompletePartialOrder.ContinuousHom.ωSup.{u1, u2} α β _inst_1 _inst_2 c)) x)
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_defₓ'. -/
theorem ωSup_def (c : Chain (α →𝒄 β)) (x : α) : ωSup c x = ContinuousHom.ωSup c x :=
rfl
#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_def
-/- warning: omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup -> OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ωSup.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) c₀) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₁)) (coeFn.{max (succ (max u1 u2)) (succ u2), max (succ (max u1 u2)) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{max u1 u2, u2} (Prod.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (Prod.omegaCompletePartialOrder.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) _inst_1) _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{max u1 u2, u2} (Prod.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (Prod.omegaCompletePartialOrder.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) _inst_1) _inst_2) => (Prod.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{max u1 u2, u2} (Prod.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (Prod.omegaCompletePartialOrder.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) _inst_1) _inst_2) (OmegaCompletePartialOrder.ContinuousHom.Prod.apply.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ωSup.{max u1 u2} (Prod.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) (Prod.omegaCompletePartialOrder.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) _inst_1) (OmegaCompletePartialOrder.Chain.zip.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₀ c₁)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))), Eq.{succ u2} β (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OmegaCompletePartialOrder.ωSup.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) c₀)) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₁)) (OrderHom.toFun.{max u2 u1, u2} (Prod.{max u2 u1, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (PartialOrder.toPreorder.{max u2 u1} (Prod.{max u2 u1, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) (OmegaCompletePartialOrder.toPartialOrder.{max u2 u1} (Prod.{max u2 u1, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) (Prod.instOmegaCompletePartialOrderProd.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) _inst_1))) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{max u2 u1, u2} (Prod.{max u2 u1, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) β (Prod.instOmegaCompletePartialOrderProd.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) _inst_1) _inst_2 (OmegaCompletePartialOrder.ContinuousHom.Prod.apply.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.ωSup.{max u2 u1} (Prod.{max u2 u1, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α) (Prod.instOmegaCompletePartialOrderProd.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) _inst_1) (OmegaCompletePartialOrder.Chain.zip.{max u1 u2, u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) α (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₀ c₁)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSupₓ'. -/
theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
ωSup c₀ (ωSup c₁) = Prod.apply (ωSup (c₀.zip c₁)) := by simp [prod.apply_apply, Prod.ωSup_zip]
#align omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
-/- warning: omega_complete_partial_order.continuous_hom.flip -> OmegaCompletePartialOrder.ContinuousHom.flip is a dubious translation:
-lean 3 declaration is
- forall {β : Type.{u1}} {γ : Type.{u2}} [_inst_2 : OmegaCompletePartialOrder.{u1} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] {α : Type.{u3}}, (α -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, max u3 u2} β (α -> γ) _inst_2 (Pi.omegaCompletePartialOrder.{u3, u2} α (fun (ᾰ : α) => γ) (fun (a : α) => _inst_3)))
-but is expected to have type
- forall {β : Type.{u1}} {γ : Type.{u2}} [_inst_2 : OmegaCompletePartialOrder.{u1} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] {α : Type.{u3}}, (α -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, max u2 u3} β (α -> γ) _inst_2 (Pi.instOmegaCompletePartialOrderForAll.{u3, u2} α (fun (ᾰ : α) => γ) (fun (a : α) => _inst_3)))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flipₓ'. -/
/-- A family of continuous functions yields a continuous family of functions. -/
@[simps]
def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
@@ -1156,12 +904,6 @@ def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
cont := by intro <;> ext <;> change f x _ = _ <;> rw [(f x).Continuous] <;> rfl
#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flip
-/- warning: omega_complete_partial_order.continuous_hom.bind -> OmegaCompletePartialOrder.ContinuousHom.bind is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}}, (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.omegaCompletePartialOrder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ))) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}}, (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.instOmegaCompletePartialOrderForAll.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ))) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ))
-Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.bind OmegaCompletePartialOrder.ContinuousHom.bindₓ'. -/
/-- `part.bind` as a continuous function. -/
@[simps (config := { rhsMd := reducible })]
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -154,10 +154,7 @@ theorem exists_of_mem_map {b : β} : b ∈ c.map f → ∃ a, a ∈ c ∧ f a =
#print OmegaCompletePartialOrder.Chain.mem_map_iff /-
theorem mem_map_iff {b : β} : b ∈ c.map f ↔ ∃ a, a ∈ c ∧ f a = b :=
- ⟨exists_of_mem_map _, fun h => by
- rcases h with ⟨w, h, h'⟩
- subst b
- apply mem_map c _ h⟩
+ ⟨exists_of_mem_map _, fun h => by rcases h with ⟨w, h, h'⟩; subst b; apply mem_map c _ h⟩
#align omega_complete_partial_order.chain.mem_map_iff OmegaCompletePartialOrder.Chain.mem_map_iff
-/
@@ -297,8 +294,7 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
by
constructor <;> intros
· trans ωSup c
- exact le_ωSup _ _
- assumption
+ exact le_ωSup _ _; assumption
exact ωSup_le _ _ ‹_›
#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iff
@@ -480,9 +476,7 @@ theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ω
by
simp [Part.ωSup] at h; split_ifs at h
· have h' := Classical.choose_spec h_1
- rw [← eq_some_iff] at h
- rw [← h]
- exact h'
+ rw [← eq_some_iff] at h; rw [← h]; exact h'
· rcases h with ⟨⟨⟩⟩
#align part.mem_chain_of_mem_ωSup Part.mem_chain_of_mem_ωSup
@@ -491,18 +485,11 @@ noncomputable instance omegaCompletePartialOrder : OmegaCompletePartialOrder (Pa
where
ωSup := Part.ωSup
le_ωSup c i := by
- intro x hx
- rw [← eq_some_iff] at hx⊢
- rw [ωSup_eq_some, ← hx]
- rw [← hx]
- exact ⟨i, rfl⟩
+ intro x hx; rw [← eq_some_iff] at hx⊢
+ rw [ωSup_eq_some, ← hx]; rw [← hx]; exact ⟨i, rfl⟩
ωSup_le := by
- rintro c x hx a ha
- replace ha := mem_chain_of_mem_ωSup ha
- cases' ha with i ha
- apply hx i
- rw [← ha]
- apply mem_some
+ rintro c x hx a ha; replace ha := mem_chain_of_mem_ωSup ha
+ cases' ha with i ha; apply hx i; rw [← ha]; apply mem_some
#align part.omega_complete_partial_order Part.omegaCompletePartialOrder
-/
@@ -518,20 +505,13 @@ theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈
by
simp [OmegaCompletePartialOrder.ωSup, Part.ωSup]
constructor
- · split_ifs
- swap
- rintro ⟨⟨⟩⟩
- intro h'
- have hh := Classical.choose_spec h
- simp at h'
- subst x
- exact hh
+ · split_ifs; swap; rintro ⟨⟨⟩⟩
+ intro h'; have hh := Classical.choose_spec h
+ simp at h'; subst x; exact hh
· intro h
have h' : ∃ a : α, some a ∈ c := ⟨_, h⟩
- rw [dif_pos h']
- have hh := Classical.choose_spec h'
- rw [eq_of_chain hh h]
- simp
+ rw [dif_pos h']; have hh := Classical.choose_spec h'
+ rw [eq_of_chain hh h]; simp
#align part.mem_ωSup Part.mem_ωSup
end Inst
@@ -547,10 +527,7 @@ open OmegaCompletePartialOrder OmegaCompletePartialOrder.Chain
instance [∀ a, OmegaCompletePartialOrder (β a)] : OmegaCompletePartialOrder (∀ a, β a)
where
ωSup c a := ωSup (c.map (Pi.evalOrderHom a))
- ωSup_le c f hf a :=
- ωSup_le _ _ <| by
- rintro i
- apply hf
+ ωSup_le c f hf a := ωSup_le _ _ <| by rintro i; apply hf
le_ωSup c i x := le_ωSup_of_le _ <| le_rfl
namespace OmegaCompletePartialOrder
@@ -657,9 +634,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuousₓ'. -/
theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (sSup s) :=
by
- intro c
- apply eq_of_forall_ge_iff
- intro z
+ intro c; apply eq_of_forall_ge_iff; intro z
suffices (∀ f ∈ s, ∀ (n), (f : _) (c n) ≤ z) ↔ ∀ (n), ∀ f ∈ s, (f : _) (c n) ≤ z by
simpa (config := { contextual := true }) [ωSup_le_iff, hs _ _ _]
exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
@@ -883,12 +858,9 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
apply eq_of_forall_ge_iff; intro x
simp only [ωSup_le_iff, Part.bind_le, chain.mem_map_iff, and_imp, OrderHom.bind_coe, exists_imp]
constructor <;> intro h'''
- · intro b hb
- apply ωSup_le _ _ _
- rintro i y hy
- simp only [Part.mem_ωSup] at hb
- rcases hb with ⟨j, hb⟩
- replace hb := hb.symm
+ · intro b hb; apply ωSup_le _ _ _
+ rintro i y hy; simp only [Part.mem_ωSup] at hb
+ rcases hb with ⟨j, hb⟩; replace hb := hb.symm
simp only [Part.eq_some_iff, chain.map_coe, Function.comp_apply, OrderHom.apply_coe] at hy hb
replace hb : b ∈ f (c (max i j)) := f.mono (c.mono (le_max_right i j)) _ hb
replace hy : y ∈ g (c (max i j)) b := g.mono (c.mono (le_max_left i j)) _ _ hy
@@ -896,8 +868,7 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
simp only [exists_prop, Part.bind_eq_bind, Part.mem_bind_iff, chain.map_coe,
Function.comp_apply, OrderHom.bind_coe]
exact ⟨_, hb, hy⟩
- · intro i
- intro y hy
+ · intro i; intro y hy
simp only [exists_prop, Part.bind_eq_bind, Part.mem_bind_iff, chain.map_coe,
Function.comp_apply, OrderHom.bind_coe] at hy
rcases hy with ⟨b, hb₀, hb₁⟩
@@ -1080,11 +1051,8 @@ theorem forall_forall_merge (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
· apply h
· apply le_trans _ (h (max i j))
trans c₀ i (c₁ (max i j))
- · apply (c₀ i).Monotone
- apply c₁.monotone
- apply le_max_right
- · apply c₀.monotone
- apply le_max_left
+ · apply (c₀ i).Monotone; apply c₁.monotone; apply le_max_right
+ · apply c₀.monotone; apply le_max_left
#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge
/- warning: omega_complete_partial_order.continuous_hom.forall_forall_merge' -> OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge' is a dubious translation:
@@ -1131,24 +1099,19 @@ Case conversion may be inaccurate. Consider using '#align omega_complete_partial
@[simps]
def apply : (α →𝒄 β) × α →𝒄 β where
toFun f := f.1 f.2
- monotone' x y h := by
- dsimp
- trans y.fst x.snd <;> [apply h.1;apply y.1.Monotone h.2]
+ monotone' x y h := by dsimp; trans y.fst x.snd <;> [apply h.1;apply y.1.Monotone h.2]
cont := by
intro c
apply le_antisymm
- · apply ωSup_le
- intro i
+ · apply ωSup_le; intro i
dsimp
rw [(c _).fst.Continuous]
- apply ωSup_le
- intro j
+ apply ωSup_le; intro j
apply le_ωSup_of_le (max i j)
apply apply_mono
exact monotone_fst (OrderHom.mono _ (le_max_left _ _))
exact monotone_snd (OrderHom.mono _ (le_max_right _ _))
- · apply ωSup_le
- intro i
+ · apply ωSup_le; intro i
apply le_ωSup_of_le i
dsimp
apply OrderHom.mono _
mathlib commit https://github.com/leanprover-community/mathlib/commit/8d33f09cd7089ecf074b4791907588245aec5d1b
@@ -1133,7 +1133,7 @@ def apply : (α →𝒄 β) × α →𝒄 β where
toFun f := f.1 f.2
monotone' x y h := by
dsimp
- trans y.fst x.snd <;> [apply h.1, apply y.1.Monotone h.2]
+ trans y.fst x.snd <;> [apply h.1;apply y.1.Monotone h.2]
cont := by
intro c
apply le_antisymm
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -178,12 +178,16 @@ theorem map_comp : (c.map f).map g = c.map (g.comp f) :=
rfl
#align omega_complete_partial_order.chain.map_comp OmegaCompletePartialOrder.Chain.map_comp
-#print OmegaCompletePartialOrder.Chain.map_le_map /-
+/- warning: omega_complete_partial_order.chain.map_le_map -> OmegaCompletePartialOrder.Chain.map_le_map is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{u1} α _inst_1) {f : OrderHom.{u1, u2} α β _inst_1 _inst_2} {g : OrderHom.{u1, u2} α β _inst_1 _inst_2}, (LE.le.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toHasLe.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHom.preorder.{u1, u2} α β _inst_1 _inst_2)) f g) -> (LE.le.{u2} (OmegaCompletePartialOrder.Chain.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.hasLe.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c f) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c g))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Preorder.{u1} α] [_inst_2 : Preorder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{u1} α _inst_1) {f : OrderHom.{u1, u2} α β _inst_1 _inst_2} {g : OrderHom.{u1, u2} α β _inst_1 _inst_2}, (LE.le.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toLE.{max u1 u2} (OrderHom.{u1, u2} α β _inst_1 _inst_2) (OrderHom.instPreorderOrderHom.{u1, u2} α β _inst_1 _inst_2)) f g) -> (LE.le.{u2} (OmegaCompletePartialOrder.Chain.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.instLEChain.{u2} β _inst_2) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c f) (OmegaCompletePartialOrder.Chain.map.{u1, u2} α β _inst_1 _inst_2 c g))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_mapₓ'. -/
@[mono]
theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g := fun i => by
simp [mem_map_iff] <;> intros <;> exists i <;> apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
--/
/- warning: omega_complete_partial_order.chain.zip -> OmegaCompletePartialOrder.Chain.zip is a dubious translation:
lean 3 declaration is
@@ -230,7 +234,12 @@ variable {α : Type u} {β : Type v} {γ : Type _}
variable [OmegaCompletePartialOrder α]
-#print OmegaCompletePartialOrder.lift /-
+/- warning: omega_complete_partial_order.lift -> OmegaCompletePartialOrder.lift is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : PartialOrder.{u2} β] (f : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (ωSup₀ : (OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) -> β), (forall (x : β) (y : β), (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => β -> α) (OrderHom.hasCoeToFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) f x) (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => β -> α) (OrderHom.hasCoeToFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) f y)) -> (LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) x y)) -> (forall (c : OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)), Eq.{succ u1} α (coeFn.{max (succ u2) (succ u1), max (succ u2) (succ u1)} (OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => β -> α) (OrderHom.hasCoeToFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) f (ωSup₀ c)) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 (OmegaCompletePartialOrder.Chain.map.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c f))) -> (OmegaCompletePartialOrder.{u2} β)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : PartialOrder.{u2} β] (f : OrderHom.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (ωSup₀ : (OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) -> β), (forall (x : β) (y : β), (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OrderHom.toFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) f x) (OrderHom.toFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) f y)) -> (LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)) x y)) -> (forall (c : OmegaCompletePartialOrder.Chain.{u2} β (PartialOrder.toPreorder.{u2} β _inst_2)), Eq.{succ u1} α (OrderHom.toFun.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) f (ωSup₀ c)) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 (OmegaCompletePartialOrder.Chain.map.{u2, u1} β α (PartialOrder.toPreorder.{u2} β _inst_2) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c f))) -> (OmegaCompletePartialOrder.{u2} β)
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.lift OmegaCompletePartialOrder.liftₓ'. -/
/-- Transfer a `omega_complete_partial_order` on `β` to a `omega_complete_partial_order` on `α`
using a strictly monotone function `f : β →o α`, a definition of ωSup and a proof that `f` is
continuous with regard to the provided `ωSup` and the ωCPO on `α`. -/
@@ -242,15 +251,23 @@ protected def lift [PartialOrder β] (f : β →o α) (ωSup₀ : Chain β →
ωSup_le c x hx := h _ _ (by rw [h'] <;> apply ωSup_le <;> intro <;> apply f.monotone (hx i))
le_ωSup c i := h _ _ (by rw [h'] <;> apply le_ωSup (c.map f))
#align omega_complete_partial_order.lift OmegaCompletePartialOrder.lift
--/
-#print OmegaCompletePartialOrder.le_ωSup_of_le /-
+/- warning: omega_complete_partial_order.le_ωSup_of_le -> OmegaCompletePartialOrder.le_ωSup_of_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α} (i : Nat), (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i)) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α} (i : Nat), (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i)) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.le_ωSup_of_le OmegaCompletePartialOrder.le_ωSup_of_leₓ'. -/
theorem le_ωSup_of_le {c : Chain α} {x : α} (i : ℕ) (h : x ≤ c i) : x ≤ ωSup c :=
le_trans h (le_ωSup c _)
#align omega_complete_partial_order.le_ωSup_of_le OmegaCompletePartialOrder.le_ωSup_of_le
--/
-#print OmegaCompletePartialOrder.ωSup_total /-
+/- warning: omega_complete_partial_order.ωSup_total -> OmegaCompletePartialOrder.ωSup_total is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α}, (forall (i : Nat), Or (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i) x) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i))) -> (Or (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c)))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {x : α}, (forall (i : Nat), Or (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i) x) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i))) -> (Or (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c)))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.ωSup_total OmegaCompletePartialOrder.ωSup_totalₓ'. -/
theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i) : ωSup c ≤ x ∨ x ≤ ωSup c :=
by_cases (fun this : ∀ i, c i ≤ x => Or.inl (ωSup_le _ _ this)) fun this : ¬∀ i, c i ≤ x =>
have : ∃ i, ¬c i ≤ x := by simp only [not_forall] at this⊢ <;> assumption
@@ -258,16 +275,24 @@ theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i)
have : x ≤ c i := (h i).resolve_left hx
Or.inr <| le_ωSup_of_le _ this
#align omega_complete_partial_order.ωSup_total OmegaCompletePartialOrder.ωSup_total
--/
-#print OmegaCompletePartialOrder.ωSup_le_ωSup_of_le /-
+/- warning: omega_complete_partial_order.ωSup_le_ωSup_of_le -> OmegaCompletePartialOrder.ωSup_le_ωSup_of_le is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c₀ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))}, (LE.le.{u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.Chain.hasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₀ c₁) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₀) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₁))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {c₀ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))} {c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))}, (LE.le.{u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.Chain.instLEChain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₀ c₁) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₀) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c₁))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.ωSup_le_ωSup_of_le OmegaCompletePartialOrder.ωSup_le_ωSup_of_leₓ'. -/
@[mono]
theorem ωSup_le_ωSup_of_le {c₀ c₁ : Chain α} (h : c₀ ≤ c₁) : ωSup c₀ ≤ ωSup c₁ :=
ωSup_le _ _ fun i => Exists.rec_on (h i) fun j h => le_trans h (le_ωSup _ _)
#align omega_complete_partial_order.ωSup_le_ωSup_of_le OmegaCompletePartialOrder.ωSup_le_ωSup_of_le
--/
-#print OmegaCompletePartialOrder.ωSup_le_iff /-
+/- warning: omega_complete_partial_order.ωSup_le_iff -> OmegaCompletePartialOrder.ωSup_le_iff is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] (c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (x : α), Iff (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (forall (i : Nat), LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c i) x)
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] (c : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (x : α), Iff (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OmegaCompletePartialOrder.ωSup.{u1} α _inst_1 c) x) (forall (i : Nat), LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c i) x)
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iffₓ'. -/
theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤ x :=
by
constructor <;> intros
@@ -276,7 +301,6 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
assumption
exact ωSup_le _ _ ‹_›
#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iff
--/
#print OmegaCompletePartialOrder.subtype /-
/-- A subset `p : α → Prop` of the type closed under `ωSup` induces an
@@ -546,13 +570,17 @@ theorem flip₁_continuous' (f : ∀ x : α, γ → β x) (a : α) (hf : Continu
Continuous.of_bundled _ (fun x y h => hf.to_monotone h a) fun c => congr_fun (hf.to_bundled _ c) a
#align pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'
-#print Pi.OmegaCompletePartialOrder.flip₂_continuous' /-
+/- warning: pi.omega_complete_partial_order.flip₂_continuous' -> Pi.OmegaCompletePartialOrder.flip₂_continuous' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : α -> Type.{u2}} {γ : Type.{u3}} [_inst_1 : forall (x : α), OmegaCompletePartialOrder.{u2} (β x)] [_inst_2 : OmegaCompletePartialOrder.{u3} γ] (f : γ -> (forall (x : α), β x)), (forall (x : α), OmegaCompletePartialOrder.Continuous'.{u3, u2} γ (β x) _inst_2 (_inst_1 x) (fun (g : γ) => f g x)) -> (OmegaCompletePartialOrder.Continuous'.{u3, max u1 u2} γ (forall (x : α), β x) _inst_2 (Pi.omegaCompletePartialOrder.{u1, u2} α (fun (x : α) => β x) (fun (a : α) => _inst_1 a)) f)
+but is expected to have type
+ forall {α : Type.{u1}} {β : α -> Type.{u2}} {γ : Type.{u3}} [_inst_1 : forall (x : α), OmegaCompletePartialOrder.{u2} (β x)] [_inst_2 : OmegaCompletePartialOrder.{u3} γ] (f : γ -> (forall (x : α), β x)), (forall (x : α), OmegaCompletePartialOrder.Continuous'.{u3, u2} γ (β x) _inst_2 (_inst_1 x) (fun (g : γ) => f g x)) -> (OmegaCompletePartialOrder.Continuous'.{u3, max u1 u2} γ (forall (x : α), β x) _inst_2 (Pi.instOmegaCompletePartialOrderForAll.{u1, u2} α (fun (x : α) => β x) (fun (a : α) => _inst_1 a)) f)
+Case conversion may be inaccurate. Consider using '#align pi.omega_complete_partial_order.flip₂_continuous' Pi.OmegaCompletePartialOrder.flip₂_continuous'ₓ'. -/
theorem flip₂_continuous' (f : γ → ∀ x, β x) (hf : ∀ x, Continuous' fun g => f g x) :
Continuous' f :=
Continuous.of_bundled _ (fun x y h a => (hf a).to_monotone h)
(by intro c <;> ext a <;> apply (hf a).to_bundled _ c)
#align pi.omega_complete_partial_order.flip₂_continuous' Pi.OmegaCompletePartialOrder.flip₂_continuous'
--/
end OmegaCompletePartialOrder
@@ -677,7 +705,7 @@ theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g
/- warning: complete_lattice.top_continuous -> CompleteLattice.top_continuous is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Top.top.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (OrderHom.hasTop.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Top.top.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (OrderHom.hasTop.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))) (BoundedOrder.toOrderTop.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (Top.top.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instTopOrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))) (BoundedOrder.toOrderTop.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
Case conversion may be inaccurate. Consider using '#align complete_lattice.top_continuous CompleteLattice.top_continuousₓ'. -/
@@ -690,7 +718,7 @@ theorem top_continuous : Continuous (⊤ : α →o β) :=
/- warning: complete_lattice.bot_continuous -> CompleteLattice.bot_continuous is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Bot.bot.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (OrderHom.hasBot.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Bot.bot.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (OrderHom.hasBot.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))) (BoundedOrder.toOrderBot.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
but is expected to have type
forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β], OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (Bot.bot.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instBotOrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))) (BoundedOrder.toOrderBot.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (CompleteLattice.toBoundedOrder.{u2} β _inst_2))))
Case conversion may be inaccurate. Consider using '#align complete_lattice.bot_continuous CompleteLattice.bot_continuousₓ'. -/
@@ -826,12 +854,16 @@ protected theorem monotone (f : α →𝒄 β) : Monotone f :=
#align omega_complete_partial_order.continuous_hom.monotone OmegaCompletePartialOrder.ContinuousHom.monotone
-/
-#print OmegaCompletePartialOrder.ContinuousHom.apply_mono /-
+/- warning: omega_complete_partial_order.continuous_hom.apply_mono -> OmegaCompletePartialOrder.ContinuousHom.apply_mono is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] {f : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {g : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {x : α} {y : α}, (LE.le.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toHasLe.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) f g) -> (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x y) -> (LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) f x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) g y))
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] {f : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {g : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2} {x : α} {y : α}, (LE.le.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (Preorder.toLE.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) f g) -> (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) x y) -> (LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 f) x) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 g) y))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.apply_mono OmegaCompletePartialOrder.ContinuousHom.apply_monoₓ'. -/
@[mono]
theorem apply_mono {f g : α →𝒄 β} {x y : α} (h₁ : f ≤ g) (h₂ : x ≤ y) : f x ≤ g y :=
OrderHom.apply_mono (show (f : α →o β) ≤ g from h₁) h₂
#align omega_complete_partial_order.continuous_hom.apply_mono OmegaCompletePartialOrder.ContinuousHom.apply_mono
--/
#print OmegaCompletePartialOrder.ContinuousHom.ite_continuous' /-
theorem ite_continuous' {p : Prop} [hp : Decidable p] (f g : α → β) (hf : Continuous' f)
@@ -1029,7 +1061,12 @@ def toMono : (α →𝒄 β) →o α →o β where
#align omega_complete_partial_order.continuous_hom.to_mono OmegaCompletePartialOrder.ContinuousHom.toMono
-/
-#print OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge /-
+/- warning: omega_complete_partial_order.continuous_hom.forall_forall_merge -> OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (i : Nat) (j : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ i)) z)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (i : Nat) (j : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ i)) z)
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_mergeₓ'. -/
/-- When proving that a chain of applications is below a bound `z`, it suffices to consider the
functions and values being selected from the same index in the chains.
@@ -1049,15 +1086,18 @@ theorem forall_forall_merge (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
· apply c₀.monotone
apply le_max_left
#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge
--/
-#print OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge' /-
+/- warning: omega_complete_partial_order.continuous_hom.forall_forall_merge' -> OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge' is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (j : Nat) (i : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toHasLe.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (coeFn.{succ (max u1 u2), succ (max u1 u2)} (OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (fun (_x : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) => Nat -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2)) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) c₀ i) (coeFn.{succ u1, succ u1} (OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (fun (_x : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) => Nat -> α) (OmegaCompletePartialOrder.Chain.hasCoeToFun.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) c₁ i)) z)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c₀ : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (c₁ : OmegaCompletePartialOrder.Chain.{u1} α (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1))) (z : β), Iff (forall (j : Nat) (i : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ j)) z) (forall (i : Nat), LE.le.{u2} β (Preorder.toLE.{u2} β (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2))) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OrderHom.toFun.{0, max u1 u2} Nat (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2)) c₀ i)) (OrderHom.toFun.{0, u1} Nat α (PartialOrder.toPreorder.{0} Nat (StrictOrderedSemiring.toPartialOrder.{0} Nat Nat.strictOrderedSemiring)) (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) c₁ i)) z)
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.forall_forall_merge' OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'ₓ'. -/
@[simp]
theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z : β) :
(∀ j i : ℕ, (c₀ i) (c₁ j) ≤ z) ↔ ∀ i : ℕ, (c₀ i) (c₁ i) ≤ z := by
rw [forall_swap, forall_forall_merge]
#align omega_complete_partial_order.continuous_hom.forall_forall_merge' OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'
--/
#print OmegaCompletePartialOrder.ContinuousHom.ωSup /-
/-- The `ωSup` operator for continuous functions, which takes the pointwise countable supremum
@@ -1118,11 +1158,15 @@ def apply : (α →𝒄 β) × α →𝒄 β where
end Prod
-#print OmegaCompletePartialOrder.ContinuousHom.ωSup_def /-
+/- warning: omega_complete_partial_order.continuous_hom.ωSup_def -> OmegaCompletePartialOrder.ContinuousHom.ωSup_def is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.partialOrder.{u1, u2} α β _inst_1 _inst_2))) (x : α), Eq.{succ u2} β (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ωSup.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.omegaCompletePartialOrder.{u1, u2} α β _inst_1 _inst_2) c) x) (coeFn.{max (succ u1) (succ u2), max (succ u1) (succ u2)} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (fun (_x : OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) => α -> β) (OmegaCompletePartialOrder.ContinuousHom.hasCoeToFun.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.ωSup.{u1, u2} α β _inst_1 _inst_2 c) x)
+but is expected to have type
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : OmegaCompletePartialOrder.{u2} β] (c : OmegaCompletePartialOrder.Chain.{max u2 u1} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (PartialOrder.toPreorder.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.instPartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2))) (x : α), Eq.{succ u2} β (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OmegaCompletePartialOrder.ωSup.{max u1 u2} (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α β _inst_1 _inst_2) (OmegaCompletePartialOrder.ContinuousHom.instOmegaCompletePartialOrderContinuousHom.{u1, u2} α β _inst_1 _inst_2) c)) x) (OrderHom.toFun.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β _inst_2)) (OmegaCompletePartialOrder.ContinuousHom.toOrderHom.{u1, u2} α β _inst_1 _inst_2 (OmegaCompletePartialOrder.ContinuousHom.ωSup.{u1, u2} α β _inst_1 _inst_2 c)) x)
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_defₓ'. -/
theorem ωSup_def (c : Chain (α →𝒄 β)) (x : α) : ωSup c x = ContinuousHom.ωSup c x :=
rfl
#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_def
--/
/- warning: omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup -> OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup is a dubious translation:
lean 3 declaration is
@@ -1134,7 +1178,12 @@ theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
ωSup c₀ (ωSup c₁) = Prod.apply (ωSup (c₀.zip c₁)) := by simp [prod.apply_apply, Prod.ωSup_zip]
#align omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
-#print OmegaCompletePartialOrder.ContinuousHom.flip /-
+/- warning: omega_complete_partial_order.continuous_hom.flip -> OmegaCompletePartialOrder.ContinuousHom.flip is a dubious translation:
+lean 3 declaration is
+ forall {β : Type.{u1}} {γ : Type.{u2}} [_inst_2 : OmegaCompletePartialOrder.{u1} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] {α : Type.{u3}}, (α -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, max u3 u2} β (α -> γ) _inst_2 (Pi.omegaCompletePartialOrder.{u3, u2} α (fun (ᾰ : α) => γ) (fun (a : α) => _inst_3)))
+but is expected to have type
+ forall {β : Type.{u1}} {γ : Type.{u2}} [_inst_2 : OmegaCompletePartialOrder.{u1} β] [_inst_3 : OmegaCompletePartialOrder.{u2} γ] {α : Type.{u3}}, (α -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} β γ _inst_2 _inst_3)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, max u2 u3} β (α -> γ) _inst_2 (Pi.instOmegaCompletePartialOrderForAll.{u3, u2} α (fun (ᾰ : α) => γ) (fun (a : α) => _inst_3)))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flipₓ'. -/
/-- A family of continuous functions yields a continuous family of functions. -/
@[simps]
def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
@@ -1143,9 +1192,13 @@ def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ
monotone' x y h a := (f a).Monotone h
cont := by intro <;> ext <;> change f x _ = _ <;> rw [(f x).Continuous] <;> rfl
#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flip
--/
-#print OmegaCompletePartialOrder.ContinuousHom.bind /-
+/- warning: omega_complete_partial_order.continuous_hom.bind -> OmegaCompletePartialOrder.ContinuousHom.bind is a dubious translation:
+lean 3 declaration is
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}}, (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.omegaCompletePartialOrder.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ))) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ))
+but is expected to have type
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}}, (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β)) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (β -> (Part.{u2} γ)) _inst_1 (Pi.instOmegaCompletePartialOrderForAll.{u2, u2} β (fun (ᾰ : β) => Part.{u2} γ) (fun (a : β) => Part.omegaCompletePartialOrder.{u2} γ))) -> (OmegaCompletePartialOrder.ContinuousHom.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ))
+Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.bind OmegaCompletePartialOrder.ContinuousHom.bindₓ'. -/
/-- `part.bind` as a continuous function. -/
@[simps (config := { rhsMd := reducible })]
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
@@ -1154,7 +1207,6 @@ noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄
rw [OrderHom.bind, ← OrderHom.bind, ωSup_bind, ← f.continuous, ← g.continuous]
rfl
#align omega_complete_partial_order.continuous_hom.bind OmegaCompletePartialOrder.ContinuousHom.bind
--/
#print OmegaCompletePartialOrder.ContinuousHom.map /-
/-- `part.map` as a continuous function. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -616,18 +616,18 @@ instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α
where
ωSup c := ⨆ i, c i
ωSup_le := fun ⟨c, _⟩ s hs => by
- simp only [supᵢ_le_iff, OrderHom.coe_fun_mk] at hs⊢ <;> intro i <;> apply hs i
- le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk] <;> apply le_supᵢ_of_le i <;> rfl
+ simp only [iSup_le_iff, OrderHom.coe_fun_mk] at hs⊢ <;> intro i <;> apply hs i
+ le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk] <;> apply le_iSup_of_le i <;> rfl
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
-/- warning: complete_lattice.Sup_continuous -> CompleteLattice.supₛ_continuous is a dubious translation:
+/- warning: complete_lattice.Sup_continuous -> CompleteLattice.sSup_continuous is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))), (forall (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))), (Membership.Mem.{max u1 u2, max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (Set.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))) (Set.hasMem.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))) f s) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (SupSet.supₛ.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) s))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))), (forall (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))), (Membership.Mem.{max u1 u2, max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (Set.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))) (Set.hasMem.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))) f s) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) s))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))), (forall (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))), (Membership.mem.{max u1 u2, max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (Set.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))) (Set.instMembershipSet.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))) f s) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (SupSet.supₛ.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instSupSetOrderHomToPreorderToPartialOrderToCompleteSemilatticeInf.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) s))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous CompleteLattice.supₛ_continuousₓ'. -/
-theorem supₛ_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (supₛ s) :=
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))), (forall (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))), (Membership.mem.{max u1 u2, max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (Set.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))) (Set.instMembershipSet.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2))))) f s) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instSupSetOrderHomToPreorderToPartialOrderToCompleteSemilatticeInf.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) s))
+Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuousₓ'. -/
+theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (sSup s) :=
by
intro c
apply eq_of_forall_ge_iff
@@ -635,33 +635,33 @@ theorem supₛ_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous
suffices (∀ f ∈ s, ∀ (n), (f : _) (c n) ≤ z) ↔ ∀ (n), ∀ f ∈ s, (f : _) (c n) ≤ z by
simpa (config := { contextual := true }) [ωSup_le_iff, hs _ _ _]
exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
-#align complete_lattice.Sup_continuous CompleteLattice.supₛ_continuous
+#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuous
-/- warning: complete_lattice.supr_continuous -> CompleteLattice.supᵢ_continuous is a dubious translation:
+/- warning: complete_lattice.supr_continuous -> CompleteLattice.iSup_continuous is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {ι : Sort.{u3}} {f : ι -> (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))}, (forall (i : ι), OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (f i)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (supᵢ.{max u1 u2, u3} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) ι (fun (i : ι) => f i)))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {ι : Sort.{u3}} {f : ι -> (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2))))}, (forall (i : ι), OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (f i)) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (iSup.{max u1 u2, u3} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) _inst_2) ι (fun (i : ι) => f i)))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLattice.{u3} β] {ι : Sort.{u1}} {f : ι -> (OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2))))}, (forall (i : ι), OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2) (f i)) -> (OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2) (supᵢ.{max u3 u2, u1} (OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2)))) (OrderHom.instSupSetOrderHomToPreorderToPartialOrderToCompleteSemilatticeInf.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) _inst_2) ι (fun (i : ι) => f i)))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.supr_continuous CompleteLattice.supᵢ_continuousₓ'. -/
-theorem supᵢ_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
+ forall {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLattice.{u3} β] {ι : Sort.{u1}} {f : ι -> (OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2))))}, (forall (i : ι), OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2) (f i)) -> (OmegaCompletePartialOrder.Continuous.{u2, u3} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2) (iSup.{max u3 u2, u1} (OrderHom.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u3} β (OmegaCompletePartialOrder.toPartialOrder.{u3} β (CompleteLattice.instOmegaCompletePartialOrder.{u3} β _inst_2)))) (OrderHom.instSupSetOrderHomToPreorderToPartialOrderToCompleteSemilatticeInf.{u2, u3} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) _inst_2) ι (fun (i : ι) => f i)))
+Case conversion may be inaccurate. Consider using '#align complete_lattice.supr_continuous CompleteLattice.iSup_continuousₓ'. -/
+theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
- supₛ_continuous _ <| Set.forall_range_iff.2 h
-#align complete_lattice.supr_continuous CompleteLattice.supᵢ_continuous
+ sSup_continuous _ <| Set.forall_range_iff.2 h
+#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
-/- warning: complete_lattice.Sup_continuous' -> CompleteLattice.supₛ_continuous' is a dubious translation:
+/- warning: complete_lattice.Sup_continuous' -> CompleteLattice.sSup_continuous' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (α -> β)), (forall (f : α -> β), (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (SupSet.supₛ.{max u1 u2} (α -> β) (Pi.supSet.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2))) s))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (α -> β)), (forall (f : α -> β), (Membership.Mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.hasMem.{max u1 u2} (α -> β)) f s) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u1 u2} (α -> β) (Pi.supSet.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => CompleteSemilatticeSup.toHasSup.{u2} β (CompleteLattice.toCompleteSemilatticeSup.{u2} β _inst_2))) s))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (α -> β)), (forall (f : α -> β), (Membership.mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.instMembershipSet.{max u1 u2} (α -> β)) f s) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (SupSet.supₛ.{max u2 u1} (α -> β) (Pi.supSet.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => CompleteLattice.toSupSet.{u2} β _inst_2)) s))
-Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous' CompleteLattice.supₛ_continuous'ₓ'. -/
-theorem supₛ_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) : Continuous' (supₛ s) :=
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] (s : Set.{max u1 u2} (α -> β)), (forall (f : α -> β), (Membership.mem.{max u1 u2, max u1 u2} (α -> β) (Set.{max u1 u2} (α -> β)) (Set.instMembershipSet.{max u1 u2} (α -> β)) f s) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f)) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (SupSet.sSup.{max u2 u1} (α -> β) (Pi.supSet.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => CompleteLattice.toSupSet.{u2} β _inst_2)) s))
+Case conversion may be inaccurate. Consider using '#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'ₓ'. -/
+theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) : Continuous' (sSup s) :=
by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
simp only [Set.ball_image_iff, continuous'_coe] at hc
- rw [supₛ_image]
+ rw [sSup_image]
norm_cast
exact supr_continuous fun f => supr_continuous fun hf => hc f hf
-#align complete_lattice.Sup_continuous' CompleteLattice.supₛ_continuous'
+#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'
/- warning: complete_lattice.sup_continuous -> CompleteLattice.sup_continuous is a dubious translation:
lean 3 declaration is
@@ -671,7 +671,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align complete_lattice.sup_continuous CompleteLattice.sup_continuousₓ'. -/
theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊔ g) := by
- rw [← supₛ_pair]; apply Sup_continuous
+ rw [← sSup_pair]; apply Sup_continuous
rintro f (rfl | rfl | _) <;> assumption
#align complete_lattice.sup_continuous CompleteLattice.sup_continuous
@@ -696,7 +696,7 @@ but is expected to have type
Case conversion may be inaccurate. Consider using '#align complete_lattice.bot_continuous CompleteLattice.bot_continuousₓ'. -/
theorem bot_continuous : Continuous (⊥ : α →o β) :=
by
- rw [← supₛ_empty]
+ rw [← sSup_empty]
exact Sup_continuous _ fun f hf => hf.elim
#align complete_lattice.bot_continuous CompleteLattice.bot_continuous
mathlib commit https://github.com/leanprover-community/mathlib/commit/3180fab693e2cee3bff62675571264cb8778b212
@@ -902,7 +902,7 @@ theorem map_continuous' {β γ : Type v} (f : β → γ) (g : α → Part β) (h
lean 3 declaration is
forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} (β -> γ))) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} (β -> γ)) _inst_1 (Part.omegaCompletePartialOrder.{u2} (β -> γ)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Seq.seq.{u2, u2} Part.{u2} (Applicative.toHasSeq.{u2, u2} Part.{u2} (Monad.toApplicative.{u2, u2} Part.{u2} Part.monad.{u2})) β γ (f x) (g x)))
but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} (β -> γ))) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} (β -> γ)) _inst_1 (Part.omegaCompletePartialOrder.{u2} (β -> γ)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Seq.seq.{u2, u2} Part.{u2} (Applicative.toSeq.{u2, u2} Part.{u2} (Monad.toApplicative.{u2, u2} Part.{u2} Part.instMonadPart.{u2})) β γ (f x) (fun (x._@.Mathlib.Order.OmegaCompletePartialOrder._hyg.6415 : Unit) => g x)))
+ forall {α : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] {β : Type.{u2}} {γ : Type.{u2}} (f : α -> (Part.{u2} (β -> γ))) (g : α -> (Part.{u2} β)), (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} (β -> γ)) _inst_1 (Part.omegaCompletePartialOrder.{u2} (β -> γ)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} β) _inst_1 (Part.omegaCompletePartialOrder.{u2} β) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α (Part.{u2} γ) _inst_1 (Part.omegaCompletePartialOrder.{u2} γ) (fun (x : α) => Seq.seq.{u2, u2} Part.{u2} (Applicative.toSeq.{u2, u2} Part.{u2} (Monad.toApplicative.{u2, u2} Part.{u2} Part.instMonadPart.{u2})) β γ (f x) (fun (x._@.Mathlib.Order.OmegaCompletePartialOrder._hyg.6462 : Unit) => g x)))
Case conversion may be inaccurate. Consider using '#align omega_complete_partial_order.continuous_hom.seq_continuous' OmegaCompletePartialOrder.ContinuousHom.seq_continuous'ₓ'. -/
theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α → Part β) (hf : Continuous' f)
(hg : Continuous' g) : Continuous' fun x => f x <*> g x := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -665,9 +665,9 @@ theorem supₛ_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous'
/- warning: complete_lattice.sup_continuous -> CompleteLattice.sup_continuous is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))} {g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))}, (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (HasSup.sup.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))) f g))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))} {g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β _inst_2)))}, (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2) (Sup.sup.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.hasSup.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))) f g))
but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))} {g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))}, (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (HasSup.sup.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instHasSupOrderHomToPreorderToPartialOrder.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))) f g))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLattice.{u2} β] {f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))} {g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))}, (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2) (Sup.sup.{max u2 u1} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.instOmegaCompletePartialOrder.{u2} β _inst_2)))) (OrderHom.instSupOrderHomToPreorderToPartialOrder.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeSup.{u2} β (CompleteLattice.toLattice.{u2} β _inst_2))) f g))
Case conversion may be inaccurate. Consider using '#align complete_lattice.sup_continuous CompleteLattice.sup_continuousₓ'. -/
theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊔ g) := by
@@ -708,9 +708,9 @@ variable {α β : Type _} [OmegaCompletePartialOrder α] [CompleteLinearOrder β
/- warning: complete_lattice.inf_continuous -> CompleteLattice.inf_continuous is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLinearOrder.{u2} β] (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) (g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))), (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) (HasInf.inf.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) (OrderHom.hasInf.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)))) f g))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLinearOrder.{u2} β] (f : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) (g : OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (CompleteSemilatticeInf.toPartialOrder.{u2} β (CompleteLattice.toCompleteSemilatticeInf.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))), (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) (Inf.inf.{max u1 u2} (OrderHom.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (PartialOrder.toPreorder.{u2} β (OmegaCompletePartialOrder.toPartialOrder.{u2} β (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) (OrderHom.hasInf.{u1, u2} α β (PartialOrder.toPreorder.{u1} α (OmegaCompletePartialOrder.toPartialOrder.{u1} α _inst_1)) (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)))) f g))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLinearOrder.{u1} β] (f : OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))) (g : OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))), (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) (HasInf.inf.{max u1 u2} (OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))) (OrderHom.instHasInfOrderHomToPreorderToPartialOrder.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (Lattice.toSemilatticeInf.{u1} β (CompleteLattice.toLattice.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)))) f g))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLinearOrder.{u1} β] (f : OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))) (g : OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))), (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) (Inf.inf.{max u1 u2} (OrderHom.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (PartialOrder.toPreorder.{u1} β (OmegaCompletePartialOrder.toPartialOrder.{u1} β (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2))))) (OrderHom.instInfOrderHomToPreorderToPartialOrder.{u2, u1} α β (PartialOrder.toPreorder.{u2} α (OmegaCompletePartialOrder.toPartialOrder.{u2} α _inst_1)) (Lattice.toSemilatticeInf.{u1} β (CompleteLattice.toLattice.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)))) f g))
Case conversion may be inaccurate. Consider using '#align complete_lattice.inf_continuous CompleteLattice.inf_continuousₓ'. -/
theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊓ g) := by
@@ -725,9 +725,9 @@ theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g
/- warning: complete_lattice.inf_continuous' -> CompleteLattice.inf_continuous' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLinearOrder.{u2} β] {f : α -> β} {g : α -> β}, (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) (HasInf.inf.{max u1 u2} (α -> β) (Pi.hasInf.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => SemilatticeInf.toHasInf.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) f g))
+ forall {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : OmegaCompletePartialOrder.{u1} α] [_inst_2 : CompleteLinearOrder.{u2} β] {f : α -> β} {g : α -> β}, (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous'.{u1, u2} α β _inst_1 (CompleteLattice.omegaCompletePartialOrder.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2)) (Inf.inf.{max u1 u2} (α -> β) (Pi.hasInf.{u1, u2} α (fun (ᾰ : α) => β) (fun (i : α) => SemilatticeInf.toHasInf.{u2} β (Lattice.toSemilatticeInf.{u2} β (CompleteLattice.toLattice.{u2} β (CompleteLinearOrder.toCompleteLattice.{u2} β _inst_2))))) f g))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLinearOrder.{u1} β] {f : α -> β} {g : α -> β}, (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) (HasInf.inf.{max u1 u2} (α -> β) (Pi.instHasInfForAll.{u2, u1} α (fun (ᾰ : α) => β) (fun (i : α) => Lattice.toHasInf.{u1} β (CompleteLattice.toLattice.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)))) f g))
+ forall {α : Type.{u2}} {β : Type.{u1}} [_inst_1 : OmegaCompletePartialOrder.{u2} α] [_inst_2 : CompleteLinearOrder.{u1} β] {f : α -> β} {g : α -> β}, (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) f) -> (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) g) -> (OmegaCompletePartialOrder.Continuous'.{u2, u1} α β _inst_1 (CompleteLattice.instOmegaCompletePartialOrder.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)) (Inf.inf.{max u1 u2} (α -> β) (Pi.instInfForAll.{u2, u1} α (fun (ᾰ : α) => β) (fun (i : α) => Lattice.toInf.{u1} β (CompleteLattice.toLattice.{u1} β (CompleteLinearOrder.toCompleteLattice.{u1} β _inst_2)))) f g))
Case conversion may be inaccurate. Consider using '#align complete_lattice.inf_continuous' CompleteLattice.inf_continuous'ₓ'. -/
theorem inf_continuous' {f g : α → β} (hf : Continuous' f) (hg : Continuous' g) :
Continuous' (f ⊓ g) :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -232,8 +232,8 @@ theorem ωSup_le_ωSup_of_le {c₀ c₁ : Chain α} (h : c₀ ≤ c₁) : ωSup
theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤ x := by
constructor <;> intros
· trans ωSup c
- exact le_ωSup _ _
- assumption
+ · exact le_ωSup _ _
+ · assumption
exact ωSup_le _ _ ‹_›
#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iff
@@ -295,9 +295,9 @@ lemma isLUB_of_scottContinuous {c : Chain α} {f : α → β} (hf : ScottContinu
lemma ScottContinuous.continuous' {f : α → β} (hf : ScottContinuous f) : Continuous' f := by
constructor
- intro c
- rw [← (ωSup_eq_of_isLUB (isLUB_of_scottContinuous hf))]
- simp only [OrderHom.coe_mk]
+ · intro c
+ rw [← (ωSup_eq_of_isLUB (isLUB_of_scottContinuous hf))]
+ simp only [OrderHom.coe_mk]
theorem Continuous'.to_monotone {f : α → β} (hf : Continuous' f) : Monotone f :=
hf.fst
@@ -417,7 +417,7 @@ theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈
constructor
· split_ifs with h
swap
- rintro ⟨⟨⟩⟩
+ · rintro ⟨⟨⟩⟩
intro h'
have hh := Classical.choose_spec h
simp only [mem_some_iff] at h'
@@ -857,8 +857,8 @@ def apply : (α →𝒄 β) × α →𝒄 β where
intro j
apply le_ωSup_of_le (max i j)
apply apply_mono
- exact monotone_fst (OrderHom.mono _ (le_max_left _ _))
- exact monotone_snd (OrderHom.mono _ (le_max_right _ _))
+ · exact monotone_fst (OrderHom.mono _ (le_max_left _ _))
+ · exact monotone_snd (OrderHom.mono _ (le_max_right _ _))
· apply ωSup_le
intro i
apply le_ωSup_of_le i
Data.{Nat,Int}{.Order}.Basic
in group vs ring instances (#11924)
Scatter the content of Data.Nat.Basic
across:
Data.Nat.Defs
for the lemmas having no dependenciesAlgebra.Group.Nat
for the monoid instances and the few miscellaneous lemmas needing them.Algebra.Ring.Nat
for the semiring instance and the few miscellaneous lemmas following it.Similarly, scatter
Data.Int.Basic
across Data.Int.Defs
, Algebra.Group.Int
, Algebra.Ring.Int
Data.Nat.Order.Basic
across Data.Nat.Defs
, Algebra.Order.Group.Nat
, Algebra.Order.Ring.Nat
Data.Int.Order.Basic
across Data.Int.Defs
, Algebra.Order.Group.Int
, Algebra.Order.Ring.Int
Also move a few lemmas from Data.Nat.Order.Lemmas
to Data.Nat.Defs
.
Before
After
@@ -7,7 +7,7 @@ import Mathlib.Control.Monad.Basic
import Mathlib.Data.Part
import Mathlib.Order.Chain
import Mathlib.Order.Hom.Order
-import Mathlib.Data.Nat.Order.Basic
+import Mathlib.Algebra.Order.Ring.Nat
#align_import order.omega_complete_partial_order from "leanprover-community/mathlib"@"92ca63f0fb391a9ca5f22d2409a6080e786d99f7"
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -194,7 +194,6 @@ class OmegaCompletePartialOrder (α : Type*) extends PartialOrder α where
namespace OmegaCompletePartialOrder
variable {α : Type u} {β : Type v} {γ : Type*}
-
variable [OmegaCompletePartialOrder α]
/-- Transfer an `OmegaCompletePartialOrder` on `β` to an `OmegaCompletePartialOrder` on `α`
@@ -584,7 +583,6 @@ end CompleteLattice
namespace OmegaCompletePartialOrder
variable {α : Type u} {α' : Type*} {β : Type v} {β' : Type*} {γ : Type*} {φ : Type*}
-
variable [OmegaCompletePartialOrder α] [OmegaCompletePartialOrder β]
variable [OmegaCompletePartialOrder γ] [OmegaCompletePartialOrder φ]
variable [OmegaCompletePartialOrder α'] [OmegaCompletePartialOrder β']
@@ -154,7 +154,7 @@ theorem map_comp : (c.map f).map g = c.map (g.comp f) :=
@[mono]
theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g :=
- fun i => by simp [mem_map_iff]; intros; exists i; apply h
+ fun i => by simp [mem_map_iff]; exists i; apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
/-- `OmegaCompletePartialOrder.Chain.zip` pairs up the elements of two chains
ball
and bex
from lemma names (#10816)
ball
for "bounded forall" and bex
for "bounded exists" are from experience very confusing abbreviations. This PR renames them to forall_mem
and exists_mem
in the few Set
lemma names that mention them.
Also deprecate ball_image_of_ball
, mem_image_elim
, mem_image_elim_on
since those lemmas are duplicates of the renamed lemmas (apart from argument order and implicitness, which I am also fixing by making the binder in the RHS of forall_mem_image
semi-implicit), have obscure names and are completely unused.
@@ -529,16 +529,16 @@ theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f)
theorem iSup_continuous {ι : Sort*} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
- sSup_continuous _ <| Set.forall_range_iff.2 h
+ sSup_continuous _ <| Set.forall_mem_range.2 h
#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) :
Continuous' (sSup s) := by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
- simp only [Set.ball_image_iff, continuous'_coe] at hc
+ simp only [Set.forall_mem_image, continuous'_coe] at hc
rw [sSup_image]
norm_cast
- exact iSup_continuous fun f => iSup_continuous fun hf => hc f hf
+ exact iSup_continuous fun f ↦ iSup_continuous fun hf ↦ hc hf
#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'
theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g) :
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -60,7 +60,7 @@ universe u v
-- Porting note: can this really be a good idea?
attribute [-simp] Part.bind_eq_bind Part.map_eq_map
-open Classical
+open scoped Classical
namespace OrderHom
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -57,7 +57,7 @@ supremum helps define the meaning of recursive procedures.
universe u v
--- porting note: can this really be a good idea?
+-- Porting note: can this really be a good idea?
attribute [-simp] Part.bind_eq_bind Part.map_eq_map
open Classical
@@ -174,7 +174,7 @@ end OmegaCompletePartialOrder
open OmegaCompletePartialOrder
--- porting note: removed "set_option extends_priority 50"
+-- Porting note: removed "set_option extends_priority 50"
/-- An omega-complete partial order is a partial order with a supremum
operation on increasing sequences indexed by natural numbers (which we
@@ -361,7 +361,7 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
rcases le_total i j with hij | hji
· have := c.monotone hij _ ha; apply mem_unique this hb
· have := c.monotone hji _ hb; apply Eq.symm; apply mem_unique this ha
- --Porting note: Old proof
+ -- Porting note: Old proof
-- wlog h : i ≤ j := le_total i j using a b i j, b a j i
-- rw [eq_some_iff] at ha hb
-- have := c.monotone h _ ha; apply mem_unique this hb
@@ -891,7 +891,7 @@ def flip {α : Type*} (f : α → β →𝒄 γ) : β →𝒄 α → γ where
#align omega_complete_partial_order.continuous_hom.flip_apply OmegaCompletePartialOrder.ContinuousHom.flip_apply
/-- `Part.bind` as a continuous function. -/
-@[simps! apply] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps! apply] -- Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
.mk (OrderHom.bind f g.toOrderHom) fun c => by
rw [ωSup_bind, ← f.continuous, g.toOrderHom_eq_coe, ← g.continuous]
@@ -900,7 +900,7 @@ noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄
#align omega_complete_partial_order.continuous_hom.bind_apply OmegaCompletePartialOrder.ContinuousHom.bind_apply
/-- `Part.map` as a continuous function. -/
-@[simps! apply] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps! apply] -- Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
.copy (fun x => f <$> g x) (bind g (const (pure ∘ f))) <| by
ext1
@@ -910,7 +910,7 @@ noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β)
#align omega_complete_partial_order.continuous_hom.map_apply OmegaCompletePartialOrder.ContinuousHom.map_apply
/-- `Part.seq` as a continuous function. -/
-@[simps! apply] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps! apply] -- Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def seq {β γ : Type v} (f : α →𝒄 Part (β → γ)) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
.copy (fun x => f x <*> g x) (bind f <| flip <| _root_.flip map g) <| by
ext
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -75,7 +75,7 @@ def bind {β γ} (f : α →o Part β) (g : α →o β → Part γ) : α →o Pa
intro x y h a
simp only [and_imp, exists_prop, Part.bind_eq_bind, Part.mem_bind_iff, exists_imp]
intro b hb ha
- refine' ⟨b, f.monotone h _ hb, g.monotone h _ _ ha⟩
+ exact ⟨b, f.monotone h _ hb, g.monotone h _ _ ha⟩
#align order_hom.bind OrderHom.bind
#align order_hom.bind_coe OrderHom.bind_coe
@@ -399,7 +399,7 @@ noncomputable instance omegaCompletePartialOrder :
le_ωSup c i := by
intro x hx
rw [← eq_some_iff] at hx ⊢
- rw [ωSup_eq_some, ← hx]
+ rw [ωSup_eq_some]
rw [← hx]
exact ⟨i, rfl⟩
ωSup_le := by
The FunLike hierarchy is very big and gets scanned through each time we need a coercion (via the CoeFun
instance). It looks like unbundled inheritance suits Lean 4 better here. The only class that still extends FunLike
is EquivLike
, since that has a custom coe_injective'
field that is easier to implement. All other classes should take FunLike
or EquivLike
as a parameter.
Previously, morphism classes would be Type
-valued and extend FunLike
:
/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
extends FunLike F A B :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))
After this PR, they should be Prop
-valued and take FunLike
as a parameter:
/-- `MyHomClass F A B` states that `F` is a type of `MyClass.op`-preserving morphisms.
You should extend this class when you extend `MyHom`. -/
class MyHomClass (F : Type*) (A B : outParam <| Type*) [MyClass A] [MyClass B]
[FunLike F A B] : Prop :=
(map_op : ∀ (f : F) (x y : A), f (MyClass.op x y) = MyClass.op (f x) (f y))
(Note that A B
stay marked as outParam
even though they are not purely required to be so due to the FunLike
parameter already filling them in. This is required to see through type synonyms, which is important in the category theory library. Also, I think keeping them as outParam
is slightly faster.)
Similarly, MyEquivClass
should take EquivLike
as a parameter.
As a result, every mention of [MyHomClass F A B]
should become [FunLike F A B] [MyHomClass F A B]
.
While overall this gives some great speedups, there are some cases that are noticeably slower. In particular, a failing application of a lemma such as map_mul
is more expensive. This is due to suboptimal processing of arguments. For example:
variable [FunLike F M N] [Mul M] [Mul N] (f : F) (x : M) (y : M)
theorem map_mul [MulHomClass F M N] : f (x * y) = f x * f y
example [AddHomClass F A B] : f (x * y) = f x * f y := map_mul f _ _
Before this PR, applying map_mul f
gives the goals [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]
. Since M
and N
are out_param
s, [MulHomClass F ?M ?N]
is synthesized first, supplies values for ?M
and ?N
and then the Mul M
and Mul N
instances can be found.
After this PR, the goals become [FunLike F ?M ?N] [Mul ?M] [Mul ?N] [MulHomClass F ?M ?N]
. Now [FunLike F ?M ?N]
is synthesized first, supplies values for ?M
and ?N
and then the Mul M
and Mul N
instances can be found, before trying MulHomClass F M N
which fails. Since the Mul
hierarchy is very big, this can be slow to fail, especially when there is no such Mul
instance.
A long-term but harder to achieve solution would be to specify the order in which instance goals get solved. For example, we'd like to change the arguments to map_mul
to look like [FunLike F M N] [Mul M] [Mul N] [highPriority <| MulHomClass F M N]
because MulHomClass
fails or succeeds much faster than the others.
As a consequence, the simpNF
linter is much slower since by design it tries and fails to apply many map_
lemmas. The same issue occurs a few times in existing calls to simp [map_mul]
, where map_mul
is tried "too soon" and fails. Thanks to the speedup of leanprover/lean4#2478 the impact is very limited, only in files that already were close to the timeout.
simp
not firing sometimesThis affects map_smulₛₗ
and related definitions. For simp
lemmas Lean apparently uses a slightly different mechanism to find instances, so that rw
can find every argument to map_smulₛₗ
successfully but simp
can't: leanprover/lean4#3701.
Especially in the category theory library, we might sometimes have a type A
which is also accessible as a synonym (Bundled A hA).1
. Instance synthesis doesn't always work if we have f : A →* B
but x * y : (Bundled A hA).1
or vice versa. This seems to be mostly fixed by keeping A B
as outParam
s in MulHomClass F A B
. (Presumably because Lean will do a definitional check A =?= (Bundled A hA).1
instead of using the syntax in the discrimination tree.)
The timeouts can be worked around for now by specifying which map_mul
we mean, either as map_mul f
for some explicit f
, or as e.g. MonoidHomClass.map_mul
.
map_smulₛₗ
not firing as simp
lemma can be worked around by going back to the pre-FunLike situation and making LinearMap.map_smulₛₗ
a simp
lemma instead of the generic map_smulₛₗ
. Writing simp [map_smulₛₗ _]
also works.
Co-authored-by: Matthew Ballard <matt@mrb.email> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott@tqft.net> Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -95,6 +95,7 @@ namespace Chain
variable {α : Type u} {β : Type v} {γ : Type*}
variable [Preorder α] [Preorder β] [Preorder γ]
+instance : FunLike (Chain α) ℕ α := inferInstanceAs <| FunLike (ℕ →o α) ℕ α
instance : OrderHomClass (Chain α) ℕ α := inferInstanceAs <| OrderHomClass (ℕ →o α) ℕ α
instance : CoeFun (Chain α) fun _ => ℕ → α := ⟨DFunLike.coe⟩
@@ -622,9 +623,11 @@ attribute [nolint docBlame] ContinuousHom.toOrderHom
@[inherit_doc] infixr:25 " →𝒄 " => ContinuousHom -- Input: \r\MIc
-instance : OrderHomClass (α →𝒄 β) α β where
+instance : FunLike (α →𝒄 β) α β where
coe f := f.toFun
coe_injective' := by rintro ⟨⟩ ⟨⟩ h; congr; exact DFunLike.ext' h
+
+instance : OrderHomClass (α →𝒄 β) α β where
map_rel f _ _ h := f.mono h
-- Porting note: removed to avoid conflict with the generic instance
FunLike
to DFunLike
(#9785)
This prepares for the introduction of a non-dependent synonym of FunLike, which helps a lot with keeping #8386 readable.
This is entirely search-and-replace in 680197f combined with manual fixes in 4145626, e900597 and b8428f8. The commands that generated this change:
sed -i 's/\bFunLike\b/DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoFunLike\b/toDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/import Mathlib.Data.DFunLike/import Mathlib.Data.FunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bHom_FunLike\b/Hom_DFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\binstFunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\bfunLike\b/instDFunLike/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
sed -i 's/\btoo many metavariables to apply `fun_like.has_coe_to_fun`/too many metavariables to apply `DFunLike.hasCoeToFun`/g' {Archive,Counterexamples,Mathlib,test}/**/*.lean
Co-authored-by: Anne Baanen <Vierkantor@users.noreply.github.com>
@@ -96,7 +96,7 @@ variable {α : Type u} {β : Type v} {γ : Type*}
variable [Preorder α] [Preorder β] [Preorder γ]
instance : OrderHomClass (Chain α) ℕ α := inferInstanceAs <| OrderHomClass (ℕ →o α) ℕ α
-instance : CoeFun (Chain α) fun _ => ℕ → α := ⟨FunLike.coe⟩
+instance : CoeFun (Chain α) fun _ => ℕ → α := ⟨DFunLike.coe⟩
instance [Inhabited α] : Inhabited (Chain α) :=
⟨⟨default, fun _ _ _ => le_rfl⟩⟩
@@ -624,7 +624,7 @@ attribute [nolint docBlame] ContinuousHom.toOrderHom
instance : OrderHomClass (α →𝒄 β) α β where
coe f := f.toFun
- coe_injective' := by rintro ⟨⟩ ⟨⟩ h; congr; exact FunLike.ext' h
+ coe_injective' := by rintro ⟨⟩ ⟨⟩ h; congr; exact DFunLike.ext' h
map_rel f _ _ h := f.mono h
-- Porting note: removed to avoid conflict with the generic instance
@@ -643,7 +643,7 @@ theorem toOrderHom_eq_coe (f : α →𝒄 β) : f.1 = f := rfl
@[simp] theorem coe_mk (f : α →o β) (hf : Continuous f) : ⇑(mk f hf) = f := rfl
@[simp] theorem coe_toOrderHom (f : α →𝒄 β) : ⇑f.1 = f := rfl
-/-- See Note [custom simps projection]. We specify this explicitly because we don't have a FunLike
+/-- See Note [custom simps projection]. We specify this explicitly because we don't have a DFunLike
instance.
-/
def Simps.apply (h : α →𝒄 β) : α → β :=
@@ -652,7 +652,7 @@ def Simps.apply (h : α →𝒄 β) : α → β :=
initialize_simps_projections ContinuousHom (toFun → apply)
theorem congr_fun {f g : α →𝒄 β} (h : f = g) (x : α) : f x = g x :=
- FunLike.congr_fun h x
+ DFunLike.congr_fun h x
#align omega_complete_partial_order.continuous_hom.congr_fun OmegaCompletePartialOrder.ContinuousHom.congr_fun
theorem congr_arg (f : α →𝒄 β) {x y : α} (h : x = y) : f x = f y :=
@@ -752,11 +752,11 @@ def comp (f : β →𝒄 γ) (g : α →𝒄 β) : α →𝒄 γ := ⟨.comp f.1
#align omega_complete_partial_order.continuous_hom.comp_apply OmegaCompletePartialOrder.ContinuousHom.comp_apply
@[ext]
-protected theorem ext (f g : α →𝒄 β) (h : ∀ x, f x = g x) : f = g := FunLike.ext f g h
+protected theorem ext (f g : α →𝒄 β) (h : ∀ x, f x = g x) : f = g := DFunLike.ext f g h
#align omega_complete_partial_order.continuous_hom.ext OmegaCompletePartialOrder.ContinuousHom.ext
protected theorem coe_inj (f g : α →𝒄 β) (h : (f : α → β) = g) : f = g :=
- FunLike.ext' h
+ DFunLike.ext' h
#align omega_complete_partial_order.continuous_hom.coe_inj OmegaCompletePartialOrder.ContinuousHom.coe_inj
@[simp]
$
with <|
(#9319)
See Zulip thread for the discussion.
@@ -568,8 +568,9 @@ theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g
refine' fun c => eq_of_forall_ge_iff fun z => _
simp only [inf_le_iff, hf c, hg c, ωSup_le_iff, ← forall_or_left, ← forall_or_right,
Chain.map_coe, OrderHom.coe_inf, ge_iff_le, Pi.inf_apply, Function.comp]
- exact ⟨λ h _ => h _ _, λ h i j => (h (max j i)).imp (le_trans $ f.mono $ c.mono $ le_max_left _ _)
- (le_trans $ g.mono $ c.mono $ le_max_right _ _)⟩
+ exact ⟨fun h _ ↦ h _ _, fun h i j ↦
+ (h (max j i)).imp (le_trans <| f.mono <| c.mono <| le_max_left _ _)
+ (le_trans <| g.mono <| c.mono <| le_max_right _ _)⟩
#align complete_lattice.inf_continuous CompleteLattice.inf_continuous
theorem inf_continuous' {f g : α → β} (hf : Continuous' f) (hg : Continuous' g) :
@@ -822,7 +822,7 @@ theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
of the functions in the `ω`-chain. -/
@[simps!]
protected def ωSup (c : Chain (α →𝒄 β)) : α →𝒄 β :=
- .mk (ωSup <| c.map toMono) <| fun c' ↦ by
+ .mk (ωSup <| c.map toMono) fun c' ↦ by
apply eq_of_forall_ge_iff; intro z
simp only [ωSup_le_iff, (c _).continuous, Chain.map_coe, OrderHom.apply_coe, toMono_coe,
OrderHom.omegaCompletePartialOrder_ωSup_coe, forall_forall_merge, OrderHomClass.coe_coe,
cases'
(#9171)
I literally went through and regex'd some uses of cases'
, replacing them with rcases
; this is meant to be a low effort PR as I hope that tools can do this in the future.
rcases
is an easier replacement than cases
, though with better tools we could in future do a second pass converting simple rcases
added here (and existing ones) to cases
.
@@ -357,7 +357,7 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
cases' ha with i ha; replace ha := ha.symm
cases' hb with j hb; replace hb := hb.symm
rw [eq_some_iff] at ha hb
- cases' le_total i j with hij hji
+ rcases le_total i j with hij | hji
· have := c.monotone hij _ ha; apply mem_unique this hb
· have := c.monotone hji _ hb; apply Eq.symm; apply mem_unique this ha
--Porting note: Old proof
@@ -566,7 +566,7 @@ variable {α β : Type*} [OmegaCompletePartialOrder α] [CompleteLinearOrder β]
theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊓ g) := by
refine' fun c => eq_of_forall_ge_iff fun z => _
- simp only [inf_le_iff, hf c, hg c, ωSup_le_iff, ←forall_or_left, ←forall_or_right,
+ simp only [inf_le_iff, hf c, hg c, ωSup_le_iff, ← forall_or_left, ← forall_or_right,
Chain.map_coe, OrderHom.coe_inf, ge_iff_le, Pi.inf_apply, Function.comp]
exact ⟨λ h _ => h _ _, λ h i j => (h (max j i)).imp (le_trans $ f.mono $ c.mono $ le_max_left _ _)
(le_trans $ g.mono $ c.mono $ le_max_right _ _)⟩
Use .asFn
and .lemmasOnly
as simps
configuration options.
For reference, these are defined here:
@@ -116,7 +116,7 @@ lemma directed : Directed (· ≤ ·) c := directedOn_range.2 c.isChain_range.di
/-- `map` function for `Chain` -/
-- Porting note: `simps` doesn't work with type synonyms
--- @[simps! (config := { fullyApplied := false })]
+-- @[simps! (config := .asFn)]
def map : Chain β :=
f.comp c
#align omega_complete_partial_order.chain.map OmegaCompletePartialOrder.Chain.map
Removes nonterminal simps on lines looking like simp [...]
@@ -413,7 +413,7 @@ noncomputable instance omegaCompletePartialOrder :
section Inst
theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈ c := by
- simp [OmegaCompletePartialOrder.ωSup, Part.ωSup]
+ simp only [ωSup, Part.ωSup]
constructor
· split_ifs with h
swap
Two pairs of the form foo
and foo'
, where foo'
is the simp lemma (and hence used in many simp only
s) and foo
is not used at all.
Swap the primes, so that when it is time (now!) to upstream the lemma we actually use, it doesn't need to have a prime...
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -239,17 +239,17 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
lemma isLUB_range_ωSup (c : Chain α) : IsLUB (Set.range c) (ωSup c) := by
constructor
- · simp only [upperBounds, Set.mem_range, forall_exists_index, forall_apply_eq_imp_iff',
+ · simp only [upperBounds, Set.mem_range, forall_exists_index, forall_apply_eq_imp_iff,
Set.mem_setOf_eq]
exact fun a ↦ le_ωSup c a
· simp only [lowerBounds, upperBounds, Set.mem_range, forall_exists_index,
- forall_apply_eq_imp_iff', Set.mem_setOf_eq]
+ forall_apply_eq_imp_iff, Set.mem_setOf_eq]
exact fun ⦃a⦄ a_1 ↦ ωSup_le c a a_1
lemma ωSup_eq_of_isLUB {c : Chain α} {a : α} (h : IsLUB (Set.range c) a) : a = ωSup c := by
rw [le_antisymm_iff]
simp only [IsLUB, IsLeast, upperBounds, lowerBounds, Set.mem_range, forall_exists_index,
- forall_apply_eq_imp_iff', Set.mem_setOf_eq] at h
+ forall_apply_eq_imp_iff, Set.mem_setOf_eq] at h
constructor
· apply h.2
exact fun a ↦ le_ωSup c a
@@ -237,7 +237,7 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
exact ωSup_le _ _ ‹_›
#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iff
-lemma IsLUB_range_ωSup (c : Chain α) : IsLUB (Set.range c) (ωSup c) := by
+lemma isLUB_range_ωSup (c : Chain α) : IsLUB (Set.range c) (ωSup c) := by
constructor
· simp only [upperBounds, Set.mem_range, forall_exists_index, forall_apply_eq_imp_iff',
Set.mem_setOf_eq]
@@ -246,7 +246,7 @@ lemma IsLUB_range_ωSup (c : Chain α) : IsLUB (Set.range c) (ωSup c) := by
forall_apply_eq_imp_iff', Set.mem_setOf_eq]
exact fun ⦃a⦄ a_1 ↦ ωSup_le c a a_1
-lemma ωSup_eq_of_IsLUB {c : Chain α} {a : α} (h : IsLUB (Set.range c) a) : a = ωSup c := by
+lemma ωSup_eq_of_isLUB {c : Chain α} {a : α} (h : IsLUB (Set.range c) a) : a = ωSup c := by
rw [le_antisymm_iff]
simp only [IsLUB, IsLeast, upperBounds, lowerBounds, Set.mem_range, forall_exists_index,
forall_apply_eq_imp_iff', Set.mem_setOf_eq] at h
@@ -287,17 +287,17 @@ def Continuous' (f : α → β) : Prop :=
∃ hf : Monotone f, Continuous ⟨f, hf⟩
#align omega_complete_partial_order.continuous' OmegaCompletePartialOrder.Continuous'
-lemma IsLUB_of_ScottContinuous {c : Chain α} {f : α → β} (hf : ScottContinuous f) :
+lemma isLUB_of_scottContinuous {c : Chain α} {f : α → β} (hf : ScottContinuous f) :
IsLUB (Set.range (Chain.map c ⟨f, (ScottContinuous.monotone hf)⟩)) (f (ωSup c)) := by
simp only [map_coe, OrderHom.coe_mk]
rw [(Set.range_comp f ↑c)]
- exact hf (Set.range_nonempty ↑c) (IsChain.directedOn (isChain_range c)) (IsLUB_range_ωSup c)
+ exact hf (Set.range_nonempty ↑c) (IsChain.directedOn (isChain_range c)) (isLUB_range_ωSup c)
lemma ScottContinuous.continuous' {f : α → β} (hf : ScottContinuous f) : Continuous' f := by
constructor
- · intro c
- rw [← (ωSup_eq_of_IsLUB (IsLUB_of_ScottContinuous hf))]
- simp only [OrderHom.coe_mk]
+ intro c
+ rw [← (ωSup_eq_of_isLUB (isLUB_of_scottContinuous hf))]
+ simp only [OrderHom.coe_mk]
theorem Continuous'.to_monotone {f : α → β} (hf : Continuous' f) : Monotone f :=
hf.fst
In https://github.com/leanprover-community/mathlib/pull/18517 we introduced the notion of a Scott Continuous function between preorders. This PR shows that a Scott Continuous function between OmegaCompletePartialOrders is necessarily OmegaCompletePartialOrder.Continuous'
.
Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com> Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com>
@@ -237,6 +237,25 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
exact ωSup_le _ _ ‹_›
#align omega_complete_partial_order.ωSup_le_iff OmegaCompletePartialOrder.ωSup_le_iff
+lemma IsLUB_range_ωSup (c : Chain α) : IsLUB (Set.range c) (ωSup c) := by
+ constructor
+ · simp only [upperBounds, Set.mem_range, forall_exists_index, forall_apply_eq_imp_iff',
+ Set.mem_setOf_eq]
+ exact fun a ↦ le_ωSup c a
+ · simp only [lowerBounds, upperBounds, Set.mem_range, forall_exists_index,
+ forall_apply_eq_imp_iff', Set.mem_setOf_eq]
+ exact fun ⦃a⦄ a_1 ↦ ωSup_le c a a_1
+
+lemma ωSup_eq_of_IsLUB {c : Chain α} {a : α} (h : IsLUB (Set.range c) a) : a = ωSup c := by
+ rw [le_antisymm_iff]
+ simp only [IsLUB, IsLeast, upperBounds, lowerBounds, Set.mem_range, forall_exists_index,
+ forall_apply_eq_imp_iff', Set.mem_setOf_eq] at h
+ constructor
+ · apply h.2
+ exact fun a ↦ le_ωSup c a
+ · rw [ωSup_le_iff]
+ apply h.1
+
/-- A subset `p : α → Prop` of the type closed under `ωSup` induces an
`OmegaCompletePartialOrder` on the subtype `{a : α // p a}`. -/
def subtype {α : Type*} [OmegaCompletePartialOrder α] (p : α → Prop)
@@ -268,6 +287,18 @@ def Continuous' (f : α → β) : Prop :=
∃ hf : Monotone f, Continuous ⟨f, hf⟩
#align omega_complete_partial_order.continuous' OmegaCompletePartialOrder.Continuous'
+lemma IsLUB_of_ScottContinuous {c : Chain α} {f : α → β} (hf : ScottContinuous f) :
+ IsLUB (Set.range (Chain.map c ⟨f, (ScottContinuous.monotone hf)⟩)) (f (ωSup c)) := by
+ simp only [map_coe, OrderHom.coe_mk]
+ rw [(Set.range_comp f ↑c)]
+ exact hf (Set.range_nonempty ↑c) (IsChain.directedOn (isChain_range c)) (IsLUB_range_ωSup c)
+
+lemma ScottContinuous.continuous' {f : α → β} (hf : ScottContinuous f) : Continuous' f := by
+ constructor
+ · intro c
+ rw [← (ωSup_eq_of_IsLUB (IsLUB_of_ScottContinuous hf))]
+ simp only [OrderHom.coe_mk]
+
theorem Continuous'.to_monotone {f : α → β} (hf : Continuous' f) : Monotone f :=
hf.fst
#align omega_complete_partial_order.continuous'.to_monotone OmegaCompletePartialOrder.Continuous'.to_monotone
This PR considers complete partial orders (sometimes called directedly complete partial orders). These are partial orders for which every directed set has a least upper bound. Complete partial orders are a natural framework for studying approximations and fixed point theorems (Davey & Priestley, Chapter 8).
Co-authored-by: Yaël Dillies <yael.dillies@gmail.com> Co-authored-by: Christopher Hoskin <mans0954@users.noreply.github.com> Co-authored-by: Christopher Hoskin <christopher.hoskin@overleaf.com>
@@ -5,6 +5,7 @@ Authors: Simon Hudon
-/
import Mathlib.Control.Monad.Basic
import Mathlib.Data.Part
+import Mathlib.Order.Chain
import Mathlib.Order.Hom.Order
import Mathlib.Data.Nat.Order.Basic
@@ -109,6 +110,10 @@ variable (g : β →o γ)
instance : LE (Chain α) where le x y := ∀ i, ∃ j, x i ≤ y j
+lemma isChain_range : IsChain (· ≤ ·) (Set.range c) := Monotone.isChain_range (OrderHomClass.mono c)
+
+lemma directed : Directed (· ≤ ·) c := directedOn_range.2 c.isChain_range.directedOn
+
/-- `map` function for `Chain` -/
-- Porting note: `simps` doesn't work with type synonyms
-- @[simps! (config := { fullyApplied := false })]
The mem_map
lemmas were inconsistently either not simp
lemmas at all, simp
lemmas, or simp
lemmas with a lowered priority.
This PR makes them uniformly low priority simp lemmas, and adds a few simp attributes to "better" simp lemmas instead. (However these lemmas are themselves quite inconsistent across different algebraic structures, and I haven't attempted to add missing ones.)
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -129,6 +129,7 @@ theorem exists_of_mem_map {b : β} : b ∈ c.map f → ∃ a, a ∈ c ∧ f a =
fun ⟨i, h⟩ => ⟨c i, ⟨i, rfl⟩, h.symm⟩
#align omega_complete_partial_order.chain.exists_of_mem_map OmegaCompletePartialOrder.Chain.exists_of_mem_map
+@[simp]
theorem mem_map_iff {b : β} : b ∈ c.map f ↔ ∃ a, a ∈ c ∧ f a = b :=
⟨exists_of_mem_map _, fun h => by
rcases h with ⟨w, h, h'⟩
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -63,7 +63,7 @@ open Classical
namespace OrderHom
-variable {α : Type _} {β : Type _} {γ : Type _}
+variable {α : Type*} {β : Type*} {γ : Type*}
variable [Preorder α] [Preorder β] [Preorder γ]
/-- `Part.bind` as a monotone function -/
@@ -91,7 +91,7 @@ def Chain (α : Type u) [Preorder α] :=
namespace Chain
-variable {α : Type u} {β : Type v} {γ : Type _}
+variable {α : Type u} {β : Type v} {γ : Type*}
variable [Preorder α] [Preorder β] [Preorder γ]
instance : OrderHomClass (Chain α) ℕ α := inferInstanceAs <| OrderHomClass (ℕ →o α) ℕ α
@@ -175,7 +175,7 @@ call `ωSup`). In this sense, it is strictly weaker than join complete
semi-lattices as only ω-sized totally ordered sets have a supremum.
See the definition on page 114 of [gunter1992]. -/
-class OmegaCompletePartialOrder (α : Type _) extends PartialOrder α where
+class OmegaCompletePartialOrder (α : Type*) extends PartialOrder α where
/-- The supremum of an increasing sequence -/
ωSup : Chain α → α
/-- `ωSup` is an upper bound of the increasing sequence -/
@@ -186,7 +186,7 @@ class OmegaCompletePartialOrder (α : Type _) extends PartialOrder α where
namespace OmegaCompletePartialOrder
-variable {α : Type u} {β : Type v} {γ : Type _}
+variable {α : Type u} {β : Type v} {γ : Type*}
variable [OmegaCompletePartialOrder α]
@@ -233,7 +233,7 @@ theorem ωSup_le_iff (c : Chain α) (x : α) : ωSup c ≤ x ↔ ∀ i, c i ≤
/-- A subset `p : α → Prop` of the type closed under `ωSup` induces an
`OmegaCompletePartialOrder` on the subtype `{a : α // p a}`. -/
-def subtype {α : Type _} [OmegaCompletePartialOrder α] (p : α → Prop)
+def subtype {α : Type*} [OmegaCompletePartialOrder α] (p : α → Prop)
(hp : ∀ c : Chain α, (∀ i ∈ c, p i) → p (ωSup c)) : OmegaCompletePartialOrder (Subtype p) :=
OmegaCompletePartialOrder.lift (OrderHom.Subtype.val p)
(fun c => ⟨ωSup _, hp (c.map (OrderHom.Subtype.val p)) fun _ ⟨n, q⟩ => q.symm ▸ (c n).2⟩)
@@ -312,7 +312,7 @@ end OmegaCompletePartialOrder
namespace Part
-variable {α : Type u} {β : Type v} {γ : Type _}
+variable {α : Type u} {β : Type v} {γ : Type*}
open OmegaCompletePartialOrder
@@ -400,7 +400,7 @@ end Part
namespace Pi
-variable {α : Type _} {β : α → Type _} {γ : Type _}
+variable {α : Type*} {β : α → Type*} {γ : Type*}
open OmegaCompletePartialOrder OmegaCompletePartialOrder.Chain
@@ -437,7 +437,7 @@ namespace Prod
open OmegaCompletePartialOrder
-variable {α : Type _} {β : Type _} {γ : Type _}
+variable {α : Type*} {β : Type*} {γ : Type*}
variable [OmegaCompletePartialOrder α]
variable [OmegaCompletePartialOrder β]
variable [OmegaCompletePartialOrder γ]
@@ -489,7 +489,7 @@ theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f)
exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuous
-theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
+theorem iSup_continuous {ι : Sort*} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
sSup_continuous _ <| Set.forall_range_iff.2 h
#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
@@ -524,7 +524,7 @@ end CompleteLattice
namespace CompleteLattice
-variable {α β : Type _} [OmegaCompletePartialOrder α] [CompleteLinearOrder β]
+variable {α β : Type*} [OmegaCompletePartialOrder α] [CompleteLinearOrder β]
theorem inf_continuous (f g : α →o β) (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊓ g) := by
@@ -544,7 +544,7 @@ end CompleteLattice
namespace OmegaCompletePartialOrder
-variable {α : Type u} {α' : Type _} {β : Type v} {β' : Type _} {γ : Type _} {φ : Type _}
+variable {α : Type u} {α' : Type*} {β : Type v} {β' : Type*} {γ : Type*} {φ : Type*}
variable [OmegaCompletePartialOrder α] [OmegaCompletePartialOrder β]
variable [OmegaCompletePartialOrder γ] [OmegaCompletePartialOrder φ]
@@ -842,7 +842,7 @@ theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
/-- A family of continuous functions yields a continuous family of functions. -/
@[simps]
-def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ where
+def flip {α : Type*} (f : α → β →𝒄 γ) : β →𝒄 α → γ where
toFun x y := f y x
monotone' x y h a := (f a).monotone h
cont := by intro _; ext x; change f _ _ = _; rw [(f _).continuous]; rfl
FunLike
for OrderHom
(#5805)
Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com> Co-authored-by: Oliver Nash <github@olivernash.org>
@@ -94,7 +94,8 @@ namespace Chain
variable {α : Type u} {β : Type v} {γ : Type _}
variable [Preorder α] [Preorder β] [Preorder γ]
-instance : CoeFun (Chain α) fun _ => ℕ → α := ⟨OrderHom.toFun⟩
+instance : OrderHomClass (Chain α) ℕ α := inferInstanceAs <| OrderHomClass (ℕ →o α) ℕ α
+instance : CoeFun (Chain α) fun _ => ℕ → α := ⟨FunLike.coe⟩
instance [Inhabited α] : Inhabited (Chain α) :=
⟨⟨default, fun _ _ _ => le_rfl⟩⟩
@@ -109,10 +110,13 @@ variable (g : β →o γ)
instance : LE (Chain α) where le x y := ∀ i, ∃ j, x i ≤ y j
/-- `map` function for `Chain` -/
-@[simps! (config := { fullyApplied := false })]
+-- Porting note: `simps` doesn't work with type synonyms
+-- @[simps! (config := { fullyApplied := false })]
def map : Chain β :=
f.comp c
#align omega_complete_partial_order.chain.map OmegaCompletePartialOrder.Chain.map
+
+@[simp] theorem map_coe : ⇑(map c f) = f ∘ c := rfl
#align omega_complete_partial_order.chain.map_coe OmegaCompletePartialOrder.Chain.map_coe
variable {f}
@@ -146,11 +150,15 @@ theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g :=
fun i => by simp [mem_map_iff]; intros; exists i; apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
-/-- `Chain.zip` pairs up the elements of two chains that have the same index -/
-@[simps!]
+/-- `OmegaCompletePartialOrder.Chain.zip` pairs up the elements of two chains
+that have the same index. -/
+-- Porting note: `simps` doesn't work with type synonyms
+-- @[simps!]
def zip (c₀ : Chain α) (c₁ : Chain β) : Chain (α × β) :=
OrderHom.prod c₀ c₁
#align omega_complete_partial_order.chain.zip OmegaCompletePartialOrder.Chain.zip
+
+@[simp] theorem zip_coe (c₀ : Chain α) (c₁ : Chain β) (n : ℕ) : c₀.zip c₁ n = (c₀ n, c₁ n) := rfl
#align omega_complete_partial_order.chain.zip_coe OmegaCompletePartialOrder.Chain.zip_coe
end Chain
@@ -467,8 +475,8 @@ of arbitrary suprema. -/
instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α where
ωSup c := ⨆ i, c i
ωSup_le := fun ⟨c, _⟩ s hs => by
- simp only [iSup_le_iff, OrderHom.coe_fun_mk] at hs ⊢; intro i; apply hs i
- le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk]; apply le_iSup_of_le i; rfl
+ simp only [iSup_le_iff, OrderHom.coe_mk] at hs ⊢; intro i; apply hs i
+ le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_mk]; apply le_iSup_of_le i; rfl
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
@@ -569,20 +577,20 @@ if for every chain `c : chain α`, `f (⊔ i, c i) = ⊔ i, f (c i)`.
This is just the bundled version of `OrderHom.continuous`. -/
structure ContinuousHom extends OrderHom α β where
/-- The underlying function of a `ContinuousHom` is continuous, i.e. it preserves `ωSup` -/
- cont : Continuous (OrderHom.mk toFun monotone')
+ cont : Continuous toOrderHom
#align omega_complete_partial_order.continuous_hom OmegaCompletePartialOrder.ContinuousHom
attribute [nolint docBlame] ContinuousHom.toOrderHom
-@[inherit_doc]
-infixr:25 " →𝒄 " => ContinuousHom
--- Input: \r\MIc
+@[inherit_doc] infixr:25 " →𝒄 " => ContinuousHom -- Input: \r\MIc
-/-! todo: should we make this an OrderHomClass instead of a CoeFun? -/
-instance : CoeFun (α →𝒄 β) fun _ => α → β :=
- ⟨fun f => f.toOrderHom.toFun⟩
+instance : OrderHomClass (α →𝒄 β) α β where
+ coe f := f.toFun
+ coe_injective' := by rintro ⟨⟩ ⟨⟩ h; congr; exact FunLike.ext' h
+ map_rel f _ _ h := f.mono h
-instance : Coe (α →𝒄 β) (α →o β) where coe := ContinuousHom.toOrderHom
+-- Porting note: removed to avoid conflict with the generic instance
+-- instance : Coe (α →𝒄 β) (α →o β) where coe := ContinuousHom.toOrderHom
instance : PartialOrder (α →𝒄 β) :=
(PartialOrder.lift fun f => f.toOrderHom.toFun) <| by rintro ⟨⟨⟩⟩ ⟨⟨⟩⟩ h; congr
@@ -591,6 +599,12 @@ end
namespace ContinuousHom
+-- Not a `simp` lemma because in many cases projection is simpler than a generic coercion
+theorem toOrderHom_eq_coe (f : α →𝒄 β) : f.1 = f := rfl
+
+@[simp] theorem coe_mk (f : α →o β) (hf : Continuous f) : ⇑(mk f hf) = f := rfl
+@[simp] theorem coe_toOrderHom (f : α →𝒄 β) : ⇑f.1 = f := rfl
+
/-- See Note [custom simps projection]. We specify this explicitly because we don't have a FunLike
instance.
-/
@@ -600,7 +614,7 @@ def Simps.apply (h : α →𝒄 β) : α → β :=
initialize_simps_projections ContinuousHom (toFun → apply)
theorem congr_fun {f g : α →𝒄 β} (h : f = g) (x : α) : f x = g x :=
- congr_arg (fun h : α →𝒄 β => h x) h
+ FunLike.congr_fun h x
#align omega_complete_partial_order.continuous_hom.congr_fun OmegaCompletePartialOrder.ContinuousHom.congr_fun
theorem congr_arg (f : α →𝒄 β) {x y : α} (h : x = y) : f x = f y :=
@@ -676,75 +690,59 @@ theorem continuous (F : α →𝒄 β) (C : Chain α) : F (ωSup C) = ωSup (C.m
/-- Construct a continuous function from a bare function, a continuous function, and a proof that
they are equal. -/
-@[reducible] --Porting note: removes `simps` because it generated a bad lemma with variable as
---head symbol
-def ofFun (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β := by
- refine' { toOrderHom := { toFun := f.. }.. } <;> subst h <;> rcases g with ⟨⟨⟩⟩ <;> assumption
-#align omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.ofFun
-
-/-- Construct a continuous function from a monotone function with a proof of continuity. -/
--- Porting note: we now generate a `toOrderHom` lemma instead of an `apply` lemma with `simps`
-@[reducible, simps toOrderHom]
-def ofMono (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)) :
- α →𝒄 β where
- toFun := f
- monotone' := f.monotone
- cont := h
-#align omega_complete_partial_order.continuous_hom.of_mono OmegaCompletePartialOrder.ContinuousHom.ofMono
+-- Porting note: removed `@[reducible]`
+@[simps!]
+def copy (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β where
+ toOrderHom := g.1.copy f h
+ cont := by rw [OrderHom.copy_eq]; exact g.cont
+#align omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.copy
+#align omega_complete_partial_order.continuous_hom.of_fun_apply OmegaCompletePartialOrder.ContinuousHom.copy_apply
+
+-- Porting note: `of_mono` now defeq `mk`
+#align omega_complete_partial_order.continuous_hom.of_mono OmegaCompletePartialOrder.ContinuousHom.mk
/-- The identity as a continuous function. -/
@[simps!]
-def id : α →𝒄 α :=
- ofMono OrderHom.id continuous_id
+def id : α →𝒄 α := ⟨OrderHom.id, continuous_id⟩
#align omega_complete_partial_order.continuous_hom.id OmegaCompletePartialOrder.ContinuousHom.id
#align omega_complete_partial_order.continuous_hom.id_apply OmegaCompletePartialOrder.ContinuousHom.id_apply
/-- The composition of continuous functions. -/
@[simps!]
-def comp (f : β →𝒄 γ) (g : α →𝒄 β) : α →𝒄 γ :=
- ofMono (OrderHom.comp ↑f ↑g) (continuous_comp _ _ g.cont f.cont)
+def comp (f : β →𝒄 γ) (g : α →𝒄 β) : α →𝒄 γ := ⟨.comp f.1 g.1, continuous_comp _ _ g.cont f.cont⟩
#align omega_complete_partial_order.continuous_hom.comp OmegaCompletePartialOrder.ContinuousHom.comp
#align omega_complete_partial_order.continuous_hom.comp_apply OmegaCompletePartialOrder.ContinuousHom.comp_apply
@[ext]
-protected theorem ext (f g : α →𝒄 β) (h : ∀ x, f x = g x) : f = g := by
- cases f; cases g; congr; ext; apply h
+protected theorem ext (f g : α →𝒄 β) (h : ∀ x, f x = g x) : f = g := FunLike.ext f g h
#align omega_complete_partial_order.continuous_hom.ext OmegaCompletePartialOrder.ContinuousHom.ext
protected theorem coe_inj (f g : α →𝒄 β) (h : (f : α → β) = g) : f = g :=
- ContinuousHom.ext _ _ <| _root_.congr_fun h
+ FunLike.ext' h
#align omega_complete_partial_order.continuous_hom.coe_inj OmegaCompletePartialOrder.ContinuousHom.coe_inj
@[simp]
-theorem comp_id (f : β →𝒄 γ) : f.comp id = f := by ext; rfl
+theorem comp_id (f : β →𝒄 γ) : f.comp id = f := rfl
#align omega_complete_partial_order.continuous_hom.comp_id OmegaCompletePartialOrder.ContinuousHom.comp_id
@[simp]
-theorem id_comp (f : β →𝒄 γ) : id.comp f = f := by ext; rfl
+theorem id_comp (f : β →𝒄 γ) : id.comp f = f := rfl
#align omega_complete_partial_order.continuous_hom.id_comp OmegaCompletePartialOrder.ContinuousHom.id_comp
@[simp]
theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) : f.comp (g.comp h) = (f.comp g).comp h :=
- by ext; rfl
+ rfl
#align omega_complete_partial_order.continuous_hom.comp_assoc OmegaCompletePartialOrder.ContinuousHom.comp_assoc
---Porting note: removed because it is a syntactic tautology. May want it later if we use `FunLike`
--- @[simp]
--- theorem coe_apply (a : α) (f : α →𝒄 β) : (f : α →o β) a = (f : α → β) a :=
--- rfl
--- #align
--- omega_complete_partial_order.continuous_hom.coe_apply
--- OmegaCompletePartialOrder.ContinuousHom.coe_apply
-#noalign omega_complete_partial_order.continuous_hom.coe_apply
+@[simp]
+theorem coe_apply (a : α) (f : α →𝒄 β) : (f : α →o β) a = f a :=
+ rfl
+#align omega_complete_partial_order.continuous_hom.coe_apply OmegaCompletePartialOrder.ContinuousHom.coe_apply
/-- `Function.const` is a continuous function. -/
-def const (x : β) : α →𝒄 β :=
- ofMono (OrderHom.const _ x) (continuous_const x)
+@[simps!]
+def const (x : β) : α →𝒄 β := ⟨.const _ x, continuous_const x⟩
#align omega_complete_partial_order.continuous_hom.const OmegaCompletePartialOrder.ContinuousHom.const
-
-@[simp]
-theorem const_apply (f : β) (a : α) : const f a = f :=
- rfl
#align omega_complete_partial_order.continuous_hom.const_apply OmegaCompletePartialOrder.ContinuousHom.const_apply
instance [Inhabited β] : Inhabited (α →𝒄 β) :=
@@ -787,13 +785,11 @@ theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
of the functions in the `ω`-chain. -/
@[simps!]
protected def ωSup (c : Chain (α →𝒄 β)) : α →𝒄 β :=
- ContinuousHom.ofMono (ωSup <| c.map toMono)
- (by
- intro c'
- apply eq_of_forall_ge_iff; intro z
- simp only [ωSup_le_iff, (c _).continuous, Chain.map_coe, OrderHom.apply_coe, toMono_coe,
- OrderHom.omegaCompletePartialOrder_ωSup_coe, forall_forall_merge,
- forall_forall_merge', (· ∘ ·), Function.eval])
+ .mk (ωSup <| c.map toMono) <| fun c' ↦ by
+ apply eq_of_forall_ge_iff; intro z
+ simp only [ωSup_le_iff, (c _).continuous, Chain.map_coe, OrderHom.apply_coe, toMono_coe,
+ OrderHom.omegaCompletePartialOrder_ωSup_coe, forall_forall_merge, OrderHomClass.coe_coe,
+ forall_forall_merge', (· ∘ ·), Function.eval]
#align omega_complete_partial_order.continuous_hom.ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup
#align omega_complete_partial_order.continuous_hom.ωSup_apply OmegaCompletePartialOrder.ContinuousHom.ωSup_apply
@@ -854,31 +850,31 @@ def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ where
#align omega_complete_partial_order.continuous_hom.flip_apply OmegaCompletePartialOrder.ContinuousHom.flip_apply
/-- `Part.bind` as a continuous function. -/
-@[simps!] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps! apply] --Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
- ofMono (OrderHom.bind f g.toOrderHom) fun c => by
- rw [OrderHom.bind, ← OrderHom.bind, ωSup_bind, ← f.continuous, ← g.continuous]
+ .mk (OrderHom.bind f g.toOrderHom) fun c => by
+ rw [ωSup_bind, ← f.continuous, g.toOrderHom_eq_coe, ← g.continuous]
rfl
#align omega_complete_partial_order.continuous_hom.bind OmegaCompletePartialOrder.ContinuousHom.bind
+#align omega_complete_partial_order.continuous_hom.bind_apply OmegaCompletePartialOrder.ContinuousHom.bind_apply
/-- `Part.map` as a continuous function. -/
-@[simps] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps! apply] --Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
- ofFun (fun x => f <$> g x) (bind g (const (pure ∘ f))) <| by
- ext
- simp only [map_eq_bind_pure_comp, bind, OrderHom.bind_coe, const_apply,
- OrderHom.const_coe_coe]
+ .copy (fun x => f <$> g x) (bind g (const (pure ∘ f))) <| by
+ ext1
+ simp only [map_eq_bind_pure_comp, bind, coe_mk, OrderHom.bind_coe, coe_apply, coe_toOrderHom,
+ const_apply]
#align omega_complete_partial_order.continuous_hom.map OmegaCompletePartialOrder.ContinuousHom.map
#align omega_complete_partial_order.continuous_hom.map_apply OmegaCompletePartialOrder.ContinuousHom.map_apply
/-- `Part.seq` as a continuous function. -/
-@[simps] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps! apply] --Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def seq {β γ : Type v} (f : α →𝒄 Part (β → γ)) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
- ofFun (fun x => f x <*> g x) (bind f <| flip <| _root_.flip map g) <| by
- ext
- simp only [seq_eq_bind_map, flip, Part.bind_eq_bind, map_apply, Part.mem_bind_iff,
- bind, OrderHom.bind_coe, flip_apply]
- rfl
+ .copy (fun x => f x <*> g x) (bind f <| flip <| _root_.flip map g) <| by
+ ext
+ simp only [seq_eq_bind_map, Part.bind_eq_bind, Part.mem_bind_iff, flip_apply, _root_.flip,
+ map_apply, bind_apply]
#align omega_complete_partial_order.continuous_hom.seq OmegaCompletePartialOrder.ContinuousHom.seq
#align omega_complete_partial_order.continuous_hom.seq_apply OmegaCompletePartialOrder.ContinuousHom.seq_apply
@@ -146,7 +146,7 @@ theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g :=
fun i => by simp [mem_map_iff]; intros; exists i; apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
-/-- `chain.zip` pairs up the elements of two chains that have the same index -/
+/-- `Chain.zip` pairs up the elements of two chains that have the same index -/
@[simps!]
def zip (c₀ : Chain α) (c₁ : Chain β) : Chain (α × β) :=
OrderHom.prod c₀ c₁
@@ -242,7 +242,7 @@ variable [OmegaCompletePartialOrder γ]
/-- A monotone function `f : α →o β` is continuous if it distributes over ωSup.
In order to distinguish it from the (more commonly used) continuity from topology
-(see topology/basic.lean), the present definition is often referred to as
+(see `Mathlib/Topology/Basic.lean`), the present definition is often referred to as
"Scott-continuity" (referring to Dana Scott). It corresponds to continuity
in Scott topological spaces (not defined here). -/
def Continuous (f : α →o β) : Prop :=
@@ -339,7 +339,7 @@ theorem ωSup_eq_none {c : Chain (Part α)} (h : ¬∃ a, some a ∈ c) : Part.
#align part.ωSup_eq_none Part.ωSup_eq_none
theorem mem_chain_of_mem_ωSup {c : Chain (Part α)} {a : α} (h : a ∈ Part.ωSup c) : some a ∈ c := by
- simp [Part.ωSup] at h; split_ifs at h with h_1
+ simp only [Part.ωSup] at h; split_ifs at h with h_1
· have h' := Classical.choose_spec h_1
rw [← eq_some_iff] at h
rw [← h]
@@ -375,7 +375,7 @@ theorem mem_ωSup (x : α) (c : Chain (Part α)) : x ∈ ωSup c ↔ some x ∈
rintro ⟨⟨⟩⟩
intro h'
have hh := Classical.choose_spec h
- simp at h'
+ simp only [mem_some_iff] at h'
subst x
exact hh
· intro h
@@ -663,10 +663,11 @@ theorem map_continuous' {β γ : Type v} (f : β → γ) (g : α → Part β) (h
theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α → Part β) (hf : Continuous' f)
(hg : Continuous' g) : Continuous' fun x => f x <*> g x := by
- simp only [seq_eq_bind_map]; apply bind_continuous' _ _ hf;
- apply Pi.OmegaCompletePartialOrder.flip₂_continuous';
- intro;
- apply map_continuous' _ _ hg
+ simp only [seq_eq_bind_map]
+ apply bind_continuous' _ _ hf
+ apply Pi.OmegaCompletePartialOrder.flip₂_continuous'
+ intro
+ apply map_continuous' _ _ hg
#align omega_complete_partial_order.continuous_hom.seq_continuous' OmegaCompletePartialOrder.ContinuousHom.seq_continuous'
theorem continuous (F : α →𝒄 β) (C : Chain α) : F (ωSup C) = ωSup (C.map F) :=
@@ -734,6 +735,7 @@ theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) :
-- #align
-- omega_complete_partial_order.continuous_hom.coe_apply
-- OmegaCompletePartialOrder.ContinuousHom.coe_apply
+#noalign omega_complete_partial_order.continuous_hom.coe_apply
/-- `Function.const` is a continuous function. -/
def const (x : β) : α →𝒄 β :=
@@ -844,8 +846,7 @@ theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
/-- A family of continuous functions yields a continuous family of functions. -/
@[simps]
-def flip {α : Type _} (f : α → β →𝒄 γ) :
- β →𝒄 α → γ where
+def flip {α : Type _} (f : α → β →𝒄 γ) : β →𝒄 α → γ where
toFun x y := f y x
monotone' x y h a := (f a).monotone h
cont := by intro _; ext x; change f _ _ = _; rw [(f _).continuous]; rfl
@@ -874,10 +875,10 @@ noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β)
@[simps] --Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def seq {β γ : Type v} (f : α →𝒄 Part (β → γ)) (g : α →𝒄 Part β) : α →𝒄 Part γ :=
ofFun (fun x => f x <*> g x) (bind f <| flip <| _root_.flip map g) <| by
- ext
- simp only [seq_eq_bind_map, flip, Part.bind_eq_bind, map_apply, Part.mem_bind_iff,
- bind, OrderHom.bind_coe, flip_apply]
- rfl
+ ext
+ simp only [seq_eq_bind_map, flip, Part.bind_eq_bind, map_apply, Part.mem_bind_iff,
+ bind, OrderHom.bind_coe, flip_apply]
+ rfl
#align omega_complete_partial_order.continuous_hom.seq OmegaCompletePartialOrder.ContinuousHom.seq
#align omega_complete_partial_order.continuous_hom.seq_apply OmegaCompletePartialOrder.ContinuousHom.seq_apply
@@ -2,17 +2,14 @@
Copyright (c) 2020 Simon Hudon. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon
-
-! This file was ported from Lean 3 source module order.omega_complete_partial_order
-! leanprover-community/mathlib commit 92ca63f0fb391a9ca5f22d2409a6080e786d99f7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Control.Monad.Basic
import Mathlib.Data.Part
import Mathlib.Order.Hom.Order
import Mathlib.Data.Nat.Order.Basic
+#align_import order.omega_complete_partial_order from "leanprover-community/mathlib"@"92ca63f0fb391a9ca5f22d2409a6080e786d99f7"
+
/-!
# Omega Complete Partial Orders
This PR is the result of running
find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;
which firstly replaces .
focusing dots with ·
and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.
@@ -316,8 +316,8 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
cases' hb with j hb; replace hb := hb.symm
rw [eq_some_iff] at ha hb
cases' le_total i j with hij hji
- . have := c.monotone hij _ ha; apply mem_unique this hb
- . have := c.monotone hji _ hb; apply Eq.symm; apply mem_unique this ha
+ · have := c.monotone hij _ ha; apply mem_unique this hb
+ · have := c.monotone hji _ hb; apply Eq.symm; apply mem_unique this ha
--Porting note: Old proof
-- wlog h : i ≤ j := le_total i j using a b i j, b a j i
-- rw [eq_some_iff] at ha hb
We disable the "relaxed" auto-implicit feature, so only single character identifiers become eligible as auto-implicits. See discussion on zulip and 2.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>
@@ -572,7 +572,7 @@ if for every chain `c : chain α`, `f (⊔ i, c i) = ⊔ i, f (c i)`.
This is just the bundled version of `OrderHom.continuous`. -/
structure ContinuousHom extends OrderHom α β where
/-- The underlying function of a `ContinuousHom` is continuous, i.e. it preserves `ωSup` -/
- cont : Continuous (OrderHom.mk toFun Monotone')
+ cont : Continuous (OrderHom.mk toFun monotone')
#align omega_complete_partial_order.continuous_hom OmegaCompletePartialOrder.ContinuousHom
attribute [nolint docBlame] ContinuousHom.toOrderHom
@@ -813,7 +813,7 @@ def apply : (α →𝒄 β) × α →𝒄 β where
dsimp
trans y.fst x.snd <;> [apply h.1; apply y.1.monotone h.2]
cont := by
- intro _ c
+ intro c
apply le_antisymm
· apply ωSup_le
intro i
@@ -851,7 +851,7 @@ def flip {α : Type _} (f : α → β →𝒄 γ) :
β →𝒄 α → γ where
toFun x y := f y x
monotone' x y h a := (f a).monotone h
- cont := by intro _ _; ext x; change f _ _ = _; rw [(f _).continuous]; rfl
+ cont := by intro _; ext x; change f _ _ = _; rw [(f _).continuous]; rfl
#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flip
#align omega_complete_partial_order.continuous_hom.flip_apply OmegaCompletePartialOrder.ContinuousHom.flip_apply
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -355,7 +355,7 @@ noncomputable instance omegaCompletePartialOrder :
ωSup := Part.ωSup
le_ωSup c i := by
intro x hx
- rw [← eq_some_iff] at hx⊢
+ rw [← eq_some_iff] at hx ⊢
rw [ωSup_eq_some, ← hx]
rw [← hx]
exact ⟨i, rfl⟩
@@ -185,7 +185,7 @@ variable {α : Type u} {β : Type v} {γ : Type _}
variable [OmegaCompletePartialOrder α]
-/-- Transfer a `OmegaCompletePartialOrder` on `β` to a `OmegaCompletePartialOrder` on `α`
+/-- Transfer an `OmegaCompletePartialOrder` on `β` to an `OmegaCompletePartialOrder` on `α`
using a strictly monotone function `f : β →o α`, a definition of ωSup and a proof that `f` is
continuous with regard to the provided `ωSup` and the ωCPO on `α`. -/
@[reducible]
@@ -581,7 +581,7 @@ attribute [nolint docBlame] ContinuousHom.toOrderHom
infixr:25 " →𝒄 " => ContinuousHom
-- Input: \r\MIc
-/-! todo: should we make this a OrderHomClass instead of a CoeFun? -/
+/-! todo: should we make this an OrderHomClass instead of a CoeFun? -/
instance : CoeFun (α →𝒄 β) fun _ => α → β :=
⟨fun f => f.toOrderHom.toFun⟩
fix-comments.py
on all files.@@ -324,7 +324,7 @@ theorem eq_of_chain {c : Chain (Part α)} {a b : α} (ha : some a ∈ c) (hb : s
-- have := c.monotone h _ ha; apply mem_unique this hb
#align part.eq_of_chain Part.eq_of_chain
-/-- The (noncomputable) `ωSup` definition for the `ω`-CPO structure on `part α`. -/
+/-- The (noncomputable) `ωSup` definition for the `ω`-CPO structure on `Part α`. -/
protected noncomputable def ωSup (c : Chain (Part α)) : Part α :=
if h : ∃ a, some a ∈ c then some (Classical.choose h) else none
#align part.ωSup Part.ωSup
The main breaking change is that tac <;> [t1, t2]
is now written tac <;> [t1; t2]
, to avoid clashing with tactics like cases
and use
that take comma-separated lists.
@@ -811,7 +811,7 @@ def apply : (α →𝒄 β) × α →𝒄 β where
toFun f := f.1 f.2
monotone' x y h := by
dsimp
- trans y.fst x.snd <;> [apply h.1, apply y.1.monotone h.2]
+ trans y.fst x.snd <;> [apply h.1; apply y.1.monotone h.2]
cont := by
intro _ c
apply le_antisymm
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -470,37 +470,37 @@ of arbitrary suprema. -/
instance (priority := 100) [CompleteLattice α] : OmegaCompletePartialOrder α where
ωSup c := ⨆ i, c i
ωSup_le := fun ⟨c, _⟩ s hs => by
- simp only [supᵢ_le_iff, OrderHom.coe_fun_mk] at hs ⊢; intro i; apply hs i
- le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk]; apply le_supᵢ_of_le i; rfl
+ simp only [iSup_le_iff, OrderHom.coe_fun_mk] at hs ⊢; intro i; apply hs i
+ le_ωSup := fun ⟨c, _⟩ i => by simp only [OrderHom.coe_fun_mk]; apply le_iSup_of_le i; rfl
variable {α} {β : Type v} [OmegaCompletePartialOrder α] [CompleteLattice β]
-theorem supₛ_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (supₛ s) := by
+theorem sSup_continuous (s : Set <| α →o β) (hs : ∀ f ∈ s, Continuous f) : Continuous (sSup s) := by
intro c
apply eq_of_forall_ge_iff
intro z
suffices (∀ f ∈ s, ∀ (n), (f : _) (c n) ≤ z) ↔ ∀ (n), ∀ f ∈ s, (f : _) (c n) ≤ z by
simpa (config := { contextual := true }) [ωSup_le_iff, hs _ _ _] using this
exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
-#align complete_lattice.Sup_continuous CompleteLattice.supₛ_continuous
+#align complete_lattice.Sup_continuous CompleteLattice.sSup_continuous
-theorem supᵢ_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
+theorem iSup_continuous {ι : Sort _} {f : ι → α →o β} (h : ∀ i, Continuous (f i)) :
Continuous (⨆ i, f i) :=
- supₛ_continuous _ <| Set.forall_range_iff.2 h
-#align complete_lattice.supr_continuous CompleteLattice.supᵢ_continuous
+ sSup_continuous _ <| Set.forall_range_iff.2 h
+#align complete_lattice.supr_continuous CompleteLattice.iSup_continuous
-theorem supₛ_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) :
- Continuous' (supₛ s) := by
+theorem sSup_continuous' (s : Set (α → β)) (hc : ∀ f ∈ s, Continuous' f) :
+ Continuous' (sSup s) := by
lift s to Set (α →o β) using fun f hf => (hc f hf).to_monotone
simp only [Set.ball_image_iff, continuous'_coe] at hc
- rw [supₛ_image]
+ rw [sSup_image]
norm_cast
- exact supᵢ_continuous fun f => supᵢ_continuous fun hf => hc f hf
-#align complete_lattice.Sup_continuous' CompleteLattice.supₛ_continuous'
+ exact iSup_continuous fun f => iSup_continuous fun hf => hc f hf
+#align complete_lattice.Sup_continuous' CompleteLattice.sSup_continuous'
theorem sup_continuous {f g : α →o β} (hf : Continuous f) (hg : Continuous g) :
Continuous (f ⊔ g) := by
- rw [← supₛ_pair]; apply supₛ_continuous
+ rw [← sSup_pair]; apply sSup_continuous
rintro f (rfl | rfl | _) <;> assumption
#align complete_lattice.sup_continuous CompleteLattice.sup_continuous
@@ -511,8 +511,8 @@ theorem top_continuous : Continuous (⊤ : α →o β) := by
#align complete_lattice.top_continuous CompleteLattice.top_continuous
theorem bot_continuous : Continuous (⊥ : α →o β) := by
- rw [← supₛ_empty]
- exact supₛ_continuous _ fun f hf => hf.elim
+ rw [← sSup_empty]
+ exact sSup_continuous _ fun f hf => hf.elim
#align complete_lattice.bot_continuous CompleteLattice.bot_continuous
end CompleteLattice
This PR fixes two things:
align
statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align
). This is often seen in the mathport output after ending calc
blocks.#align
statements. (This was needed for a script I wrote for #3630.)@@ -126,9 +126,7 @@ theorem mem_map (x : α) : x ∈ c → f x ∈ Chain.map c f :=
theorem exists_of_mem_map {b : β} : b ∈ c.map f → ∃ a, a ∈ c ∧ f a = b :=
fun ⟨i, h⟩ => ⟨c i, ⟨i, rfl⟩, h.symm⟩
-#align
- omega_complete_partial_order.chain.exists_of_mem_map
- OmegaCompletePartialOrder.Chain.exists_of_mem_map
+#align omega_complete_partial_order.chain.exists_of_mem_map OmegaCompletePartialOrder.Chain.exists_of_mem_map
theorem mem_map_iff {b : β} : b ∈ c.map f ↔ ∃ a, a ∈ c ∧ f a = b :=
⟨exists_of_mem_map _, fun h => by
@@ -261,28 +259,20 @@ def Continuous' (f : α → β) : Prop :=
theorem Continuous'.to_monotone {f : α → β} (hf : Continuous' f) : Monotone f :=
hf.fst
-#align
- omega_complete_partial_order.continuous'.to_monotone
- OmegaCompletePartialOrder.Continuous'.to_monotone
+#align omega_complete_partial_order.continuous'.to_monotone OmegaCompletePartialOrder.Continuous'.to_monotone
theorem Continuous.of_bundled (f : α → β) (hf : Monotone f) (hf' : Continuous ⟨f, hf⟩) :
Continuous' f :=
⟨hf, hf'⟩
-#align
- omega_complete_partial_order.continuous.of_bundled
- OmegaCompletePartialOrder.Continuous.of_bundled
+#align omega_complete_partial_order.continuous.of_bundled OmegaCompletePartialOrder.Continuous.of_bundled
theorem Continuous.of_bundled' (f : α →o β) (hf' : Continuous f) : Continuous' f :=
⟨f.mono, hf'⟩
-#align
- omega_complete_partial_order.continuous.of_bundled'
- OmegaCompletePartialOrder.Continuous.of_bundled'
+#align omega_complete_partial_order.continuous.of_bundled' OmegaCompletePartialOrder.Continuous.of_bundled'
theorem Continuous'.to_bundled (f : α → β) (hf : Continuous' f) : Continuous ⟨f, hf.to_monotone⟩ :=
hf.snd
-#align
- omega_complete_partial_order.continuous'.to_bundled
- OmegaCompletePartialOrder.Continuous'.to_bundled
+#align omega_complete_partial_order.continuous'.to_bundled OmegaCompletePartialOrder.Continuous'.to_bundled
@[simp, norm_cast]
theorem continuous'_coe : ∀ {f : α →o β}, Continuous' f ↔ Continuous f
@@ -426,15 +416,13 @@ variable [OmegaCompletePartialOrder γ]
theorem flip₁_continuous' (f : ∀ x : α, γ → β x) (a : α) (hf : Continuous' fun x y => f y x) :
Continuous' (f a) :=
Continuous.of_bundled _ (fun _ _ h => hf.to_monotone h a) fun c => congr_fun (hf.to_bundled _ c) a
-#align
- pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'
+#align pi.omega_complete_partial_order.flip₁_continuous' Pi.OmegaCompletePartialOrder.flip₁_continuous'
theorem flip₂_continuous' (f : γ → ∀ x, β x) (hf : ∀ x, Continuous' fun g => f g x) :
Continuous' f :=
Continuous.of_bundled _ (fun x y h a => (hf a).to_monotone h)
(by intro c; ext a; apply (hf a).to_bundled _ c)
-#align
- pi.omega_complete_partial_order.flip₂_continuous' Pi.OmegaCompletePartialOrder.flip₂_continuous'
+#align pi.omega_complete_partial_order.flip₂_continuous' Pi.OmegaCompletePartialOrder.flip₂_continuous'
end OmegaCompletePartialOrder
@@ -570,9 +558,7 @@ protected def ωSup (c : Chain (α →o β)) : α →o β where
@[simps! ωSup_coe]
instance omegaCompletePartialOrder : OmegaCompletePartialOrder (α →o β) :=
OmegaCompletePartialOrder.lift OrderHom.coeFnHom OrderHom.ωSup (fun _ _ h => h) fun _ => rfl
-#align
- omega_complete_partial_order.order_hom.omega_complete_partial_order
- OmegaCompletePartialOrder.OrderHom.omegaCompletePartialOrder
+#align omega_complete_partial_order.order_hom.omega_complete_partial_order OmegaCompletePartialOrder.OrderHom.omegaCompletePartialOrder
#align omega_complete_partial_order.order_hom.omega_complete_partial_order_ωSup_coe OmegaCompletePartialOrder.OrderHom.omegaCompletePartialOrder_ωSup_coe
end OrderHom
@@ -618,35 +604,25 @@ initialize_simps_projections ContinuousHom (toFun → apply)
theorem congr_fun {f g : α →𝒄 β} (h : f = g) (x : α) : f x = g x :=
congr_arg (fun h : α →𝒄 β => h x) h
-#align
- omega_complete_partial_order.continuous_hom.congr_fun
- OmegaCompletePartialOrder.ContinuousHom.congr_fun
+#align omega_complete_partial_order.continuous_hom.congr_fun OmegaCompletePartialOrder.ContinuousHom.congr_fun
theorem congr_arg (f : α →𝒄 β) {x y : α} (h : x = y) : f x = f y :=
_root_.congr_arg f h
-#align
- omega_complete_partial_order.continuous_hom.congr_arg
- OmegaCompletePartialOrder.ContinuousHom.congr_arg
+#align omega_complete_partial_order.continuous_hom.congr_arg OmegaCompletePartialOrder.ContinuousHom.congr_arg
protected theorem monotone (f : α →𝒄 β) : Monotone f :=
f.monotone'
-#align
- omega_complete_partial_order.continuous_hom.monotone
- OmegaCompletePartialOrder.ContinuousHom.monotone
+#align omega_complete_partial_order.continuous_hom.monotone OmegaCompletePartialOrder.ContinuousHom.monotone
@[mono]
theorem apply_mono {f g : α →𝒄 β} {x y : α} (h₁ : f ≤ g) (h₂ : x ≤ y) : f x ≤ g y :=
OrderHom.apply_mono (show (f : α →o β) ≤ g from h₁) h₂
-#align
- omega_complete_partial_order.continuous_hom.apply_mono
- OmegaCompletePartialOrder.ContinuousHom.apply_mono
+#align omega_complete_partial_order.continuous_hom.apply_mono OmegaCompletePartialOrder.ContinuousHom.apply_mono
theorem ite_continuous' {p : Prop} [hp : Decidable p] (f g : α → β) (hf : Continuous' f)
(hg : Continuous' g) : Continuous' fun x => if p then f x else g x := by
split_ifs <;> simp [*]
-#align
- omega_complete_partial_order.continuous_hom.ite_continuous'
- OmegaCompletePartialOrder.ContinuousHom.ite_continuous'
+#align omega_complete_partial_order.continuous_hom.ite_continuous' OmegaCompletePartialOrder.ContinuousHom.ite_continuous'
theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α →o β → Part γ) :
ωSup (c.map (f.bind g)) = ωSup (c.map f) >>= ωSup (c.map g) := by
@@ -674,25 +650,19 @@ theorem ωSup_bind {β γ : Type v} (c : Chain α) (f : α →o Part β) (g : α
apply h''' b _
· apply le_ωSup (c.map g) _ _ _ hb₁
· apply le_ωSup (c.map f) i _ hb₀
-#align
- omega_complete_partial_order.continuous_hom.ωSup_bind
- OmegaCompletePartialOrder.ContinuousHom.ωSup_bind
+#align omega_complete_partial_order.continuous_hom.ωSup_bind OmegaCompletePartialOrder.ContinuousHom.ωSup_bind
theorem bind_continuous' {β γ : Type v} (f : α → Part β) (g : α → β → Part γ) :
Continuous' f → Continuous' g → Continuous' fun x => f x >>= g x
| ⟨hf, hf'⟩, ⟨hg, hg'⟩ =>
Continuous.of_bundled' (OrderHom.bind ⟨f, hf⟩ ⟨g, hg⟩)
(by intro c; rw [ωSup_bind, ← hf', ← hg']; rfl)
-#align
- omega_complete_partial_order.continuous_hom.bind_continuous'
- OmegaCompletePartialOrder.ContinuousHom.bind_continuous'
+#align omega_complete_partial_order.continuous_hom.bind_continuous' OmegaCompletePartialOrder.ContinuousHom.bind_continuous'
theorem map_continuous' {β γ : Type v} (f : β → γ) (g : α → Part β) (hg : Continuous' g) :
Continuous' fun x => f <$> g x := by
simp only [map_eq_bind_pure_comp]; apply bind_continuous' _ _ hg; apply const_continuous'
-#align
- omega_complete_partial_order.continuous_hom.map_continuous'
- OmegaCompletePartialOrder.ContinuousHom.map_continuous'
+#align omega_complete_partial_order.continuous_hom.map_continuous' OmegaCompletePartialOrder.ContinuousHom.map_continuous'
theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α → Part β) (hf : Continuous' f)
(hg : Continuous' g) : Continuous' fun x => f x <*> g x := by
@@ -700,15 +670,11 @@ theorem seq_continuous' {β γ : Type v} (f : α → Part (β → γ)) (g : α
apply Pi.OmegaCompletePartialOrder.flip₂_continuous';
intro;
apply map_continuous' _ _ hg
-#align
- omega_complete_partial_order.continuous_hom.seq_continuous'
- OmegaCompletePartialOrder.ContinuousHom.seq_continuous'
+#align omega_complete_partial_order.continuous_hom.seq_continuous' OmegaCompletePartialOrder.ContinuousHom.seq_continuous'
theorem continuous (F : α →𝒄 β) (C : Chain α) : F (ωSup C) = ωSup (C.map F) :=
ContinuousHom.cont _ _
-#align
- omega_complete_partial_order.continuous_hom.continuous
- OmegaCompletePartialOrder.ContinuousHom.continuous
+#align omega_complete_partial_order.continuous_hom.continuous OmegaCompletePartialOrder.ContinuousHom.continuous
/-- Construct a continuous function from a bare function, a continuous function, and a proof that
they are equal. -/
@@ -716,8 +682,7 @@ they are equal. -/
--head symbol
def ofFun (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β := by
refine' { toOrderHom := { toFun := f.. }.. } <;> subst h <;> rcases g with ⟨⟨⟩⟩ <;> assumption
-#align
- omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.ofFun
+#align omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.ofFun
/-- Construct a continuous function from a monotone function with a proof of continuity. -/
-- Porting note: we now generate a `toOrderHom` lemma instead of an `apply` lemma with `simps`
@@ -727,9 +692,7 @@ def ofMono (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)
toFun := f
monotone' := f.monotone
cont := h
-#align
- omega_complete_partial_order.continuous_hom.of_mono
- OmegaCompletePartialOrder.ContinuousHom.ofMono
+#align omega_complete_partial_order.continuous_hom.of_mono OmegaCompletePartialOrder.ContinuousHom.ofMono
/-- The identity as a continuous function. -/
@[simps!]
@@ -752,28 +715,20 @@ protected theorem ext (f g : α →𝒄 β) (h : ∀ x, f x = g x) : f = g := by
protected theorem coe_inj (f g : α →𝒄 β) (h : (f : α → β) = g) : f = g :=
ContinuousHom.ext _ _ <| _root_.congr_fun h
-#align
- omega_complete_partial_order.continuous_hom.coe_inj
- OmegaCompletePartialOrder.ContinuousHom.coe_inj
+#align omega_complete_partial_order.continuous_hom.coe_inj OmegaCompletePartialOrder.ContinuousHom.coe_inj
@[simp]
theorem comp_id (f : β →𝒄 γ) : f.comp id = f := by ext; rfl
-#align
- omega_complete_partial_order.continuous_hom.comp_id
- OmegaCompletePartialOrder.ContinuousHom.comp_id
+#align omega_complete_partial_order.continuous_hom.comp_id OmegaCompletePartialOrder.ContinuousHom.comp_id
@[simp]
theorem id_comp (f : β →𝒄 γ) : id.comp f = f := by ext; rfl
-#align
- omega_complete_partial_order.continuous_hom.id_comp
- OmegaCompletePartialOrder.ContinuousHom.id_comp
+#align omega_complete_partial_order.continuous_hom.id_comp OmegaCompletePartialOrder.ContinuousHom.id_comp
@[simp]
theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) : f.comp (g.comp h) = (f.comp g).comp h :=
by ext; rfl
-#align
- omega_complete_partial_order.continuous_hom.comp_assoc
- OmegaCompletePartialOrder.ContinuousHom.comp_assoc
+#align omega_complete_partial_order.continuous_hom.comp_assoc OmegaCompletePartialOrder.ContinuousHom.comp_assoc
--Porting note: removed because it is a syntactic tautology. May want it later if we use `FunLike`
-- @[simp]
@@ -786,16 +741,12 @@ theorem comp_assoc (f : γ →𝒄 φ) (g : β →𝒄 γ) (h : α →𝒄 β) :
/-- `Function.const` is a continuous function. -/
def const (x : β) : α →𝒄 β :=
ofMono (OrderHom.const _ x) (continuous_const x)
-#align
- omega_complete_partial_order.continuous_hom.const
- OmegaCompletePartialOrder.ContinuousHom.const
+#align omega_complete_partial_order.continuous_hom.const OmegaCompletePartialOrder.ContinuousHom.const
@[simp]
theorem const_apply (f : β) (a : α) : const f a = f :=
rfl
-#align
- omega_complete_partial_order.continuous_hom.const_apply
- OmegaCompletePartialOrder.ContinuousHom.const_apply
+#align omega_complete_partial_order.continuous_hom.const_apply OmegaCompletePartialOrder.ContinuousHom.const_apply
instance [Inhabited β] : Inhabited (α →𝒄 β) :=
⟨const default⟩
@@ -805,9 +756,7 @@ instance [Inhabited β] : Inhabited (α →𝒄 β) :=
def toMono : (α →𝒄 β) →o α →o β where
toFun f := f
monotone' _ _ h := h
-#align
- omega_complete_partial_order.continuous_hom.to_mono
- OmegaCompletePartialOrder.ContinuousHom.toMono
+#align omega_complete_partial_order.continuous_hom.to_mono OmegaCompletePartialOrder.ContinuousHom.toMono
#align omega_complete_partial_order.continuous_hom.to_mono_coe OmegaCompletePartialOrder.ContinuousHom.toMono_coe
/-- When proving that a chain of applications is below a bound `z`, it suffices to consider the
@@ -827,17 +776,13 @@ theorem forall_forall_merge (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
apply le_max_right
· apply c₀.monotone
apply le_max_left
-#align
- omega_complete_partial_order.continuous_hom.forall_forall_merge
- OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge
+#align omega_complete_partial_order.continuous_hom.forall_forall_merge OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge
@[simp]
theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z : β) :
(∀ j i : ℕ, (c₀ i) (c₁ j) ≤ z) ↔ ∀ i : ℕ, (c₀ i) (c₁ i) ≤ z := by
rw [forall_swap, forall_forall_merge]
-#align
- omega_complete_partial_order.continuous_hom.forall_forall_merge'
- OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'
+#align omega_complete_partial_order.continuous_hom.forall_forall_merge' OmegaCompletePartialOrder.ContinuousHom.forall_forall_merge'
/-- The `ωSup` operator for continuous functions, which takes the pointwise countable supremum
of the functions in the `ω`-chain. -/
@@ -887,24 +832,18 @@ def apply : (α →𝒄 β) × α →𝒄 β where
apply OrderHom.mono _
apply le_ωSup_of_le i
rfl
-#align
- omega_complete_partial_order.continuous_hom.prod.apply
- OmegaCompletePartialOrder.ContinuousHom.Prod.apply
+#align omega_complete_partial_order.continuous_hom.prod.apply OmegaCompletePartialOrder.ContinuousHom.Prod.apply
#align omega_complete_partial_order.continuous_hom.prod.apply_apply OmegaCompletePartialOrder.ContinuousHom.Prod.apply_apply
end Prod
theorem ωSup_def (c : Chain (α →𝒄 β)) (x : α) : ωSup c x = ContinuousHom.ωSup c x :=
rfl
-#align
- omega_complete_partial_order.continuous_hom.ωSup_def
- OmegaCompletePartialOrder.ContinuousHom.ωSup_def
+#align omega_complete_partial_order.continuous_hom.ωSup_def OmegaCompletePartialOrder.ContinuousHom.ωSup_def
theorem ωSup_apply_ωSup (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) :
ωSup c₀ (ωSup c₁) = Prod.apply (ωSup (c₀.zip c₁)) := by simp [Prod.apply_apply, Prod.ωSup_zip]
-#align
- omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup
- OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
+#align omega_complete_partial_order.continuous_hom.ωSup_apply_ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup_apply_ωSup
/-- A family of continuous functions yields a continuous family of functions. -/
@[simps]
initialize_simps_projections
automatically find coercions if there is a Funlike
or SetLike
instance defined by one of the projections.SetLike
coercionsNot yet implemented (and rarely - if ever - used in mathlib3):
+
,*
,...)Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -593,8 +593,9 @@ attribute [nolint docBlame] ContinuousHom.toOrderHom
@[inherit_doc]
infixr:25 " →𝒄 " => ContinuousHom
-
-- Input: \r\MIc
+
+/-! todo: should we make this a OrderHomClass instead of a CoeFun? -/
instance : CoeFun (α →𝒄 β) fun _ => α → β :=
⟨fun f => f.toOrderHom.toFun⟩
@@ -603,20 +604,18 @@ instance : Coe (α →𝒄 β) (α →o β) where coe := ContinuousHom.toOrderHo
instance : PartialOrder (α →𝒄 β) :=
(PartialOrder.lift fun f => f.toOrderHom.toFun) <| by rintro ⟨⟨⟩⟩ ⟨⟨⟩⟩ h; congr
-/-- See Note [custom simps projection]. We need to specify this projection explicitly in this case,
- because it is a composition of multiple projections. -/
-def ContinuousHom.Simps.apply (h : α →𝒄 β) : α → β :=
- h
-#align
- omega_complete_partial_order.continuous_hom.simps.apply
- OmegaCompletePartialOrder.ContinuousHom.Simps.apply
-
-initialize_simps_projections ContinuousHom (toFun → apply)
-
end
namespace ContinuousHom
+/-- See Note [custom simps projection]. We specify this explicitly because we don't have a FunLike
+instance.
+-/
+def Simps.apply (h : α →𝒄 β) : α → β :=
+ h
+
+initialize_simps_projections ContinuousHom (toFun → apply)
+
theorem congr_fun {f g : α →𝒄 β} (h : f = g) (x : α) : f x = g x :=
congr_arg (fun h : α →𝒄 β => h x) h
#align
initialize_simps_projections
now by default generates all projections of all parent structures, and doesn't generate the projections to those parent structures.TwoPointed
)Internal changes:
ParsedProjectionData
to avoid the bug reported here (and to another bug where it seemed that the wrong data was inserted in ParsedProjectionData
, but it was hard to minimize because of all the crashes). If we manage to fix the bug in that Zulip thread, I'll see if I can track down the other bug in commit 97454284Co-authored-by: Johan Commelin <johan@commelin.net>
@@ -611,7 +611,7 @@ def ContinuousHom.Simps.apply (h : α →𝒄 β) : α → β :=
omega_complete_partial_order.continuous_hom.simps.apply
OmegaCompletePartialOrder.ContinuousHom.Simps.apply
-initialize_simps_projections ContinuousHom (toOrderHom_toFun → apply, -toOrderHom)
+initialize_simps_projections ContinuousHom (toFun → apply)
end
This is an extremely partial port of the mono*
tactic from Lean 3, implemented as a macro on top of solve_by_elim
. The original mono
had many configuration options and no documentation, so quite a bit is missing (and almost all the Lean 3 tests fail). Nonetheless I think it's worth merging this, because
@[mono]
mono
will succeed fairly often in the port even though it fails nearly all the testsCo-authored-by: thorimur <68410468+thorimur@users.noreply.github.com>
@@ -146,8 +146,7 @@ theorem map_comp : (c.map f).map g = c.map (g.comp f) :=
rfl
#align omega_complete_partial_order.chain.map_comp OmegaCompletePartialOrder.Chain.map_comp
--- porting note: no [mono] yet
--- @[mono]
+@[mono]
theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g :=
fun i => by simp [mem_map_iff]; intros; exists i; apply h
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
@@ -214,8 +213,7 @@ theorem ωSup_total {c : Chain α} {x : α} (h : ∀ i, c i ≤ x ∨ x ≤ c i)
Or.inr <| le_ωSup_of_le _ this)
#align omega_complete_partial_order.ωSup_total OmegaCompletePartialOrder.ωSup_total
--- porting note: no [mono] yet
--- @[mono]
+@[mono]
theorem ωSup_le_ωSup_of_le {c₀ c₁ : Chain α} (h : c₀ ≤ c₁) : ωSup c₀ ≤ ωSup c₁ :=
(ωSup_le _ _) fun i => by
obtain ⟨_, h⟩ := h i
@@ -637,8 +635,7 @@ protected theorem monotone (f : α →𝒄 β) : Monotone f :=
omega_complete_partial_order.continuous_hom.monotone
OmegaCompletePartialOrder.ContinuousHom.monotone
--- porting note: no [mono] yet
--- @[mono]
+@[mono]
theorem apply_mono {f g : α →𝒄 β} {x y : α} (h₁ : f ≤ g) (h₂ : x ≤ y) : f x ≤ g y :=
OrderHom.apply_mono (show (f : α →o β) ≤ g from h₁) h₂
#align
This PR resyncs the first 28 entries of https://leanprover-community.github.io/mathlib-port-status/out-of-sync.html after sorting by diff size.
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Simon Hudon
! This file was ported from Lean 3 source module order.omega_complete_partial_order
-! leanprover-community/mathlib commit 9116dd6709f303dcf781632e15fdef382b0fc579
+! leanprover-community/mathlib commit 92ca63f0fb391a9ca5f22d2409a6080e786d99f7
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
simps
, just raises a linter error if you run simps
in a more expensive mode without writing !
.to_additive, simps
. Will do that systematically in future PR.OmegaCompletePartialOrder.ContinuousHom.ofMono
a bitCo-authored-by: Yury G. Kudryashov <urkud@urkud.name>
@@ -112,7 +112,7 @@ variable (g : β →o γ)
instance : LE (Chain α) where le x y := ∀ i, ∃ j, x i ≤ y j
/-- `map` function for `Chain` -/
-@[simps (config := { fullyApplied := false })]
+@[simps! (config := { fullyApplied := false })]
def map : Chain β :=
f.comp c
#align omega_complete_partial_order.chain.map OmegaCompletePartialOrder.Chain.map
@@ -153,7 +153,7 @@ theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g :=
#align omega_complete_partial_order.chain.map_le_map OmegaCompletePartialOrder.Chain.map_le_map
/-- `chain.zip` pairs up the elements of two chains that have the same index -/
-@[simps]
+@[simps!]
def zip (c₀ : Chain α) (c₁ : Chain β) : Chain (α × β) :=
OrderHom.prod c₀ c₁
#align omega_complete_partial_order.chain.zip OmegaCompletePartialOrder.Chain.zip
@@ -459,7 +459,7 @@ protected def ωSup (c : Chain (α × β)) : α × β :=
#align prod.ωSup_snd Prod.ωSup_snd
#align prod.ωSup_fst Prod.ωSup_fst
-@[simps ωSup_fst ωSup_snd]
+@[simps! ωSup_fst ωSup_snd]
instance : OmegaCompletePartialOrder (α × β) where
ωSup := Prod.ωSup
ωSup_le := fun _ _ h => ⟨ωSup_le _ _ fun i => (h i).1, ωSup_le _ _ fun i => (h i).2⟩
@@ -569,7 +569,7 @@ protected def ωSup (c : Chain (α →o β)) : α →o β where
#align omega_complete_partial_order.order_hom.ωSup OmegaCompletePartialOrder.OrderHom.ωSup
#align omega_complete_partial_order.order_hom.ωSup_coe OmegaCompletePartialOrder.OrderHom.ωSup_coe
-@[simps ωSup_coe]
+@[simps! ωSup_coe]
instance omegaCompletePartialOrder : OmegaCompletePartialOrder (α →o β) :=
OmegaCompletePartialOrder.lift OrderHom.coeFnHom OrderHom.ωSup (fun _ _ h => h) fun _ => rfl
#align
@@ -724,7 +724,8 @@ def ofFun (f : α → β) (g : α →𝒄 β) (h : f = g) : α →𝒄 β := by
omega_complete_partial_order.continuous_hom.of_fun OmegaCompletePartialOrder.ContinuousHom.ofFun
/-- Construct a continuous function from a monotone function with a proof of continuity. -/
-@[reducible] --Porting note: removes `simps` because it didn't work
+-- Porting note: we now generate a `toOrderHom` lemma instead of an `apply` lemma with `simps`
+@[reducible, simps toOrderHom]
def ofMono (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)) :
α →𝒄 β where
toFun := f
@@ -734,19 +735,15 @@ def ofMono (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)
omega_complete_partial_order.continuous_hom.of_mono
OmegaCompletePartialOrder.ContinuousHom.ofMono
---Porting note: new theorem that couldn't be generated by `@[simps]` on `ofMono`
-@[simp] theorem ofMono_toFun (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)) :
- (ofMono f h : α → β) = f := rfl
-
/-- The identity as a continuous function. -/
-@[simps]
+@[simps!]
def id : α →𝒄 α :=
ofMono OrderHom.id continuous_id
#align omega_complete_partial_order.continuous_hom.id OmegaCompletePartialOrder.ContinuousHom.id
#align omega_complete_partial_order.continuous_hom.id_apply OmegaCompletePartialOrder.ContinuousHom.id_apply
/-- The composition of continuous functions. -/
-@[simps]
+@[simps!]
def comp (f : β →𝒄 γ) (g : α →𝒄 β) : α →𝒄 γ :=
ofMono (OrderHom.comp ↑f ↑g) (continuous_comp _ _ g.cont f.cont)
#align omega_complete_partial_order.continuous_hom.comp OmegaCompletePartialOrder.ContinuousHom.comp
@@ -848,7 +845,7 @@ theorem forall_forall_merge' (c₀ : Chain (α →𝒄 β)) (c₁ : Chain α) (z
/-- The `ωSup` operator for continuous functions, which takes the pointwise countable supremum
of the functions in the `ω`-chain. -/
-@[simps]
+@[simps!]
protected def ωSup (c : Chain (α →𝒄 β)) : α →𝒄 β :=
ContinuousHom.ofMono (ωSup <| c.map toMono)
(by
@@ -924,7 +921,7 @@ def flip {α : Type _} (f : α → β →𝒄 γ) :
#align omega_complete_partial_order.continuous_hom.flip_apply OmegaCompletePartialOrder.ContinuousHom.flip_apply
/-- `Part.bind` as a continuous function. -/
-@[simps] --Porting note: removed `(config := { rhsMd := reducible })`
+@[simps!] --Porting note: removed `(config := { rhsMd := reducible })`
noncomputable def bind {β γ : Type v} (f : α →𝒄 Part β) (g : α →𝒄 β → Part γ) : α →𝒄 Part γ :=
ofMono (OrderHom.bind f g.toOrderHom) fun c => by
rw [OrderHom.bind, ← OrderHom.bind, ωSup_bind, ← f.continuous, ← g.continuous]
This PR is the result of a slight variant on the following "algorithm"
_
and make all uppercase letters into lowercase_
and make all uppercase letters into lowercase(original_lean3_name, OriginalLean4Name)
#align
statement just before the next empty line#align
statement to have been inserted too early)@@ -79,6 +79,7 @@ def bind {β γ} (f : α →o Part β) (g : α →o β → Part γ) : α →o Pa
intro b hb ha
refine' ⟨b, f.monotone h _ hb, g.monotone h _ _ ha⟩
#align order_hom.bind OrderHom.bind
+#align order_hom.bind_coe OrderHom.bind_coe
end OrderHom
@@ -115,6 +116,7 @@ instance : LE (Chain α) where le x y := ∀ i, ∃ j, x i ≤ y j
def map : Chain β :=
f.comp c
#align omega_complete_partial_order.chain.map OmegaCompletePartialOrder.Chain.map
+#align omega_complete_partial_order.chain.map_coe OmegaCompletePartialOrder.Chain.map_coe
variable {f}
@@ -155,6 +157,7 @@ theorem map_le_map {g : α →o β} (h : f ≤ g) : c.map f ≤ c.map g :=
def zip (c₀ : Chain α) (c₁ : Chain β) : Chain (α × β) :=
OrderHom.prod c₀ c₁
#align omega_complete_partial_order.chain.zip OmegaCompletePartialOrder.Chain.zip
+#align omega_complete_partial_order.chain.zip_coe OmegaCompletePartialOrder.Chain.zip_coe
end Chain
@@ -453,6 +456,8 @@ variable [OmegaCompletePartialOrder γ]
protected def ωSup (c : Chain (α × β)) : α × β :=
(ωSup (c.map OrderHom.fst), ωSup (c.map OrderHom.snd))
#align prod.ωSup Prod.ωSup
+#align prod.ωSup_snd Prod.ωSup_snd
+#align prod.ωSup_fst Prod.ωSup_fst
@[simps ωSup_fst ωSup_snd]
instance : OmegaCompletePartialOrder (α × β) where
@@ -562,6 +567,7 @@ protected def ωSup (c : Chain (α →o β)) : α →o β where
toFun a := ωSup (c.map (OrderHom.apply a))
monotone' _ _ h := ωSup_le_ωSup_of_le ((Chain.map_le_map _) fun a => a.monotone h)
#align omega_complete_partial_order.order_hom.ωSup OmegaCompletePartialOrder.OrderHom.ωSup
+#align omega_complete_partial_order.order_hom.ωSup_coe OmegaCompletePartialOrder.OrderHom.ωSup_coe
@[simps ωSup_coe]
instance omegaCompletePartialOrder : OmegaCompletePartialOrder (α →o β) :=
@@ -569,6 +575,7 @@ instance omegaCompletePartialOrder : OmegaCompletePartialOrder (α →o β) :=
#align
omega_complete_partial_order.order_hom.omega_complete_partial_order
OmegaCompletePartialOrder.OrderHom.omegaCompletePartialOrder
+#align omega_complete_partial_order.order_hom.omega_complete_partial_order_ωSup_coe OmegaCompletePartialOrder.OrderHom.omegaCompletePartialOrder_ωSup_coe
end OrderHom
@@ -736,12 +743,14 @@ def ofMono (f : α →o β) (h : ∀ c : Chain α, f (ωSup c) = ωSup (c.map f)
def id : α →𝒄 α :=
ofMono OrderHom.id continuous_id
#align omega_complete_partial_order.continuous_hom.id OmegaCompletePartialOrder.ContinuousHom.id
+#align omega_complete_partial_order.continuous_hom.id_apply OmegaCompletePartialOrder.ContinuousHom.id_apply
/-- The composition of continuous functions. -/
@[simps]
def comp (f : β →𝒄 γ) (g : α →𝒄 β) : α →𝒄 γ :=
ofMono (OrderHom.comp ↑f ↑g) (continuous_comp _ _ g.cont f.cont)
#align omega_complete_partial_order.continuous_hom.comp OmegaCompletePartialOrder.ContinuousHom.comp
+#align omega_complete_partial_order.continuous_hom.comp_apply OmegaCompletePartialOrder.ContinuousHom.comp_apply
@[ext]
protected theorem ext (f g : α →𝒄 β) (h : ∀ x, f x = g x) : f = g := by
@@ -806,6 +815,7 @@ def toMono : (α →𝒄 β) →o α →o β where
#align
omega_complete_partial_order.continuous_hom.to_mono
OmegaCompletePartialOrder.ContinuousHom.toMono
+#align omega_complete_partial_order.continuous_hom.to_mono_coe OmegaCompletePartialOrder.ContinuousHom.toMono_coe
/-- When proving that a chain of applications is below a bound `z`, it suffices to consider the
functions and values being selected from the same index in the chains.
@@ -848,6 +858,7 @@ protected def ωSup (c : Chain (α →𝒄 β)) : α →𝒄 β :=
OrderHom.omegaCompletePartialOrder_ωSup_coe, forall_forall_merge,
forall_forall_merge', (· ∘ ·), Function.eval])
#align omega_complete_partial_order.continuous_hom.ωSup OmegaCompletePartialOrder.ContinuousHom.ωSup
+#align omega_complete_partial_order.continuous_hom.ωSup_apply OmegaCompletePartialOrder.ContinuousHom.ωSup_apply
@[simps ωSup]
instance : OmegaCompletePartialOrder (α →𝒄 β) :=
@@ -886,6 +897,7 @@ def apply : (α →𝒄 β) × α →𝒄 β where
#align
omega_complete_partial_order.continuous_hom.prod.apply
OmegaCompletePartialOrder.ContinuousHom.Prod.apply
+#align omega_complete_partial_order.continuous_hom.prod.apply_apply OmegaCompletePartialOrder.ContinuousHom.Prod.apply_apply
end Prod
@@ -909,6 +921,7 @@ def flip {α : Type _} (f : α → β →𝒄 γ) :
monotone' x y h a := (f a).monotone h
cont := by intro _ _; ext x; change f _ _ = _; rw [(f _).continuous]; rfl
#align omega_complete_partial_order.continuous_hom.flip OmegaCompletePartialOrder.ContinuousHom.flip
+#align omega_complete_partial_order.continuous_hom.flip_apply OmegaCompletePartialOrder.ContinuousHom.flip_apply
/-- `Part.bind` as a continuous function. -/
@[simps] --Porting note: removed `(config := { rhsMd := reducible })`
@@ -926,6 +939,7 @@ noncomputable def map {β γ : Type v} (f : β → γ) (g : α →𝒄 Part β)
simp only [map_eq_bind_pure_comp, bind, OrderHom.bind_coe, const_apply,
OrderHom.const_coe_coe]
#align omega_complete_partial_order.continuous_hom.map OmegaCompletePartialOrder.ContinuousHom.map
+#align omega_complete_partial_order.continuous_hom.map_apply OmegaCompletePartialOrder.ContinuousHom.map_apply
/-- `Part.seq` as a continuous function. -/
@[simps] --Porting note: removed `(config := { rhsMd := reducible })`
@@ -936,6 +950,7 @@ noncomputable def seq {β γ : Type v} (f : α →𝒄 Part (β → γ)) (g : α
bind, OrderHom.bind_coe, flip_apply]
rfl
#align omega_complete_partial_order.continuous_hom.seq OmegaCompletePartialOrder.ContinuousHom.seq
+#align omega_complete_partial_order.continuous_hom.seq_apply OmegaCompletePartialOrder.ContinuousHom.seq_apply
end ContinuousHom
Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> Co-authored-by: Johan Commelin <johan@commelin.net> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com>