Prove2Me
Navigate
DiscoverFormalpediaBlogsUsersMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

Monotonicity theorem

Proved
Monotonicity_Theorem.monotonicity_theorem2

by Tamas Fulop · Sep 14, 2026 · Mathlib 0df444a (Lean v4.33.1)

geometry-topologyo-minimality

Let an o-minimal structure M be given on a dense linear order without endpoints. For a definable function f on an infinite definable interval I, and ordered endpoints a and b, there are finitely many cut points from a to b. On each intervening open interval, f is constant, or strictly increasing and continuous, or strictly decreasing and continuous, with continuity expressed by ContinuousPoints.

Preamble
import Definitions.Def_Monotonicity_Theorem_Framework2
Formal statement
theorem Monotonicity_Theorem.monotonicity_theorem2
    {R : Type} [LinearOrder R] [DenselyOrdered R] [NoMaxOrder R] [NoMinOrder R]
    (M : OMinimalStructure R)
    {a b : Power R 1} (hab : Lt1 a b)
    (f : DefinableFunction M
      (openInterval (Endpoint.finite (Power.coord1 a))
        (Endpoint.finite (Power.coord1 b)))
      (Set.univ : Set (Power R 1))) :
    exists (k : Nat), exists (p : Fin (k + 1) -> Power R 1),
      p 0 = a /\
      p (Fin.last k) = b /\
      (forall (i : Fin k), Lt1 (p i.castSucc) (p i.succ)) /\
      (forall (i : Fin k),
        let J : Set (Power R 1) :=
          openInterval
            (Endpoint.finite ((p i.castSucc) 0))
            (Endpoint.finite ((p i.succ) 0))
        (forall (x : {x : Power R 1 //
            (openInterval (Endpoint.finite (Power.coord1 a))
              (Endpoint.finite (Power.coord1 b))) x}),
          forall (y : {y : Power R 1 //
            (openInterval (Endpoint.finite (Power.coord1 a))
              (Endpoint.finite (Power.coord1 b))) y}),
          J x.1 -> J y.1 ->
          f.toFun x = f.toFun y)
        \/
        ((forall (x : {x : Power R 1 //
            (openInterval (Endpoint.finite (Power.coord1 a))
              (Endpoint.finite (Power.coord1 b))) x}),
            forall (y : {y : Power R 1 //
            (openInterval (Endpoint.finite (Power.coord1 a))
              (Endpoint.finite (Power.coord1 b))) y}),
            J x.1 -> J y.1 -> Lt1 x.1 y.1 ->
            Lt1 (f.toFun x).1 (f.toFun y).1)
          \/
          (forall (x : {x : Power R 1 //
            (openInterval (Endpoint.finite (Power.coord1 a))
              (Endpoint.finite (Power.coord1 b))) x}),
            forall (y : {y : Power R 1 //
            (openInterval (Endpoint.finite (Power.coord1 a))
              (Endpoint.finite (Power.coord1 b))) y}),
            J x.1 -> J y.1 -> Lt1 x.1 y.1 ->
            Lt1 (f.toFun y).1 (f.toFun x).1))
        /\ J.Subset
            (ContinuousPoints
              (openInterval (Endpoint.finite (Power.coord1 a))
                (Endpoint.finite (Power.coord1 b)))
              (FunctionGraph (R := R) (m := 1) (n := 1)
                (A := openInterval (Endpoint.finite (Power.coord1 a))
                  (Endpoint.finite (Power.coord1 b)))
                (B := Set.univ)
                f.toFun))) := by sorry
Source
van den Dries, Tame Topology and O-Minimal Structures, Ch. 3
Read-back

What the Lean code literally says, in plain math · muse-spark

Fix a type RRR equipped with a linear order that is densely ordered and has neither a maximum nor a minimum, let MMM be an o-minimal structure over RRR, let aaa and bbb be unary tuples over RRR with the hypothesis that aaa is strictly less than bbb in the strict order on unary tuples, and let fff be an MMM-definable function whose domain is the open interval with finite endpoints at the single coordinates of aaa and bbb and whose codomain is the universal set of unary tuples over RRR; then the claim is that there exist a natural number kkk and a sequence p0,…,pkp_0,\dots,p_kp0​,…,pk​ of unary tuples over RRR such that p0=ap_0=ap0​=a and pk=bp_k=bpk​=b and each consecutive pair is strictly increasing, i.e. for every i<ki<ki<k the iii-th term is strictly less than the (i+1)(i+1)(i+1)-st term, and for every i<ki<ki<k, writing JiJ_iJi​ for the open interval with finite endpoints at the 000-th entries of the iii-th and (i+1)(i+1)(i+1)-st terms, one of the following holds: either fff is constant on JiJ_iJi​ in the sense that for all x,yx,yx,y belonging to the large interval from aaa to bbb, if their underlying tuples lie in JiJ_iJi​ then the values of fff at xxx and yyy are equal, or both of the following hold jointly, namely JiJ_iJi​ is contained as a set in the set obtained by applying the ContinuousPoints\mathrm{ContinuousPoints}ContinuousPoints construction to the large interval and to the set obtained by applying the FunctionGraph\mathrm{FunctionGraph}FunctionGraph construction with dimensions 1,11,11,1, domain set the large interval, codomain set the universal set, and function the underlying function of fff, and at least one of two order-behaviors holds on JiJ_iJi​, namely either fff is strictly increasing on JiJ_iJi​ in the sense that for all x,yx,yx,y in the large interval whose underlying tuples lie in JiJ_iJi​, if xxx is strictly less than yyy then the value of fff at xxx is strictly less than the value at yyy, or fff is strictly decreasing on JiJ_iJi​ in the sense that for all such x,yx,yx,y, if xxx is strictly less than yyy then the value at yyy is strictly less than the value at xxx; in the degenerate case k=0k=0k=0 there is no i<ki<ki<k so the requirements on consecutive pairs and on each JiJ_iJi​ are vacuously true while p0=ap_0=ap0​=a and p0=bp_0=bp0​=b together force a=ba=ba=b, which is incompatible with the strict inequality hypothesis if that order is irreflexive, and for any iii with JiJ_iJi​ empty the implications assuming membership in JiJ_iJi​ are vacuously true.

Human review
  • Endorsed by Shuze Chen · Sep 15, 2026

  • Endorsed by Tamas Fulop · Sep 15, 2026

    Confirmed by the mission captain (proposal self-audit).

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, licensed under Apache 2.0.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTermsJoin SlackJoin Zulip© 2026 Prove2Me