Module docstring
{"# Monotonicity on intervals
In this file we prove that Set.Ici etc are monotone/antitone functions. We also prove some lemmas
about functions monotone on intervals in SuccOrders.
"}
{"# Monotonicity on intervals
In this file we prove that Set.Ici etc are monotone/antitone functions. We also prove some lemmas
about functions monotone on intervals in SuccOrders.
"}
antitone_Ici
theorem
: Antitone (Ici : α → Set α)
theorem antitone_Ici : Antitone (Ici : α → Set α) := fun _ _ => Ici_subset_Ici.2
monotone_Iic
theorem
: Monotone (Iic : α → Set α)
theorem monotone_Iic : Monotone (Iic : α → Set α) := fun _ _ => Iic_subset_Iic.2
antitone_Ioi
theorem
: Antitone (Ioi : α → Set α)
theorem antitone_Ioi : Antitone (Ioi : α → Set α) := fun _ _ => Ioi_subset_Ioi
monotone_Iio
theorem
: Monotone (Iio : α → Set α)
theorem monotone_Iio : Monotone (Iio : α → Set α) := fun _ _ => Iio_subset_Iio
Monotone.Ici
theorem
(hf : Monotone f) : Antitone fun x => Ici (f x)
protected theorem Monotone.Ici (hf : Monotone f) : Antitone fun x => Ici (f x) :=
antitone_Ici.comp_monotone hf
MonotoneOn.Ici
theorem
(hf : MonotoneOn f s) : AntitoneOn (fun x => Ici (f x)) s
protected theorem MonotoneOn.Ici (hf : MonotoneOn f s) : AntitoneOn (fun x => Ici (f x)) s :=
antitone_Ici.comp_monotoneOn hf
Antitone.Ici
theorem
(hf : Antitone f) : Monotone fun x => Ici (f x)
protected theorem Antitone.Ici (hf : Antitone f) : Monotone fun x => Ici (f x) :=
antitone_Ici.comp hf
AntitoneOn.Ici
theorem
(hf : AntitoneOn f s) : MonotoneOn (fun x => Ici (f x)) s
protected theorem AntitoneOn.Ici (hf : AntitoneOn f s) : MonotoneOn (fun x => Ici (f x)) s :=
antitone_Ici.comp_antitoneOn hf
Monotone.Iic
theorem
(hf : Monotone f) : Monotone fun x => Iic (f x)
protected theorem Monotone.Iic (hf : Monotone f) : Monotone fun x => Iic (f x) :=
monotone_Iic.comp hf
MonotoneOn.Iic
theorem
(hf : MonotoneOn f s) : MonotoneOn (fun x => Iic (f x)) s
protected theorem MonotoneOn.Iic (hf : MonotoneOn f s) : MonotoneOn (fun x => Iic (f x)) s :=
monotone_Iic.comp_monotoneOn hf
Antitone.Iic
theorem
(hf : Antitone f) : Antitone fun x => Iic (f x)
protected theorem Antitone.Iic (hf : Antitone f) : Antitone fun x => Iic (f x) :=
monotone_Iic.comp_antitone hf
AntitoneOn.Iic
theorem
(hf : AntitoneOn f s) : AntitoneOn (fun x => Iic (f x)) s
protected theorem AntitoneOn.Iic (hf : AntitoneOn f s) : AntitoneOn (fun x => Iic (f x)) s :=
monotone_Iic.comp_antitoneOn hf
Monotone.Ioi
theorem
(hf : Monotone f) : Antitone fun x => Ioi (f x)
protected theorem Monotone.Ioi (hf : Monotone f) : Antitone fun x => Ioi (f x) :=
antitone_Ioi.comp_monotone hf
MonotoneOn.Ioi
theorem
(hf : MonotoneOn f s) : AntitoneOn (fun x => Ioi (f x)) s
protected theorem MonotoneOn.Ioi (hf : MonotoneOn f s) : AntitoneOn (fun x => Ioi (f x)) s :=
antitone_Ioi.comp_monotoneOn hf
Antitone.Ioi
theorem
(hf : Antitone f) : Monotone fun x => Ioi (f x)
protected theorem Antitone.Ioi (hf : Antitone f) : Monotone fun x => Ioi (f x) :=
antitone_Ioi.comp hf
AntitoneOn.Ioi
theorem
(hf : AntitoneOn f s) : MonotoneOn (fun x => Ioi (f x)) s
protected theorem AntitoneOn.Ioi (hf : AntitoneOn f s) : MonotoneOn (fun x => Ioi (f x)) s :=
antitone_Ioi.comp_antitoneOn hf
Monotone.Iio
theorem
(hf : Monotone f) : Monotone fun x => Iio (f x)
protected theorem Monotone.Iio (hf : Monotone f) : Monotone fun x => Iio (f x) :=
monotone_Iio.comp hf
MonotoneOn.Iio
theorem
(hf : MonotoneOn f s) : MonotoneOn (fun x => Iio (f x)) s
protected theorem MonotoneOn.Iio (hf : MonotoneOn f s) : MonotoneOn (fun x => Iio (f x)) s :=
monotone_Iio.comp_monotoneOn hf
Antitone.Iio
theorem
(hf : Antitone f) : Antitone fun x => Iio (f x)
protected theorem Antitone.Iio (hf : Antitone f) : Antitone fun x => Iio (f x) :=
monotone_Iio.comp_antitone hf
AntitoneOn.Iio
theorem
(hf : AntitoneOn f s) : AntitoneOn (fun x => Iio (f x)) s
protected theorem AntitoneOn.Iio (hf : AntitoneOn f s) : AntitoneOn (fun x => Iio (f x)) s :=
monotone_Iio.comp_antitoneOn hf
Monotone.Icc
theorem
(hf : Monotone f) (hg : Antitone g) : Antitone fun x => Icc (f x) (g x)
MonotoneOn.Icc
theorem
(hf : MonotoneOn f s) (hg : AntitoneOn g s) : AntitoneOn (fun x => Icc (f x) (g x)) s
protected theorem MonotoneOn.Icc (hf : MonotoneOn f s) (hg : AntitoneOn g s) :
AntitoneOn (fun x => Icc (f x) (g x)) s :=
hf.Ici.inter hg.Iic
Antitone.Icc
theorem
(hf : Antitone f) (hg : Monotone g) : Monotone fun x => Icc (f x) (g x)
AntitoneOn.Icc
theorem
(hf : AntitoneOn f s) (hg : MonotoneOn g s) : MonotoneOn (fun x => Icc (f x) (g x)) s
protected theorem AntitoneOn.Icc (hf : AntitoneOn f s) (hg : MonotoneOn g s) :
MonotoneOn (fun x => Icc (f x) (g x)) s :=
hf.Ici.inter hg.Iic
Monotone.Ico
theorem
(hf : Monotone f) (hg : Antitone g) : Antitone fun x => Ico (f x) (g x)
MonotoneOn.Ico
theorem
(hf : MonotoneOn f s) (hg : AntitoneOn g s) : AntitoneOn (fun x => Ico (f x) (g x)) s
protected theorem MonotoneOn.Ico (hf : MonotoneOn f s) (hg : AntitoneOn g s) :
AntitoneOn (fun x => Ico (f x) (g x)) s :=
hf.Ici.inter hg.Iio
Antitone.Ico
theorem
(hf : Antitone f) (hg : Monotone g) : Monotone fun x => Ico (f x) (g x)
AntitoneOn.Ico
theorem
(hf : AntitoneOn f s) (hg : MonotoneOn g s) : MonotoneOn (fun x => Ico (f x) (g x)) s
protected theorem AntitoneOn.Ico (hf : AntitoneOn f s) (hg : MonotoneOn g s) :
MonotoneOn (fun x => Ico (f x) (g x)) s :=
hf.Ici.inter hg.Iio
Monotone.Ioc
theorem
(hf : Monotone f) (hg : Antitone g) : Antitone fun x => Ioc (f x) (g x)
MonotoneOn.Ioc
theorem
(hf : MonotoneOn f s) (hg : AntitoneOn g s) : AntitoneOn (fun x => Ioc (f x) (g x)) s
protected theorem MonotoneOn.Ioc (hf : MonotoneOn f s) (hg : AntitoneOn g s) :
AntitoneOn (fun x => Ioc (f x) (g x)) s :=
hf.Ioi.inter hg.Iic
Antitone.Ioc
theorem
(hf : Antitone f) (hg : Monotone g) : Monotone fun x => Ioc (f x) (g x)
AntitoneOn.Ioc
theorem
(hf : AntitoneOn f s) (hg : MonotoneOn g s) : MonotoneOn (fun x => Ioc (f x) (g x)) s
protected theorem AntitoneOn.Ioc (hf : AntitoneOn f s) (hg : MonotoneOn g s) :
MonotoneOn (fun x => Ioc (f x) (g x)) s :=
hf.Ioi.inter hg.Iic
Monotone.Ioo
theorem
(hf : Monotone f) (hg : Antitone g) : Antitone fun x => Ioo (f x) (g x)
MonotoneOn.Ioo
theorem
(hf : MonotoneOn f s) (hg : AntitoneOn g s) : AntitoneOn (fun x => Ioo (f x) (g x)) s
protected theorem MonotoneOn.Ioo (hf : MonotoneOn f s) (hg : AntitoneOn g s) :
AntitoneOn (fun x => Ioo (f x) (g x)) s :=
hf.Ioi.inter hg.Iio
Antitone.Ioo
theorem
(hf : Antitone f) (hg : Monotone g) : Monotone fun x => Ioo (f x) (g x)
AntitoneOn.Ioo
theorem
(hf : AntitoneOn f s) (hg : MonotoneOn g s) : MonotoneOn (fun x => Ioo (f x) (g x)) s
protected theorem AntitoneOn.Ioo (hf : AntitoneOn f s) (hg : MonotoneOn g s) :
MonotoneOn (fun x => Ioo (f x) (g x)) s :=
hf.Ioi.inter hg.Iio
iUnion_Ioo_of_mono_of_isGLB_of_isLUB
theorem
(hf : Antitone f) (hg : Monotone g) (ha : IsGLB (range f) a) (hb : IsLUB (range g) b) : ⋃ x, Ioo (f x) (g x) = Ioo a b
theorem iUnion_Ioo_of_mono_of_isGLB_of_isLUB (hf : Antitone f) (hg : Monotone g)
(ha : IsGLB (range f) a) (hb : IsLUB (range g) b) : ⋃ x, Ioo (f x) (g x) = Ioo a b :=
calc
⋃ x, Ioo (f x) (g x) = (⋃ x, Ioi (f x)) ∩ ⋃ x, Iio (g x) :=
iUnion_inter_of_monotone hf.Ioi hg.Iio
_ = IoiIoi a ∩ Iio b := congr_arg₂ (· ∩ ·) ha.iUnion_Ioi_eq hb.iUnion_Iio_eq
strictMonoOn_Iic_of_lt_succ
theorem
[SuccOrder α] [IsSuccArchimedean α] {n : α} (hψ : ∀ m, m < n → ψ m < ψ (succ m)) : StrictMonoOn ψ (Set.Iic n)
/-- A function `ψ` on a `SuccOrder` is strictly monotone before some `n` if for all `m` such that
`m < n`, we have `ψ m < ψ (succ m)`. -/
theorem strictMonoOn_Iic_of_lt_succ [SuccOrder α] [IsSuccArchimedean α] {n : α}
(hψ : ∀ m, m < n → ψ m < ψ (succ m)) : StrictMonoOn ψ (Set.Iic n) :=
strictMonoOn_of_lt_succ ordConnected_Iic fun _a ha' _ ha ↦
hψ _ <| (succ_le_iff_of_not_isMax ha').1 ha
strictAntiOn_Iic_of_succ_lt
theorem
[SuccOrder α] [IsSuccArchimedean α] {n : α} (hψ : ∀ m, m < n → ψ (succ m) < ψ m) : StrictAntiOn ψ (Set.Iic n)
theorem strictAntiOn_Iic_of_succ_lt [SuccOrder α] [IsSuccArchimedean α] {n : α}
(hψ : ∀ m, m < n → ψ (succ m) < ψ m) : StrictAntiOn ψ (Set.Iic n) := fun i hi j hj hij =>
@strictMonoOn_Iic_of_lt_succ α βᵒᵈ _ _ ψ _ _ n hψ i hi j hj hij
strictMonoOn_Ici_of_pred_lt
theorem
[PredOrder α] [IsPredArchimedean α] {n : α} (hψ : ∀ m, n < m → ψ (pred m) < ψ m) : StrictMonoOn ψ (Set.Ici n)
theorem strictMonoOn_Ici_of_pred_lt [PredOrder α] [IsPredArchimedean α] {n : α}
(hψ : ∀ m, n < m → ψ (pred m) < ψ m) : StrictMonoOn ψ (Set.Ici n) := fun i hi j hj hij =>
@strictMonoOn_Iic_of_lt_succ αᵒᵈ βᵒᵈ _ _ ψ _ _ n hψ j hj i hi hij
strictAntiOn_Ici_of_lt_pred
theorem
[PredOrder α] [IsPredArchimedean α] {n : α} (hψ : ∀ m, n < m → ψ m < ψ (pred m)) : StrictAntiOn ψ (Set.Ici n)
theorem strictAntiOn_Ici_of_lt_pred [PredOrder α] [IsPredArchimedean α] {n : α}
(hψ : ∀ m, n < m → ψ m < ψ (pred m)) : StrictAntiOn ψ (Set.Ici n) := fun i hi j hj hij =>
@strictAntiOn_Iic_of_succ_lt αᵒᵈ βᵒᵈ _ _ ψ _ _ n hψ j hj i hi hij
StrictMonoOn.Iic_id_le
theorem
[SuccOrder α] [IsSuccArchimedean α] [OrderBot α] {n : α} {φ : α → α} (hφ : StrictMonoOn φ (Set.Iic n)) :
∀ m ≤ n, m ≤ φ m
theorem StrictMonoOn.Iic_id_le [SuccOrder α] [IsSuccArchimedean α] [OrderBot α] {n : α} {φ : α → α}
(hφ : StrictMonoOn φ (Set.Iic n)) : ∀ m ≤ n, m ≤ φ m := by
revert hφ
refine
Succ.rec_bot (fun n => StrictMonoOn φ (Set.Iic n) → ∀ m ≤ n, m ≤ φ m)
(fun _ _ hm => hm.trans bot_le) ?_ _
rintro k ih hφ m hm
by_cases hk : IsMax k
· rw [succ_eq_iff_isMax.2 hk] at hm
exact ih (hφ.mono <| Iic_subset_Iic.2 (le_succ _)) _ hm
obtain rfl | h := le_succ_iff_eq_or_le.1 hm
· specialize ih (StrictMonoOn.mono hφ fun x hx => le_trans hx (le_succ _)) k le_rfl
refine le_trans (succ_mono ih) (succ_le_of_lt (hφ (le_succ _) le_rfl ?_))
rw [lt_succ_iff_eq_or_lt_of_not_isMax hk]
exact Or.inl rfl
· exact ih (StrictMonoOn.mono hφ fun x hx => le_trans hx (le_succ _)) _ h
StrictMonoOn.Ici_le_id
theorem
[PredOrder α] [IsPredArchimedean α] [OrderTop α] {n : α} {φ : α → α} (hφ : StrictMonoOn φ (Set.Ici n)) :
∀ m, n ≤ m → φ m ≤ m
theorem StrictMonoOn.Ici_le_id [PredOrder α] [IsPredArchimedean α] [OrderTop α] {n : α} {φ : α → α}
(hφ : StrictMonoOn φ (Set.Ici n)) : ∀ m, n ≤ m → φ m ≤ m :=
StrictMonoOn.Iic_id_le (α := αᵒᵈ) fun _ hi _ hj hij => hφ hj hi hij