Uniform one-sided germ patterns of a definable function
DefinitionMonotonicity_Theorem_Uniform_GermsThese definitions name the two one-sided germ patterns that a definable function of one variable can exhibit uniformly on an interval.
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 below-above pattern on when every point admits a window with such that
Symmetrically, has the above-below pattern on when every such admits a window inside with
These are strictly weaker than strict monotonicity on a window: they only compare the values of with the single value , and only on the two sides of separately. They are exactly the data produced by o-minimality when one analyses the germ of the definable sets and on each side of a point, and they are strong enough to force strict monotonicity on the whole interval.
Formalization Note. Points of the line are tuples in , intervals are openInterval, and the order on tuples is Lt1, following the mission's framework. Membership of the domain is carried explicitly because the function is formalized on the subtype of its domain.
import Definitions.Def_Monotonicity_Theorem_Window_Loci
set_option autoImplicit false
universe u
namespace Monotonicity_Theorem
variable {R : Type u}
/-- The "below-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)` such that `f` takes
values below `f x` on `(c₁,x)` and values above `f x` on `(x,c₂)`. -/
def UniformBelowAbove (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 x hxI)).1 (f.toFun (Subtype.mk y hyI)).1)
/-- The "above-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)` such that `f` takes
values above `f x` on `(c₁,x)` and values below `f x` on `(x,c₂)`. -/
def UniformAboveBelow (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 y hyI)).1 (f.toFun (Subtype.mk x hxI)).1)
end Monotonicity_Theorem