/- Copyright (c) 2022 Yury Kudryashov. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Yury Kudryashov ! This file was ported from Lean 3 source module order.succ_pred.interval_succ ! leanprover-community/mathlib commit c227d107bbada5d0d9d20287e3282c0a7f1651a0 ! Please do not edit these lines, except to modify the commit id ! if you have ported upstream changes. -/ import Mathlib.Data.Set.Pairwise.Basic import Mathlib.Order.SuccPred.Basic /-! # Intervals `Ixx (f x) (f (Order.succ x))` In this file we prove * `Monotone.biUnion_Ico_Ioc_map_succ`: if `α` is a linear archimedean succ order and `β` is a linear order, then for any monotone function `f` and `m n : α`, the union of intervals `Set.Ioc (f i) (f (Order.succ i))`, `m ≤ i < n`, is equal to `Set.Ioc (f m) (f n)`; * `Monotone.pairwise_disjoint_on_Ioc_succ`: if `α` is a linear succ order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ioc (f n) (f (Order.succ n))` are pairwise disjoint. For the latter lemma, we also prove various order dual versions. -/ open Set Order variable {αα: Type ?u.2β :β: Type ?u.3710Type _} [LinearOrderType _: Type (?u.5793+1)α] namespace Monotone /-- If `α` is a linear archimedean succ order and `β` is a linear order, then for any monotone function `f` and `m n : α`, the union of intervals `Set.Ioc (f i) (f (Order.succ i))`, `m ≤ i < n`, is equal to `Set.Ioc (f m) (f n)` -/ theoremα: Type ?u.8370biUnion_Ico_Ioc_map_succ [SuccOrderbiUnion_Ico_Ioc_map_succ: ∀ [inst : SuccOrder α] [inst_1 : IsSuccArchimedean α] [inst_2 : LinearOrder β] {f : α → β}, Monotone f → ∀ (m n : α), (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f n)α] [IsSuccArchimedeanα: Type ?u.11α] [LinearOrderα: Type ?u.11β] {β: Type ?u.14f :f: α → βα →α: Type ?u.11β} (β: Type ?u.14hf : Monotonehf: Monotone ff) (f: α → βmm: αn :n: αα) : (⋃α: Type ?u.11i ∈ Icoi: ?m.586mm: αn, Ioc (n: αff: α → βi) (i: ?m.586f (succf: α → βi))) = Ioc (i: ?m.586ff: α → βm) (m: αff: α → βn) :=n: αGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: αα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inrα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: αα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inrα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hnm: n ≤ m
inlGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: αα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inrα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inrα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_1α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inrα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_1α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_1α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2Goals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inrα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
hk: IsMax k
posα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
hk: ¬IsMax k
negα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
hk: IsMax k
posα: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
k: α
hmk: m ≤ k
ihk: (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f k)
hk: ¬IsMax k
negGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝³: LinearOrder α
inst✝²: SuccOrder α
inst✝¹: IsSuccArchimedean α
inst✝: LinearOrder β
f: α → β
hf: Monotone f
m, n: α
hmn: m ≤ n
inr.refine'_2#align monotone.bUnion_Ico_Ioc_map_succGoals accomplished! 🐙Monotone.biUnion_Ico_Ioc_map_succ /-- If `α` is a linear succ order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ioc (f n) (f (Order.succ n))` are pairwise disjoint. -/ theoremMonotone.biUnion_Ico_Ioc_map_succ: ∀ {α : Type u_1} {β : Type u_2} [inst : LinearOrder α] [inst_1 : SuccOrder α] [inst_2 : IsSuccArchimedean α] [inst_3 : LinearOrder β] {f : α → β}, Monotone f → ∀ (m n : α), (iUnion fun i => iUnion fun h => Ioc (f i) (f (succ i))) = Ioc (f m) (f n)pairwise_disjoint_on_Ioc_succ [SuccOrderα] [Preorderα: Type ?u.2457β] {β: Type ?u.2460f :f: α → βα →α: Type ?u.2457β} (β: Type ?u.2460hf : Monotonehf: Monotone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.2777} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioc (n: ?m.2857ff: α → βn) (n: ?m.2857f (succf: α → βn))) := (n: ?m.2857pairwise_disjoint_onpairwise_disjoint_on: ∀ {α : Type ?u.3002} {ι : Type ?u.3003} [inst : SemilatticeInf α] [inst_1 : OrderBot α] [inst_2 : LinearOrder ι] (f : ι → α), Pairwise (Disjoint on f) ↔ ∀ ⦃m n : ι⦄, m < n → Disjoint (f m) (f n)_).2 fun_: ?m.3005 → ?m.3004__: ?m.3119__: ?m.3122hmn => disjoint_iff_inf_le.mpr funhmn: ?m.3125_ ⟨⟨_, h₁⟩, ⟨_: ?m.3174h₂, _⟩⟩ =>h₂: f x✝² < x✝¹h₂.not_le <| h₁.trans <|h₂: f x✝² < x✝¹hf <| succ_le_of_lthf: Monotone fhmn #align monotone.pairwise_disjoint_on_Ioc_succ Monotone.pairwise_disjoint_on_Ioc_succ /-- If `α` is a linear succ order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ico (f n) (f (Order.succ n))` are pairwise disjoint. -/ theoremhmn: ?m.3125pairwise_disjoint_on_Ico_succ [SuccOrderα] [Preorderα: Type ?u.3707β] {β: Type ?u.3710f :f: α → βα →α: Type ?u.3707β} (β: Type ?u.3710hf : Monotonehf: Monotone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.4027} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ico (n: ?m.4107ff: α → βn) (n: ?m.4107f (succf: α → βn))) := (n: ?m.4107pairwise_disjoint_onpairwise_disjoint_on: ∀ {α : Type ?u.4252} {ι : Type ?u.4253} [inst : SemilatticeInf α] [inst_1 : OrderBot α] [inst_2 : LinearOrder ι] (f : ι → α), Pairwise (Disjoint on f) ↔ ∀ ⦃m n : ι⦄, m < n → Disjoint (f m) (f n)_).2 fun_: ?m.4255 → ?m.4254__: ?m.4369__: ?m.4372hmn => disjoint_iff_inf_le.mpr funhmn: ?m.4375_ ⟨⟨_, h₁⟩, ⟨_: ?m.4424h₂, _⟩⟩ => h₁.not_le <| (h₂: f x✝² ≤ x✝¹hf <| succ_le_of_lthf: Monotone fhmn).transhmn: ?m.4375h₂ #align monotone.pairwise_disjoint_on_Ico_succ Monotone.pairwise_disjoint_on_Ico_succ /-- If `α` is a linear succ order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ioo (f n) (f (Order.succ n))` are pairwise disjoint. -/ theoremh₂: f x✝² ≤ x✝¹pairwise_disjoint_on_Ioo_succ [SuccOrderα] [Preorderα: Type ?u.4949β] {β: Type ?u.4952f :f: α → βα →α: Type ?u.4949β} (β: Type ?u.4952hf : Monotonehf: Monotone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.5269} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioo (n: ?m.5349ff: α → βn) (n: ?m.5349f (succf: α → βn))) :=n: ?m.5349hf.pairwise_disjoint_on_Ico_succ.mono funhf: Monotone f__: ?m.5561__: ?m.5564h =>h: ?m.5567h.mono Ioo_subset_Ico_self Ioo_subset_Ico_self #align monotone.pairwise_disjoint_on_Ioo_succ Monotone.pairwise_disjoint_on_Ioo_succ /-- If `α` is a linear pred order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ioc (f Order.pred n) (f n)` are pairwise disjoint. -/ theoremh: ?m.5567pairwise_disjoint_on_Ioc_pred [PredOrderα] [Preorderα: Type ?u.5790β] {β: Type ?u.5793f :f: α → βα →α: Type ?u.5790β} (β: Type ?u.5793hf : Monotonehf: Monotone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.6110} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioc (n: ?m.6190f (predf: α → βn)) (n: ?m.6190ff: α → βn)) :=n: ?m.6190Goals accomplished! 🐙#align monotone.pairwise_disjoint_on_Ioc_pred Monotone.pairwise_disjoint_on_Ioc_pred /-- If `α` is a linear pred order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ico (f Order.pred n) (f n)` are pairwise disjoint. -/ theoremGoals accomplished! 🐙pairwise_disjoint_on_Ico_pred [PredOrderα] [Preorderα: Type ?u.7080β] {β: Type ?u.7083f :f: α → βα →α: Type ?u.7080β} (β: Type ?u.7083hf : Monotonehf: Monotone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.7400} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ico (n: ?m.7480f (predf: α → βn)) (n: ?m.7480ff: α → βn)) :=n: ?m.7480Goals accomplished! 🐙#align monotone.pairwise_disjoint_on_Ico_pred Monotone.pairwise_disjoint_on_Ico_pred /-- If `α` is a linear pred order, `β` is a preorder, and `f : α → β` is a monotone function, then the intervals `Set.Ioo (f Order.pred n) (f n)` are pairwise disjoint. -/ theoremGoals accomplished! 🐙pairwise_disjoint_on_Ioo_pred [PredOrderα] [Preorderα: Type ?u.8370β] {β: Type ?u.8373f :f: α → βα →α: Type ?u.8370β} (β: Type ?u.8373hf : Monotonehf: Monotone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.8690} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioo (n: ?m.8770f (predf: α → βn)) (n: ?m.8770ff: α → βn)) :=n: ?m.8770Goals accomplished! 🐙#align monotone.pairwise_disjoint_on_Ioo_pred Monotone.pairwise_disjoint_on_Ioo_pred end Monotone namespace Antitone /-- If `α` is a linear succ order, `β` is a preorder, and `f : α → β` is an antitone function, then the intervals `Set.Ioc (f (Order.succ n)) (f n)` are pairwise disjoint. -/ theoremGoals accomplished! 🐙pairwise_disjoint_on_Ioc_succ [SuccOrderα] [Preorderα: Type ?u.9645β] {β: Type ?u.9648f :f: α → βα →α: Type ?u.9645β} (β: Type ?u.9648hf : Antitonehf: Antitone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.9965} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioc (n: ?m.10045f (succf: α → βn)) (n: ?m.10045ff: α → βn)) :=n: ?m.10045hf.dual_left.pairwise_disjoint_on_Ioc_pred #align antitone.pairwise_disjoint_on_Ioc_succ Antitone.pairwise_disjoint_on_Ioc_succ /-- If `α` is a linear succ order, `β` is a preorder, and `f : α → β` is an antitone function, then the intervals `Set.Ico (f (Order.succ n)) (f n)` are pairwise disjoint. -/ theoremhf: Antitone fpairwise_disjoint_on_Ico_succ [SuccOrderα] [Preorderα: Type ?u.10479β] {β: Type ?u.10482f :f: α → βα →α: Type ?u.10479β} (β: Type ?u.10482hf : Antitonehf: Antitone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.10799} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ico (n: ?m.10879f (succf: α → βn)) (n: ?m.10879ff: α → βn)) :=n: ?m.10879hf.dual_left.pairwise_disjoint_on_Ico_pred #align antitone.pairwise_disjoint_on_Ico_succ Antitone.pairwise_disjoint_on_Ico_succ /-- If `α` is a linear succ order, `β` is a preorder, and `f : α → β` is an antitone function, then the intervals `Set.Ioo (f (Order.succ n)) (f n)` are pairwise disjoint. -/ theoremhf: Antitone fpairwise_disjoint_on_Ioo_succ [SuccOrderα] [Preorderα: Type ?u.11313β] {β: Type ?u.11316f :f: α → βα →α: Type ?u.11313β} (β: Type ?u.11316hf : Antitonehf: Antitone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.11633} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioo (n: ?m.11713f (succf: α → βn)) (n: ?m.11713ff: α → βn)) :=n: ?m.11713hf.dual_left.pairwise_disjoint_on_Ioo_pred #align antitone.pairwise_disjoint_on_Ioo_succ Antitone.pairwise_disjoint_on_Ioo_succ /-- If `α` is a linear pred order, `β` is a preorder, and `f : α → β` is an antitone function, then the intervals `Set.Ioc (f n) (f (Order.pred n))` are pairwise disjoint. -/ theoremhf: Antitone fpairwise_disjoint_on_Ioc_pred [PredOrderα] [Preorderα: Type ?u.12147β] {β: Type ?u.12150f :f: α → βα →α: Type ?u.12147β} (β: Type ?u.12150hf : Antitonehf: Antitone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.12467} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioc (n: ?m.12547ff: α → βn) (n: ?m.12547f (predf: α → βn))) :=n: ?m.12547hf.dual_left.pairwise_disjoint_on_Ioc_succ #align antitone.pairwise_disjoint_on_Ioc_pred Antitone.pairwise_disjoint_on_Ioc_pred /-- If `α` is a linear pred order, `β` is a preorder, and `f : α → β` is an antitone function, then the intervals `Set.Ico (f n) (f (Order.pred n))` are pairwise disjoint. -/ theoremhf: Antitone fpairwise_disjoint_on_Ico_pred [PredOrderα] [Preorderα: Type ?u.12981β] {β: Type ?u.12984f :f: α → βα →α: Type ?u.12981β} (β: Type ?u.12984hf : Antitonehf: Antitone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.13301} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ico (n: ?m.13381ff: α → βn) (n: ?m.13381f (predf: α → βn))) :=n: ?m.13381hf.dual_left.pairwise_disjoint_on_Ico_succ #align antitone.pairwise_disjoint_on_Ico_pred Antitone.pairwise_disjoint_on_Ico_pred /-- If `α` is a linear pred order, `β` is a preorder, and `f : α → β` is an antitone function, then the intervals `Set.Ioo (f n) (f (Order.pred n))` are pairwise disjoint. -/ theoremhf: Antitone fpairwise_disjoint_on_Ioo_pred [PredOrderα] [Preorderα: Type ?u.13815β] {β: Type ?u.13818f :f: α → βα →α: Type ?u.13815β} (β: Type ?u.13818hf : Antitonehf: Antitone ff) : Pairwise (f: α → βDisjoint on funDisjoint: {α : Type ?u.14135} → [inst : PartialOrder α] → [inst : OrderBot α] → α → α → Propn => Ioo (n: ?m.14215ff: α → βn) (n: ?m.14215f (predf: α → βn))) :=n: ?m.14215hf.dual_left.pairwise_disjoint_on_Ioo_succ #align antitone.pairwise_disjoint_on_Ioo_pred Antitone.pairwise_disjoint_on_Ioo_pred end Antitonehf: Antitone f