The extremal germ patterns: local minima and local maxima everywhere
DefinitionMonotonicity_Theorem_Extremal_GermsThese definitions name the two extremal one-sided germ patterns of a definable function of one variable on an interval, completing the four-fold germ classification begun by the below-above and above-below patterns.
Let be an o-minimal structure over a dense linear order without endpoints , let be a definable function of one variable, and let .
We say that has the above-above pattern on when every point admits a window with such that
that is, every point of the interval is a strict local minimum of . Dually, has the below-below pattern on when every such admits a window with
that is, every point of the interval is a strict local maximum of .
Together with the below-above and above-below patterns these exhaust the germ behaviour of an injective definable function: by o-minimality the definable sets and each contain or miss an interval on each side of , and injectivity makes them partition a punctured neighbourhood of . The two extremal patterns are exactly the ones that cannot occur on a whole interval, and excluding them is the substantive step in the proof that an injective definable function is strictly monotone on a subinterval.
Formalization Note. Points of the line are tuples in , intervals are openInterval, and the order on tuples is Lt1, following the mission's framework.
import Definitions.Def_Monotonicity_Theorem_Uniform_Germs
set_option autoImplicit false
universe u
namespace Monotonicity_Theorem
variable {R : Type u}
/-- The "above-above" germ pattern of `f` on the interval `(u,v)`: every point `x` of the
interval which lies in the domain has a window `(c₁,c₂)` inside `(u,v)` on which `f` takes
values above `f x` on both sides of `x`. Equivalently, every point of the interval is a
strict local minimum of `f`. -/
def UniformAboveAbove (D : DenseLinearOrderNoEndpoints R) {M : OMinimalStructure D}
{I B : Set (Power R 1)} (f : DefinableFunction M I B) (u v : R) : Prop :=
∀ x (hxI : I x), openInterval D (Endpoint.finite u) (Endpoint.finite v) x →
∃ c₁ c₂ : Power R 1,
openInterval D (Endpoint.finite u) (Endpoint.finite v) c₁ ∧
openInterval D (Endpoint.finite u) (Endpoint.finite v) c₂ ∧
Lt1 D c₁ x ∧ Lt1 D x c₂ ∧
(∀ y (hyI : I y), openInterval D (Endpoint.finite u) (Endpoint.finite v) y →
Lt1 D c₁ y → Lt1 D y x →
Lt1 D (f.toFun (Subtype.mk x hxI)).1 (f.toFun (Subtype.mk y hyI)).1) ∧
(∀ y (hyI : I y), openInterval D (Endpoint.finite u) (Endpoint.finite v) y →
Lt1 D x y → Lt1 D y c₂ →
Lt1 D (f.toFun (Subtype.mk x hxI)).1 (f.toFun (Subtype.mk y hyI)).1)
/-- The "below-below" germ pattern of `f` on the interval `(u,v)`: every point `x` of the
interval which lies in the domain has a window `(c₁,c₂)` inside `(u,v)` on which `f` takes
values below `f x` on both sides of `x`. Equivalently, every point of the interval is a
strict local maximum of `f`. -/
def UniformBelowBelow (D : DenseLinearOrderNoEndpoints R) {M : OMinimalStructure D}
{I B : Set (Power R 1)} (f : DefinableFunction M I B) (u v : R) : Prop :=
∀ x (hxI : I x), openInterval D (Endpoint.finite u) (Endpoint.finite v) x →
∃ c₁ c₂ : Power R 1,
openInterval D (Endpoint.finite u) (Endpoint.finite v) c₁ ∧
openInterval D (Endpoint.finite u) (Endpoint.finite v) c₂ ∧
Lt1 D c₁ x ∧ Lt1 D x c₂ ∧
(∀ y (hyI : I y), openInterval D (Endpoint.finite u) (Endpoint.finite v) y →
Lt1 D c₁ y → Lt1 D y x →
Lt1 D (f.toFun (Subtype.mk y hyI)).1 (f.toFun (Subtype.mk x hxI)).1) ∧
(∀ y (hyI : I y), openInterval D (Endpoint.finite u) (Endpoint.finite v) y →
Lt1 D x y → Lt1 D y c₂ →
Lt1 D (f.toFun (Subtype.mk y hyI)).1 (f.toFun (Subtype.mk x hxI)).1)
end Monotonicity_Theorem