Iterated isolated-minimum completions along
ProvedErdos195.iterated_isolated_minA tree witness is a function on the nodes , , of the binary tree of residues. For distinct integers with , put iff (two's-complement digits). A finite word of integers is -safe if the sequence "the letters of in order, then all remaining integers in -order" contains no monotone -term arithmetic progression; it is tree-safe if it is -safe for some . Let be -safe, , , and (so , , ). Put . Assume is the -minimum of , is alone in its class mod among the letters of , and for every the number is not for any occurring before in . Then for every there is a tree witness such that
So the isolated-minimum completion can be iterated indefinitely along the doubling sequence (Erdős Problem 195).
Formalization note: treeLt θ is from Definitions.Def_Erdos195_tree; Safe, bitOne are from Definitions.Def_Erdos195_defs. Positions in a word are List.idxOf; P ++ [c] appends c.
import Mathlib import Definitions.Def_Erdos195_tree
namespace Erdos195
theorem iterated_isolated_min (θ : ℕ → ℤ → Bool) (P : List ℤ) (a b : ℤ)
(hP : Safe (treeLt θ) P) (hb : b ∈ P) (hab : a ≠ b)
(hmin : ∀ x ∈ P, x ≠ b → treeLt θ b x)
(hiso : ∀ x ∈ P, x ≠ b → ¬ (2 : ℤ) ^ (padicValInt 2 (b - a) + 1) ∣ x - b)
(hno : ∀ (n : ℕ) (u v : ℤ),
u ∈ P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a)) →
v ∈ P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a)) →
(P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a))).idxOf u <
(P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a))).idxOf v →
a + (2 ^ (n + 2) - 1) * (b - a) ≠ 2 * v - u) :
∀ n : ℕ, ∃ θ' : ℕ → ℤ → Bool,
Safe (treeLt θ') (P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a))) ∧
a + (2 ^ (n + 1) - 1) * (b - a) ∈
P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a)) ∧
(∀ y ∈ P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a)),
y ≠ a + (2 ^ (n + 1) - 1) * (b - a) → treeLt θ' (a + (2 ^ (n + 1) - 1) * (b - a)) y) ∧
(∀ y ∈ P ++ (List.range n).map (fun j => a + (2 ^ (j + 2) - 1) * (b - a)),
y ≠ a + (2 ^ (n + 1) - 1) * (b - a) →
¬ (2 : ℤ) ^ (padicValInt 2 (b - a) + n + 1) ∣ y - (a + (2 ^ (n + 1) - 1) * (b - a))) := by sorry
end Erdos195