Thompson's group on the unit interval and on the line
DefinitionCannonFloydParryThompson's group and the objects section 4 of Cannon-Floyd-Parry is about.
A real number is dyadic when it has the form with and . The source uses “dyadic rational numbers” without a defining sentence.
p. 216: “Let be the set of piecewise linear homeomorphisms from the closed unit interval
to itself that are differentiable except at finitely many dyadic rational numbers and
such that on intervals of differentiability the derivatives are powers of 2.” p. 217: “Thus
is a subgroup of the group of all homeomorphisms from to . This group is
Thompson's group .” Here IsThompson f says that is an order isomorphism of for which
there is a finite set of dyadic reals such that on every closed subinterval whose interior
misses , is affine with slope an integer power of . The intercept of each affine piece
is an arbitrary real: that the intercepts are in fact dyadic is a theorem, obtained by induction
along the breakpoints from , and it is deliberately not part of the definition. Phrasing
piecewise linearity on closed subintervals rather than on neighborhoods follows the source's
formula for (p. 217), and it is what makes the affine
formula available at the breakpoints themselves. F is the subgroup generated by the maps
satisfying IsThompson, so the definition carries no proof obligation; that these maps already
form a group is the mission's closure theorem.
Modeling an element as an order isomorphism builds in orientation preservation, which the source instead derives from the positivity of the derivatives; the two descriptions pick out the same set of maps.
A companion predicate places the same data on the whole real line: an order isomorphism of that is the identity outside and satisfies the same piecewise condition. Extension by the identity off and restriction to are mutually inverse group isomorphisms between the two models (a fact no statement of the mission records), and the line model is the one that meets Brin and Squier's group of piecewise-linear homeomorphisms of the line.
Also defined: an element is trivial near if it fixes every point of some and trivial near if it fixes every point of some ; and the support of an element is the set of points of it moves. The source gives neither a defining sentence: it speaks of elements “trivial in neighborhoods of and ” (p. 228, Theorem 4.1) and of “functions with support in ” (p. 230, Lemma 4.4).
p. 217 (Example 1.1): “Two functions in are the functions and defined below.”
These two functions are constructed explicitly, so that is provably not the trivial group.
import Mathlib
namespace CannonFloydParry
/-! ### Dyadic rationals -/
/-- A dyadic rational: `m / 2 ^ k`. -/
def IsDyadic (x : ℝ) : Prop := ∃ (m : ℤ) (k : ℕ), x = (m : ℝ) / 2 ^ k
/-- The condition, on an order isomorphism `f` of `ℝ`, that defines the line realisation of
Thompson's group: `f` fixes every point of `(-∞, 0]` and every point of `[1, ∞)`, and is
piecewise linear with finitely many breakpoints, all breakpoints dyadic and every slope an
integer power of two.
This is a predicate on a single map, not a group; the group is `Fline` below.
Note the two fixing conditions are stated on the *closed* rays, so they also pin `f 0 = 0` and
`f 1 = 1`; that is load-bearing, and stronger than "the identity off `[0,1]`". No continuity of
`f` is assumed or used — `≃o` carries an order isomorphism, not a homeomorphism — and nothing in
this file uses the topology of `ℝ` either.
Nothing is required of the intercepts: they are unconstrained reals here. That they are in fact
dyadic is derived, by induction along the breakpoints, but that derivation is not in this file:
it happens inside the proof of the mission's closure theorem. Following the source it must not
be assumed.
The piecewise-linearity is phrased as "affine on every closed interval whose interior avoids
the breakpoint set `B`", which is the usual textbook reading of *piecewise* linear and, unlike a
local formulation, pins the affine formula down **at** the breakpoints as well. -/
def IsThompsonLine (f : ℝ ≃o ℝ) : Prop :=
(∀ x ≤ (0 : ℝ), f x = x) ∧ (∀ x, (1 : ℝ) ≤ x → f x = x) ∧
∃ B : Finset ℝ, (∀ b ∈ B, IsDyadic b) ∧
∀ x y : ℝ, x < y → Set.Ioo x y ∩ (B : Set ℝ) = ∅ →
∃ (n : ℤ) (c : ℝ), ∀ z ∈ Set.Icc x y, f z = 2 ^ n * z + c
/-- The unit interval, as a type: the coercion to a type of `Set.Icc (0 : ℝ) 1`, carrying the
order it inherits from `ℝ`.
This is the same set as Mathlib's `unitInterval`; at this revision both are `abbrev`s, hence
reducible, so lemmas stated about `unitInterval` apply to `UI` without transport. That
convenience depends on `unitInterval` remaining an `abbrev`.
Two further naming hazards for anyone importing this file: `extend` collides with
`Function.extend` and `restrict` with `Set.restrict`, so a file that also opens those
namespaces must qualify; and `F` is a name many developments bind as a variable. -/
abbrev UI : Type := Set.Icc (0 : ℝ) 1
/-- The condition, on an order isomorphism `f` of `[0,1]`, that Cannon–Floyd–Parry's §1 places
on the elements of Thompson's group: `f` is piecewise linear with finitely many breakpoints, all
breakpoints dyadic and every slope an integer power of two.
This is a predicate on a single map, not a group; the group is `F` below.
The intercepts are unconstrained reals, and nothing in this file states that they are dyadic.
That they are is derived inside the proof of the mission's closure theorem, which is a
submission rather than anything published here. -/
def IsThompson (f : UI ≃o UI) : Prop :=
∃ B : Finset ℝ, (∀ b ∈ B, IsDyadic b) ∧
∀ x y : UI, (x : ℝ) < (y : ℝ) → Set.Ioo (x : ℝ) (y : ℝ) ∩ (B : Set ℝ) = ∅ →
∃ (n : ℤ) (c : ℝ),
∀ z : UI, (z : ℝ) ∈ Set.Icc (x : ℝ) (y : ℝ) → (f z : ℝ) = 2 ^ n * (z : ℝ) + c
/-- Extension by the identity off `[0,1]`, at the level of bare functions. -/
noncomputable def extendFun (f : UI → UI) (x : ℝ) : ℝ :=
if h : x ∈ Set.Icc (0 : ℝ) 1 then (f ⟨x, h⟩ : ℝ) else x
lemma extendFun_of_mem (f : UI → UI) {x : ℝ} (h : x ∈ Set.Icc (0:ℝ) 1) :
extendFun f x = (f ⟨x, h⟩ : ℝ) := dif_pos h
lemma extendFun_of_notMem (f : UI → UI) {x : ℝ} (h : x ∉ Set.Icc (0:ℝ) 1) :
extendFun f x = x := dif_neg h
lemma extendFun_monotone (f : UI ≃o UI) : Monotone (extendFun f) := by
intro a b hab
by_cases ha : a ∈ Set.Icc (0:ℝ) 1 <;> by_cases hb : b ∈ Set.Icc (0:ℝ) 1
· rw [extendFun_of_mem f ha, extendFun_of_mem f hb]
exact (OrderIso.le_iff_le f).mpr hab
· -- `a ∈ [0,1]`, `b ∉ [0,1]`, so `b > 1`
rw [extendFun_of_mem f ha, extendFun_of_notMem f hb]
have hb1 : (1:ℝ) < b := by
rcases not_and_or.mp hb with h | h
· exact absurd (le_trans ha.1 hab) h
· exact lt_of_not_ge h
exact le_of_lt (lt_of_le_of_lt (f ⟨a, ha⟩).2.2 hb1)
· -- `a ∉ [0,1]`, `b ∈ [0,1]`, so `a < 0`
rw [extendFun_of_notMem f ha, extendFun_of_mem f hb]
have ha0 : a < (0:ℝ) := by
rcases not_and_or.mp ha with h | h
· exact lt_of_not_ge h
· exact absurd (le_trans hab hb.2) h
exact le_of_lt (lt_of_lt_of_le ha0 (f ⟨b, hb⟩).2.1)
· rw [extendFun_of_notMem f ha, extendFun_of_notMem f hb]; exact hab
lemma extendFun_left_inv (f : UI ≃o UI) (x : ℝ) :
extendFun f.symm (extendFun f x) = x := by
by_cases h : x ∈ Set.Icc (0:ℝ) 1
· rw [extendFun_of_mem f h, extendFun_of_mem f.symm (f ⟨x, h⟩).2]
have : (⟨(f ⟨x, h⟩ : ℝ), (f ⟨x, h⟩).2⟩ : UI) = f ⟨x, h⟩ := rfl
rw [this, f.symm_apply_apply]
· rw [extendFun_of_notMem f h, extendFun_of_notMem f.symm h]
/-- Extension by the identity, as an order isomorphism of the line. -/
noncomputable def extend (f : UI ≃o UI) : ℝ ≃o ℝ where
toFun := extendFun f
invFun := extendFun f.symm
left_inv := extendFun_left_inv f
right_inv := fun x => by simpa using extendFun_left_inv f.symm x
map_rel_iff' := by
intro a b
refine ⟨fun h => ?_, fun h => extendFun_monotone f h⟩
have h' : extendFun f a ≤ extendFun f b := h
have := extendFun_monotone f.symm h'
rwa [extendFun_left_inv f a, extendFun_left_inv f b] at this
@[simp] lemma extend_apply (f : UI ≃o UI) (x : ℝ) : extend f x = extendFun f x := rfl
/-- Restriction to `[0,1]` of an order isomorphism of `ℝ` that fixes every point of
`(-∞, 0]` and every point of `[1, ∞)`. Those closed rays, rather than the complement of
`[0,1]`, are what the hypotheses ask for: they also pin `L 0 = 0` and `L 1 = 1`, which is what
makes the restriction land in `[0,1]`. -/
noncomputable def restrict (L : ℝ ≃o ℝ) (hlo : ∀ x ≤ (0:ℝ), L x = x)
(hhi : ∀ x, (1:ℝ) ≤ x → L x = x) : UI ≃o UI := by
have h0 : L 0 = 0 := hlo 0 le_rfl
have h1 : L 1 = 1 := hhi 1 le_rfl
have hs0 : L.symm 0 = 0 := by rw [L.symm_apply_eq, h0]
have hs1 : L.symm 1 = 1 := by rw [L.symm_apply_eq, h1]
refine
{ toFun := fun z => ⟨L z, ?_, ?_⟩
invFun := fun z => ⟨L.symm z, ?_, ?_⟩
left_inv := ?_, right_inv := ?_, map_rel_iff' := ?_ }
· have hx : L 0 ≤ L (z : ℝ) := (OrderIso.le_iff_le L).mpr z.2.1
rwa [h0] at hx
· have hx : L (z : ℝ) ≤ L 1 := (OrderIso.le_iff_le L).mpr z.2.2
rwa [h1] at hx
· have hx : L.symm 0 ≤ L.symm (z : ℝ) := (OrderIso.le_iff_le L.symm).mpr z.2.1
rwa [hs0] at hx
· have hx : L.symm (z : ℝ) ≤ L.symm 1 := (OrderIso.le_iff_le L.symm).mpr z.2.2
rwa [hs1] at hx
· intro z; ext; simp
· intro z; ext; simp
· intro a b; exact (OrderIso.le_iff_le L)
@[simp] lemma restrict_coe (L : ℝ ≃o ℝ) (hlo : ∀ x ≤ (0:ℝ), L x = x)
(hhi : ∀ x, (1:ℝ) ≤ x → L x = x) (z : UI) :
((restrict L hlo hhi z : UI) : ℝ) = L (z : ℝ) := rfl
lemma zero_mem_UI : (0:ℝ) ∈ Set.Icc (0:ℝ) 1 := by constructor <;> norm_num
lemma one_mem_UI : (1:ℝ) ∈ Set.Icc (0:ℝ) 1 := by constructor <;> norm_num
/-- `f` is **trivial in a neighborhood of `0`**: it fixes every point of `[0, ε)` for some
`ε > 0`. This is the condition appearing in Cannon–Floyd–Parry's Theorem 4.1. -/
def TrivialNearZero (f : UI ≃o UI) : Prop :=
∃ ε > (0:ℝ), ∀ z : UI, (z : ℝ) < ε → (f z : ℝ) = (z : ℝ)
/-- `f` is **trivial in a neighborhood of `1`**: for some `ε > 0` it fixes every point of
`(1 - ε, 1]`. -/
def TrivialNearOne (f : UI ≃o UI) : Prop :=
∃ ε > (0:ℝ), ∀ z : UI, (1:ℝ) - ε < (z : ℝ) → (f z : ℝ) = (z : ℝ)
/-- The **support** of `f`, as a subset of the line: the set of points of `[0,1]` it moves.
No closure is taken — this is the bare moved-point set, matching the convention of
Brin–Squier's same-named `BrinSquier.supp` for the line. Nothing in this file consumes it: it
exists for a separate theorem of this mission, which asks for containment in a closed
interval. Beware that in dynamics "support" often means the closure of this set, and that
`BrinSquier.supp` has the same name and the same result type `Set ℝ`, so a file that opens both
namespaces must qualify. -/
def supp (f : UI ≃o UI) : Set ℝ := {t : ℝ | ∃ z : UI, (z : ℝ) = t ∧ (f z : ℝ) ≠ t}
/-- Gluing two strictly monotone pieces that agree at the seam. -/
lemma strictMono_glue {f g : ℝ → ℝ} {c : ℝ}
(hf : StrictMonoOn f (Set.Iic c)) (hg : StrictMonoOn g (Set.Ici c)) (hfg : f c = g c) :
StrictMono (fun x => if x ≤ c then f x else g x) := by
intro x y hxy
by_cases hx : x ≤ c <;> by_cases hy : y ≤ c <;> simp only [hx, hy, if_true, if_false]
· exact hf hx hy hxy
· have h1 : f x ≤ f c := by
rcases eq_or_lt_of_le hx with h | h
· rw [h]
· exact le_of_lt (hf hx (Set.mem_Iic.mpr le_rfl) h)
have h2 : g c < g y := hg (Set.mem_Ici.mpr le_rfl) (le_of_lt (lt_of_not_ge hy)) (lt_of_not_ge hy)
rw [hfg] at h1; linarith
· exact absurd (lt_of_lt_of_le hxy hy) (not_lt.mpr (le_of_lt (lt_of_not_ge hx)))
· exact hg (le_of_lt (lt_of_not_ge hx)) (le_of_lt (lt_of_not_ge hy)) hxy
/-- `A` on `[3/4, ∞)`, extended by the identity past `1`. -/
noncomputable def aFun3 : ℝ → ℝ := fun x => if x ≤ 1 then 2 * x - 1 else x
noncomputable def aFun2 : ℝ → ℝ := fun x => if x ≤ 3/4 then x - 1/4 else aFun3 x
noncomputable def aFun1 : ℝ → ℝ := fun x => if x ≤ 1/2 then x / 2 else aFun2 x
/-- Cannon–Floyd–Parry's `A`: `x/2` on `[0,1/2]`, `x - 1/4` on `[1/2,3/4]`, `2x - 1` on
`[3/4,1]`, the identity outside `[0,1]`. -/
noncomputable def aFun : ℝ → ℝ := fun x => if x ≤ 0 then x else aFun1 x
lemma strictMono_aFun3 : StrictMono aFun3 := by
refine strictMono_glue (c := 1) (fun a _ b _ h => by linarith) (fun a _ b _ h => h) ?_
norm_num
lemma strictMono_aFun2 : StrictMono aFun2 := by
refine strictMono_glue (c := 3/4) (fun a _ b _ h => by linarith)
(fun a _ b _ h => strictMono_aFun3 h) ?_
simp [aFun3]; norm_num
lemma strictMono_aFun1 : StrictMono aFun1 := by
refine strictMono_glue (c := 1/2) (fun a _ b _ h => by linarith)
(fun a _ b _ h => strictMono_aFun2 h) ?_
simp [aFun2]; norm_num
lemma strictMono_aFun : StrictMono aFun := by
refine strictMono_glue (c := 0) (fun a _ b _ h => h)
(fun a _ b _ h => strictMono_aFun1 h) ?_
simp [aFun1, aFun2, aFun3]
/-- A right inverse for `aFun`, used only to get surjectivity: `aFun_aInv` proves
`aFun (aInv y) = y`, and nothing here proves the other composite. -/
noncomputable def aInv : ℝ → ℝ := fun y =>
if y ≤ 0 then y
else if y ≤ 1/4 then 2 * y
else if y ≤ 1/2 then y + 1/4
else if y ≤ 1 then (y + 1) / 2
else y
lemma aFun_aInv (y : ℝ) : aFun (aInv y) = y := by
unfold aFun aFun1 aFun2 aFun3 aInv
split_ifs <;> linarith
lemma surjective_aFun : Function.Surjective aFun := fun y => ⟨aInv y, aFun_aInv y⟩
/-- `A` as an order isomorphism of the line. -/
noncomputable def lineA : ℝ ≃o ℝ :=
StrictMono.orderIsoOfSurjective aFun strictMono_aFun surjective_aFun
@[simp] lemma lineA_apply (x : ℝ) : lineA x = aFun x := rfl
lemma aFun_of_le_zero {z : ℝ} (h : z ≤ 0) : aFun z = z := by
unfold aFun aFun1 aFun2 aFun3; split_ifs <;> linarith
lemma aFun_of_mem1 {z : ℝ} (h0 : 0 ≤ z) (h1 : z ≤ 1/2) : aFun z = z / 2 := by
unfold aFun aFun1 aFun2 aFun3; split_ifs <;> linarith
lemma aFun_of_mem2 {z : ℝ} (h0 : 1/2 ≤ z) (h1 : z ≤ 3/4) : aFun z = z - 1/4 := by
unfold aFun aFun1 aFun2 aFun3; split_ifs <;> linarith
lemma aFun_of_mem3 {z : ℝ} (h0 : 3/4 ≤ z) (h1 : z ≤ 1) : aFun z = 2 * z - 1 := by
unfold aFun aFun1 aFun2 aFun3; split_ifs <;> linarith
lemma aFun_of_one_le {z : ℝ} (h : 1 ≤ z) : aFun z = z := by
unfold aFun aFun1 aFun2 aFun3; split_ifs <;> linarith
lemma lineA_of_le_zero : ∀ x ≤ (0:ℝ), lineA x = x := fun x hx => aFun_of_le_zero hx
lemma lineA_of_one_le : ∀ x, (1:ℝ) ≤ x → lineA x = x := fun x hx => aFun_of_one_le hx
/-- Cannon–Floyd–Parry's `A` of Example 1.1, as an element of the unit-interval model:
`x/2` on `[0,1/2]`, `x - 1/4` on `[1/2,3/4]` and `2x - 1` on `[3/4,1]`.
The name records that this is one of the two maps the source singles out, not that it
generates anything: that `A` and `B` generate `F` is Corollary 2.6, which is a milestone of
this mission and is not proved here. -/
noncomputable def mapA : UI ≃o UI := restrict lineA lineA_of_le_zero lineA_of_one_le
lemma half_mem_UI : (1/2 : ℝ) ∈ Set.Icc (0:ℝ) 1 := by constructor <;> norm_num
noncomputable def bFun3 : ℝ → ℝ := fun x => if x ≤ 1 then 2 * x - 1 else x
noncomputable def bFun2 : ℝ → ℝ := fun x => if x ≤ 7/8 then x - 1/8 else bFun3 x
noncomputable def bFun1 : ℝ → ℝ := fun x => if x ≤ 3/4 then x / 2 + 1/4 else bFun2 x
/-- Cannon–Floyd–Parry's `B`: the identity on `[0,1/2]`, `x/2 + 1/4` on `[1/2,3/4]`,
`x - 1/8` on `[3/4,7/8]`, `2x - 1` on `[7/8,1]`, and the identity outside `[0,1]`. -/
noncomputable def bFun : ℝ → ℝ := fun x => if x ≤ 1/2 then x else bFun1 x
lemma strictMono_bFun3 : StrictMono bFun3 := by
refine strictMono_glue (c := 1) (fun a _ b _ h => by linarith) (fun a _ b _ h => h) ?_
norm_num
lemma strictMono_bFun2 : StrictMono bFun2 := by
refine strictMono_glue (c := 7/8) (fun a _ b _ h => by linarith)
(fun a _ b _ h => strictMono_bFun3 h) ?_
simp [bFun3]; norm_num
lemma strictMono_bFun1 : StrictMono bFun1 := by
refine strictMono_glue (c := 3/4) (fun a _ b _ h => by linarith)
(fun a _ b _ h => strictMono_bFun2 h) ?_
simp [bFun2]; norm_num
lemma strictMono_bFun : StrictMono bFun := by
refine strictMono_glue (c := 1/2) (fun a _ b _ h => h)
(fun a _ b _ h => strictMono_bFun1 h) ?_
simp [bFun1]; norm_num
/-- A right inverse for `bFun`, used only to get surjectivity, as `aInv` is for `aFun`. -/
noncomputable def bInv : ℝ → ℝ := fun y =>
if y ≤ 1/2 then y
else if y ≤ 5/8 then 2 * y - 1/2
else if y ≤ 3/4 then y + 1/8
else if y ≤ 1 then (y + 1) / 2
else y
lemma bFun_bInv (y : ℝ) : bFun (bInv y) = y := by
unfold bFun bFun1 bFun2 bFun3 bInv
split_ifs <;> linarith
noncomputable def lineB : ℝ ≃o ℝ :=
StrictMono.orderIsoOfSurjective bFun strictMono_bFun (fun y => ⟨bInv y, bFun_bInv y⟩)
@[simp] lemma lineB_apply (x : ℝ) : lineB x = bFun x := rfl
lemma bFun_of_le_half {z : ℝ} (h : z ≤ 1/2) : bFun z = z := by
unfold bFun bFun1 bFun2 bFun3; split_ifs <;> linarith
lemma bFun_of_mem1 {z : ℝ} (h0 : 1/2 ≤ z) (h1 : z ≤ 3/4) : bFun z = z / 2 + 1/4 := by
unfold bFun bFun1 bFun2 bFun3; split_ifs <;> linarith
lemma bFun_of_mem2 {z : ℝ} (h0 : 3/4 ≤ z) (h1 : z ≤ 7/8) : bFun z = z - 1/8 := by
unfold bFun bFun1 bFun2 bFun3; split_ifs <;> linarith
lemma bFun_of_mem3 {z : ℝ} (h0 : 7/8 ≤ z) (h1 : z ≤ 1) : bFun z = 2 * z - 1 := by
unfold bFun bFun1 bFun2 bFun3; split_ifs <;> linarith
lemma bFun_of_one_le {z : ℝ} (h : 1 ≤ z) : bFun z = z := by
unfold bFun bFun1 bFun2 bFun3; split_ifs <;> linarith
lemma lineB_of_le_zero : ∀ x ≤ (0:ℝ), lineB x = x := fun x hx => bFun_of_le_half (by linarith)
lemma lineB_of_one_le : ∀ x, (1:ℝ) ≤ x → lineB x = x := fun x hx => bFun_of_one_le hx
/-- Cannon–Floyd–Parry's `B` of Example 1.1, as an element of the unit-interval model:
the identity on `[0,1/2]`, `x/2 + 1/4` on `[1/2,3/4]`, `x - 1/8` on `[3/4,7/8]` and `2x - 1`
on `[7/8,1]`. As with `mapA`, the name does not claim that it generates anything. -/
noncomputable def mapB : UI ≃o UI := restrict lineB lineB_of_le_zero lineB_of_one_le
/-! ### The two groups
Each is the subgroup **generated by** the maps satisfying the corresponding condition. Nothing
is claimed here about that set already being closed under composition and inverses — that is
Cannon–Floyd–Parry's result on p. 217, and it is stated as a theorem of this mission rather
than assumed as part of the construction. -/
/-- Thompson's group `F`: the subgroup of order isomorphisms of `[0,1]` generated by the
piecewise-linear maps with dyadic breakpoints and power-of-two slopes. -/
def F : Subgroup (UI ≃o UI) := Subgroup.closure {f | IsThompson f}
/-- The line realisation of Thompson's group: the subgroup of order isomorphisms of `ℝ`
generated by the maps satisfying `IsThompsonLine`. -/
def Fline : Subgroup (ℝ ≃o ℝ) := Subgroup.closure {f | IsThompsonLine f}
/-- Membership in the generating set implies membership in `F`. The converse is the content
of the closure theorem, and is not available here. -/
theorem mem_F_of_isThompson {f : UI ≃o UI} (hf : IsThompson f) : f ∈ F :=
Subgroup.subset_closure hf
theorem mem_Fline_of_isThompsonLine {f : ℝ ≃o ℝ} (hf : IsThompsonLine f) : f ∈ Fline :=
Subgroup.subset_closure hf
end CannonFloydParry
Read-back
What the Lean code literally says, in plain math · claude-opus-5
Read-back: a bundle of definitions
This file introduces no theorems about the objects listed below; it introduces the objects themselves. What follows is, for each one, exactly what it says of its argument.
Standing conventions used throughout
The real line. carries its usual linear order.
The unit interval as a type. Write
and regard as a type whose elements are pairs consisting of a real number together with a proof that . Two such elements are compared by comparing the underlying real numbers: in means exactly in . So is the closed interval with the order inherited from , and it is the same set as the standard unit interval of the ambient library. Whenever an element of appears in a formula about real numbers below, it is the underlying real number that is meant.
Order isomorphism. For linearly ordered sets and , an order isomorphism is a bijection such that
This is the whole of the data: a bijection together with that two-sided equivalence. In particular no continuity, differentiability or piecewise structure is part of the notion, and nothing is postulated about beyond bijectivity and that equivalence. (For continuity and strict monotonicity are nevertheless automatic consequences of the definition, not extra hypotheses; the same holds for . This is a consequence, not something the definitions below say.) I write for the inverse order isomorphism.
The group of order isomorphisms. The order isomorphisms of a fixed linearly ordered set onto itself form a group: the product is the composite , the identity element is the identity map, and the inverse is the inverse map. Two such groups occur below: the order isomorphisms of , and the order isomorphisms of .
Powers of two. Two different powers of occur. In the dyadic-rational definition the exponent is a natural number and . In the slope conditions the exponent is an integer , possibly negative, and is the corresponding integer power of the real number ; every such is strictly positive, and may be , giving slope .
Finite breakpoint sets. A "finite set of reals" below means a finite set in the strict sense — a listable, duplicate-free finite collection. It is allowed to be empty.
1. Dyadic rationals
For a real number , the condition " is dyadic" says:
there exist an integer and a natural number such that .
Both and are existentially quantified inside the condition; , so only non-negative powers of appear in the denominator, and may be negative or zero. Taking shows every integer satisfies the condition, and shows does. So the condition holds of exactly the dyadic rationals , and it is a condition on an arbitrary real number (not on a number already known to be rational).
2. The line model: " is a Thompson map of the line"
Let be an order isomorphism of onto itself. The condition " is a Thompson map of the line" is the conjunction of three clauses:
(i) for every real with , ;
(ii) for every real with , ;
(iii) there exists a finite set such that
- (iii-a) every element is dyadic in the sense of §1, and
- (iii-b) for all real numbers with and
there exist an integer $n$ and a real number $c$ such that
Points to note about what this does and does not say.
The fixing clauses are on the closed rays. Clause (i) is stated for , not , and clause (ii) for , not . Instantiating them at and gives and as part of the condition.
The avoidance hypothesis is on the open interval, the conclusion on the closed one. The hypothesis in (iii-b) is that the open interval misses ; the endpoints and may themselves lie in . The conclusion asserts the single affine formula on the closed interval , endpoints included. So at a point of that is an endpoint of two such intervals, the two affine formulas are each asserted to hold at that point.
The quantification over is over all of . Nothing confines and to ; they range over all reals with , so intervals straddling , or lying entirely to the left of , or containing , are all included.
The slope and intercept may depend on the interval. The integer and the real are quantified inside the "for all ", so different intervals may receive different and ; only the finite set is chosen once and for all.
The slope is an integer power of two, hence strictly positive. Slope and negative slopes are excluded; slopes are permitted, since may be negative.
The intercept is an unconstrained real number. The condition places no requirement on — not dyadicity, not rationality. Nothing in this file asserts that must be dyadic.
is not pinned down as "the breakpoints". The condition only asks for some finite dyadic set with property (iii-b). It does not say that actually fails to be affine at any point of , nor that is minimal, nor that . Any finite dyadic superset of a working works as well.
The empty is allowed, and forces the identity. If one takes the avoidance hypothesis is satisfied by every pair , so (iii-b) then requires to be given by one affine formula on every closed interval, hence globally affine; together with clause (i) that forces to be the identity map. So the witness can be empty only for .
3. The interval model: " is a Thompson map of "
Let be an order isomorphism of onto itself. The condition " is a Thompson map of " says:
there exists a finite set such that every is dyadic, and such that for all with and , there exist an integer and a real number with
Here , and are elements of the type , and the inequalities , and the equation are all read among the underlying real numbers; is likewise read as the real number underlying the value.
Points to note.
There is no fixing clause. Unlike §2, this condition has no analogue of clauses (i) and (ii). None is stated. (That and holds anyway for every order isomorphism of , since such a map must carry the least element to the least element and the greatest to the greatest, is a consequence of the ambient notion and not something this condition says.)
Everything said in §2 about , about the open-versus-closed intervals, about the interval-dependence of and , about the positivity of , and about the intercept being an unconstrained real, applies verbatim here. In particular the condition places no dyadicity requirement on , and this file states nothing to that effect for this model.
is a finite set of reals, not of points of . It may contain points outside ; those simply never obstruct the avoidance hypothesis, since .
The affine conclusion is asserted only at points of . The variable ranges over , so the formula is claimed at the points of — which, since , is all of anyway.
The empty is again allowed and again forces the identity, by the argument of §2 applied on : a single affine formula on all of with and is the identity.
4. Extension by the identity, at the level of bare maps
Given any function from to — no monotonicity, injectivity or surjectivity is required of it — and given a real number , the extension of evaluated at is the real number
This is a total function , defined by cases on whether lies in ; on its value is the real number underlying , and off it is itself. The case distinction is made using the decidability of the membership supplied by classical logic, so the definition is not an algorithm.
5. Extension by the identity, as an order isomorphism of the line
Given an order isomorphism of , the extension of is the order isomorphism of whose
- forward map is of §4 applied to the underlying function of , and
- inverse map is of §4 applied to the underlying function of .
Concretely it is the map
packaged together with proofs that this map is a bijection of with the stated inverse and that . Those three facts are established as part of the construction — they are the content the packaging carries — and the resulting object is by construction an element of the group of order isomorphisms of . It is recorded separately that the value of the extension at a real number is literally .
6. Restriction to
This construction takes three arguments:
- an order isomorphism of onto itself;
- a proof that for every real with ;
- a proof that for every real with .
Both hypotheses are on the closed rays, and both are required: the construction is not defined for an lacking them. From them, instantiated at and , one gets and , and hence also and .
The result is the order isomorphism of onto itself given by
That both of these land in — i.e. that and whenever — is established in the course of the construction, from , and the order-preservation of and ; so are the two inverse identities and the equivalence .
It is recorded separately that the underlying real number of the value of the restriction at is literally .
Only and are actually used; the two hypotheses as stated are stronger than that, and the construction's value does not otherwise depend on them.
7. The group (interval model)
is defined to be
the subgroup generated by the set of all order isomorphisms of satisfying the condition of §3. Precisely: it is the intersection of all subgroups of the group of order isomorphisms of that contain that set — equivalently, the set of all finite products with and each satisfying the condition of §3, the empty product being the identity map.
What is thereby asserted about the set :
- that is a subgroup of the group of order isomorphisms of — closed under composition and inverses, and containing the identity;
- that , i.e. every map satisfying the condition of §3 is a member of . This is recorded explicitly as a statement in its own right.
What is not thereby asserted:
- not that is itself closed under composition, or under inverses, or that it contains the identity map;
- not that is a subgroup;
- not that , i.e. not that every member of satisfies the condition of §3. The definition leaves open that is strictly larger than . The converse inclusion is not stated anywhere in this file.
So "a member of " is, on the strength of this file alone, a strictly weaker predicate than "satisfies the condition of §3" (weaker in the sense of being implied by it, with the reverse implication unproved here).
8. The group of the line model
is defined in exactly the same way, one level up:
the subgroup of the group of order isomorphisms of generated by the set of all order isomorphisms of satisfying the three-clause condition of §2 — i.e. the intersection of all subgroups of that group containing that set, equivalently all finite products of such maps and their inverses.
Everything said in §7 about what is and is not asserted applies here word for word, with §3 replaced by §2. In particular it is asserted that every map satisfying the condition of §2 is a member of (this is recorded explicitly), and it is not asserted that the set of such maps is closed under composition or inverses, nor that every member of satisfies the condition of §2.
9. Triviality near
For an order isomorphism of , the condition " is trivial near " says:
there exists a real number with such that every with satisfies .
So fixes every point of pointwise, the inequality being the strict one .
Notes. The quantifier on is , and is not required to be at most ; a witness is permitted, and such a witness would make the condition say that for every , i.e. that is the identity. The condition is satisfied by the identity map (any works), so it is not vacuous. The point always satisfies , so is among the assertions (though it holds for every order isomorphism of anyway).
10. Triviality near
For an order isomorphism of , the condition " is trivial near " says:
there exists a real number with such that every with satisfies .
So fixes every point of pointwise. The inequality is strict, and the endpoint is included (it always satisfies the inequality), so is among the assertions.
As in §9, is not bounded above; a witness is permitted, and would force to be the identity on all of . The identity map satisfies the condition.
11. The support of a map of
For an order isomorphism of , the support of is defined as a subset of , namely
Because a point of is determined by the real number underlying it, the existential is witnessed by at most one , and the set is therefore exactly
the set of points of that moves. It is a subset of : a real number outside never belongs to it, whatever does.
No closure is taken. This is the bare moved-point set, not its topological closure. It is empty precisely when is the identity map, and it does not contain or (those are fixed by every order isomorphism of ).
12. The map
is defined as the restriction (§6) to of a particular order isomorphism of . That is defined by a nest of case distinctions; computing them out, the value of at a real number is:
The formulas agree at the four cut points, so the same function may equivalently be described on closed pieces: is the identity on , equals on , equals on , equals on , and is the identity on . (Check: at both give ; at both give ; at both give ; at both give .) It is established that is strictly increasing and surjective, hence an order isomorphism of , and that it fixes every point of and every point of — which is what licenses the restriction of §6.
Therefore is the order isomorphism of onto itself given by
Its breakpoints are and ; its three slopes are , and ; and , , , . Sample interior values: , , . Its inverse is the restriction of .
is introduced as an element of the group of all order isomorphisms of . Nothing in this file asserts that satisfies the condition of §3, nor that belongs to the group of §7, nor that together with the map of §13 generates anything.
13. The map
is likewise the restriction (§6) to of a particular order isomorphism of , whose value at a real number , with the case distinctions computed out, is:
Note that the first clause is , so is the identity on the whole ray — in particular on all of , which is how the left-hand hypothesis of §6 is met. Again the formulas agree at the cut points (; ; ; ), so may equivalently be described on closed pieces: the identity on , on , on , on , the identity on . It is established that is strictly increasing and surjective, hence an order isomorphism of , and that it fixes and pointwise.
Therefore is the order isomorphism of onto itself given by
So is the identity on and moves only points of . Its breakpoints are , , ; its four slopes are , , and ; and , , , . Sample values: , , , .
As with , nothing in this file asserts that satisfies the condition of §3, that belongs to , or that and generate anything.
Confirmed by the mission captain (proposal self-audit).