Every element of is given by a pair of standard dyadic partitions
ProvedCannonFloydParry.exists_standardDyadicPartition_of_isThompsonA standard dyadic interval is an interval of the form
and a standard dyadic partition of is a partition all of whose intervals are standard dyadic intervals — equivalently, one obtained from by repeatedly halving an interval.
The assertion is the normal-form lemma of the source's section 2. Let be an order isomorphism of satisfying the piecewise-linearity condition IsThompson: finitely many breakpoints, all dyadic, and every slope an integer power of two. Then there are standard dyadic partitions
with the same number of intervals such that carries affinely onto for every ; explicitly, for ,
This is exactly the statement that is described by a tree diagram: the two partitions are the leaf sets of the domain and range trees. The mechanism is that the breakpoints of are dyadic and its slopes are powers of two, so one may refine the partition cut out by the breakpoints — halving intervals on both sides — until every piece is a standard dyadic interval whose image under is again a standard dyadic interval. Refining a standard dyadic partition by halving keeps it standard, and refining the domain side forces a matching refinement of the range side, which is why the two partitions can be arranged to have equally many intervals.
Note that a pairing of two arbitrary dyadic partitions with equally many intervals does not in general arise from an element of : the affine map between two dyadic intervals has power-of-two slope only when both are standard dyadic, which is why the standardness hypothesis cannot be dropped.
import Definitions.Def_CannonFloydParry import Mathlib
namespace CannonFloydParry
theorem exists_standardDyadicPartition_of_isThompson {f : UI ≃o UI} (hf : IsThompson f) :
∃ (n : ℕ) (x y : Fin (n + 1) → UI),
StrictMono x ∧ StrictMono y ∧
(x 0 : ℝ) = 0 ∧ (x (Fin.last n) : ℝ) = 1 ∧
(y 0 : ℝ) = 0 ∧ (y (Fin.last n) : ℝ) = 1 ∧
(∀ i : Fin n, ∃ a k : ℕ,
(x i.castSucc : ℝ) = a / 2 ^ k ∧ (x i.succ : ℝ) = (a + 1) / 2 ^ k) ∧
(∀ i : Fin n, ∃ a k : ℕ,
(y i.castSucc : ℝ) = a / 2 ^ k ∧ (y i.succ : ℝ) = (a + 1) / 2 ^ k) ∧
(∀ (i : Fin n) (z : UI), (x i.castSucc : ℝ) ≤ (z : ℝ) → (z : ℝ) ≤ (x i.succ : ℝ) →
(f z : ℝ) =
((y i.succ : ℝ) - (y i.castSucc : ℝ)) / ((x i.succ : ℝ) - (x i.castSucc : ℝ))
* ((z : ℝ) - (x i.castSucc : ℝ)) + (y i.castSucc : ℝ)) := by
sorry
end CannonFloydParry
Confirmed by the mission captain (proposal self-audit).