/- Copyright (c) 2022 Sébastien Gouëzel. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Sébastien Gouëzel, Yury Kudryashov ! This file was ported from Lean 3 source module order.monotone.extension ! leanprover-community/mathlib commit 422e70f7ce183d2900c586a8cda8381e788a0c62 ! Please do not edit these lines, except to modify the commit id ! if you have ported upstream changes. -/ import Mathlib.Order.ConditionallyCompleteLattice.Basic /-! # Extension of a monotone function from a set to the whole space In this file we prove that if a function is monotone and is bounded on a set `s`, then it admits a monotone extension to the whole space. -/ open Set variable {αα: Type ?u.25β :β: Type ?u.6648Type _} [LinearOrderType _: Type (?u.5+1)α] [ConditionallyCompleteLinearOrderα: Type ?u.2β] {β: Type ?u.28f :f: α → βα →α: Type ?u.2β} {β: Type ?u.5s : Sets: Set αα} {α: Type ?u.2aa: αb :b: αα} /-- If a function is monotone and is bounded on a set `s`, then it admits a monotone extension to the whole space. -/ theoremα: Type ?u.2MonotoneOn.exists_monotone_extension (MonotoneOn.exists_monotone_extension: ∀ {α : Type u_1} {β : Type u_2} [inst : LinearOrder α] [inst_1 : ConditionallyCompleteLinearOrder β] {f : α → β} {s : Set α}, MonotoneOn f s → BddBelow (f '' s) → BddAbove (f '' s) → ∃ g, Monotone g ∧ EqOn f g sh : MonotoneOnh: MonotoneOn f sff: α → βs) (hl : BddBelow (s: Set αf ''f: α → βs)) (hu : BddAbove (s: Set αf ''f: α → βs)) : ∃s: Set αg :g: α → βα →α: Type ?u.25β, Monotoneβ: Type ?u.28g ∧ EqOng: α → βff: α → βgg: α → βs :=s: Set αGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
introα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
introα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
introα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
introGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → βEqOn f g sα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ sf x = g xα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → βEqOn f g sα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ sα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → βEqOn f g sα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ s
this: IsGreatest (Iic x ∩ s) xα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → βEqOn f g sα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ s
this: IsGreatest (Iic x ∩ s) xα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ s
this: IsGreatest (Iic x ∩ s) xα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ s
this: IsGreatest (Iic x ∩ s) xα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
x: α
hx: x ∈ s
this: IsGreatest (Iic x ∩ s) xf x = f xGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
introg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
posg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
negg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
introg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
posg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
negg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
introg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
introg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
introg x ≤ g yα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
z: α
hz: z ∈ Iic y ∩ s
neg.introα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: Disjoint (Iic y) s
posα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negGoals accomplished! 🐙α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a, b: α
h: MonotoneOn f s
hl: BddBelow (f '' s)
hu: BddAbove (f '' s)α: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Set.Nonempty (Iic x ∩ s)
hy: Set.Nonempty (Iic y ∩ s)
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Set.Nonempty (Iic x ∩ s)
hy: Set.Nonempty (Iic y ∩ s)
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Set.Nonempty (Iic x ∩ s)
hy: Set.Nonempty (Iic y ∩ s)
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: Set.Nonempty (Iic x ∩ s)
hy: Set.Nonempty (Iic y ∩ s)
negα: Type u_1
β: Type u_2
inst✝¹: LinearOrder α
inst✝: ConditionallyCompleteLinearOrder β
f: α → β
s: Set α
a✝, b: α
h: MonotoneOn f s
hu: BddAbove (f '' s)
a: β
ha: a ∈ lowerBounds (f '' s)
hu': ∀ (x : α), BddAbove (f '' (Iic x ∩ s))
g:= fun x => if Disjoint (Iic x) s then a else sSup (f '' (Iic x ∩ s)): α → β
hgs: EqOn f g s
x, y: α
hxy: x ≤ y
hx: ¬Disjoint (Iic x) s
hy: ¬Disjoint (Iic y) s
neg#align monotone_on.exists_monotone_extensionGoals accomplished! 🐙MonotoneOn.exists_monotone_extension /-- If a function is antitone and is bounded on a set `s`, then it admits an antitone extension to the whole space. -/ theoremMonotoneOn.exists_monotone_extension: ∀ {α : Type u_1} {β : Type u_2} [inst : LinearOrder α] [inst_1 : ConditionallyCompleteLinearOrder β] {f : α → β} {s : Set α}, MonotoneOn f s → BddBelow (f '' s) → BddAbove (f '' s) → ∃ g, Monotone g ∧ EqOn f g sAntitoneOn.exists_antitone_extension (AntitoneOn.exists_antitone_extension: ∀ {α : Type u_1} {β : Type u_2} [inst : LinearOrder α] [inst_1 : ConditionallyCompleteLinearOrder β] {f : α → β} {s : Set α}, AntitoneOn f s → BddBelow (f '' s) → BddAbove (f '' s) → ∃ g, Antitone g ∧ EqOn f g sh : AntitoneOnh: AntitoneOn f sff: α → βs) (hl : BddBelow (s: Set αf ''f: α → βs)) (hu : BddAbove (s: Set αf ''f: α → βs)) : ∃s: Set αg :g: α → βα →α: Type ?u.6645β, Antitoneβ: Type ?u.6648g ∧ EqOng: α → βff: α → βgg: α → βs :=s: Set αh.h: AntitoneOn f sdual_right.dual_right: ∀ {α : Type ?u.7053} {β : Type ?u.7052} [inst : Preorder α] [inst_1 : Preorder β] {f : α → β} {s : Set α}, AntitoneOn f s → MonotoneOn (↑OrderDual.toDual ∘ f) sexists_monotone_extension hu hl #align antitone_on.exists_antitone_extensionexists_monotone_extension: ∀ {α : Type ?u.7315} {β : Type ?u.7316} [inst : LinearOrder α] [inst_1 : ConditionallyCompleteLinearOrder β] {f : α → β} {s : Set α}, MonotoneOn f s → BddBelow (f '' s) → BddAbove (f '' s) → ∃ g, Monotone g ∧ EqOn f g sAntitoneOn.exists_antitone_extensionAntitoneOn.exists_antitone_extension: ∀ {α : Type u_1} {β : Type u_2} [inst : LinearOrder α] [inst_1 : ConditionallyCompleteLinearOrder β] {f : α → β} {s : Set α}, AntitoneOn f s → BddBelow (f '' s) → BddAbove (f '' s) → ∃ g, Antitone g ∧ EqOn f g s