A good completed marker path separates into its lower tail, selected digit and higher suffix.
Theorem 1.1 (Selected transition and phase snapshots).
( λ d i g i t : List ( Z ) → ( N → Z ) ↦ ∀ s ∈ List ( Z ) , ∀ t ∈ List ( Z ) , ∀ x s ∈ List ( Z × Z × Z × Z ) , ∀ p ∈ Path ( prefixRawAutomaton , s , t , x s ) , ( ( getD ( ite ( 1 < List.length ( s ) , some ( GetElem.getElem ( s , 1 ) ) , none ( ) ) , 0 ) = 0 ∧ getD ( ite ( 1 < List.length ( t ) , some ( GetElem.getElem ( t , 1 ) ) , none ( ) ) , 0 ) = 4 ) ∧ getD ( ite ( 7 < List.length ( t ) , some ( GetElem.getElem ( t , 7 ) ) , none ( ) ) , 0 ) = 0 ) ⇒ ( ∃ u ∈ List ( Z ) , ∃ v ∈ List ( Z ) , ∃ a s ∈ List ( Z × Z × Z × Z ) , ∃ b s ∈ List ( Z × Z × Z × Z ) , ∃ a ∈ Z × Z × Z × Z , ∃ b e f ore ∈ Path ( prefixRawAutomaton , s , u , a s ) , ∃ a f t er ∈ Path ( prefixRawAutomaton , v , t , b s ) , ( ( ( ( ( ( ( ( x s = append ( a s , cons ( a , b s ) ) ∧ getD ( ite ( 1 < List.length ( u ) , some ( GetElem.getElem ( u , 1 ) ) , none ( ) ) , 0 ) = 0 ) ∧ getD ( ite ( 1 < List.length ( v ) , some ( GetElem.getElem ( v , 1 ) ) , none ( ) ) , 0 ) = 1 ) ∧ ( v , a ) ∈ successors ( u ) ) ∧ getD ( ite ( 7 < List.length ( v ) , some ( GetElem.getElem ( v , 7 ) ) , none ( ) ) , 0 ) = 0 ) ∧ pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ digit ( q , 10 ) , p ) = append ( pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ digit ( q , 10 ) , b e f ore ) , cons ( digit ( v , 10 ) , pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ digit ( q , 10 ) , a f t er ) ) ) ) ∧ pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ digit ( q , 12 ) , p ) = append ( pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ digit ( q , 12 ) , b e f ore ) , cons ( digit ( v , 12 ) , pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ digit ( q , 10 ) , a f t er ) ) ) ) ∧ pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ getD ( ite ( 1 < List.length ( q ) , some ( GetElem.getElem ( q , 1 ) ) , none ( ) ) , 0 ) , p ) = append ( replicate ( length ( a s ) , 0 ) , cons ( 1 , pathOutputs ( λ [ List ( Z ) ] [ Z × Z × Z × Z ] q : List ( Z ) ↦ getD ( ite ( 1 < List.length ( q ) , some ( GetElem.getElem ( q , 1 ) ) , none ( ) ) , 0 ) , a f t er ) ) ) ) ∧ ( ∀ k ∈ N , ( 3 ≤ k ∧ k ≤ 6 ) ⇒ getD ( ite ( k < List.length ( t ) , some ( GetElem.getElem ( t , k ) ) , none ( ) ) , 0 ) = getD ( ite ( k < List.length ( v ) , some ( GetElem.getElem ( v , k ) ) , none ( ) ) , 0 ) ) ) ∧ ( ( ( ( ( ( ( ( ( digit ( v , 10 ) = 1 ∧ digit ( u , 10 ) = 0 ) ∧ digit ( u , 11 ) = 0 ) ∧ digit ( u , 12 ) = 0 ) ∧ digit ( u , 13 ) = 0 ) ∧ getD ( ite ( 3 < List.length ( v ) , some ( GetElem.getElem ( v , 3 ) ) , none ( ) ) , 0 ) = digit ( u , 1 ) ) ∧ getD ( ite ( 4 < List.length ( v ) , some ( GetElem.getElem ( v , 4 ) ) , none ( ) ) , 0 ) = cast ( toNat ( ( digit ( v , 12 ) == 1 ) ) , Z ) ) ∧ getD ( ite ( 5 < List.length ( v ) , some ( GetElem.getElem ( v , 5 ) ) , none ( ) ) , 0 ) = cast ( toNat ( Bool.or ( decide ( digit ( u , 16 ) < 0 ) , Bool.and ( ( digit ( u , 16 ) == 0 ) , ( digit ( u , 2 ) == 1 ) ) ) ) , Z ) ) ∧ getD ( ite ( 6 < List.length ( v ) , some ( GetElem.getElem ( v , 6 ) ) , none ( ) ) , 0 ) = cast ( toNat ( Bool.or ( decide ( digit ( u , 17 ) < 0 ) , Bool.and ( ( digit ( u , 17 ) == 0 ) , ( digit ( u , 3 ) == 1 ) ) ) ) , Z ) ) ∧ ( digit ( v , 12 ) = 1 ∨ ( ( ( digit ( v , 12 ) = 0 ∧ getD ( ite ( 5 < List.length ( v ) , some ( GetElem.getElem ( v , 5 ) ) , none ( ) ) , 0 ) = 1 ) ∧ getD ( ite ( 6 < List.length ( v ) , some ( GetElem.getElem ( v , 6 ) ) , none ( ) ) , 0 ) = 0 ) ∧ getD ( ite ( 2 < List.length ( u ) , some ( GetElem.getElem ( u , 2 ) ) , none ( ) ) , 0 ) = 0 ) ) ) ) ) ( λ q : List ( Z ) k : N ↦ getD ( ite ( k < List.length ( fst ( baseTable ( toNat ( getD ( ite ( 0 < List.length ( q ) , some ( GetElem.getElem ( q , 0 ) ) , none ( ) ) , 0 ) ) ) ) ) , some ( GetElem.getElem ( fst ( baseTable ( toNat ( getD ( ite ( 0 < List.length ( q ) , some ( GetElem.getElem ( q , 0 ) ) , none ( ) ) , 0 ) ) ) ) , k ) ) , none ( ) ) , 0 ) )
Proof. Machine-checked in Lean as D5/S1/Words/Palindromes/PeriodDoubling/MarkedPathSelection.marked_path_selection (✓ std3). ∎
Source. Repository-derived.
Commentary.
Every path from mode zero to mode four whose final bad flag is zero has a selected transition from mode zero to mode one. Its preceding path is the unmarked lower tail. Input and output streams agree after the selected transition. The two preceding signed digits vanish in both streams. The selected input digit is one. Its output is either one, or zero with input negative phase one, output negative phase zero and an unbroken lower negation flag. Marker parity, retention and both phases at the terminal state are exactly the snapshots saved on the selected transition.