Fixed-width binary certificates for labelled branches #
Each occurrence index occupies one fixed-width binary block. The width is fixed by the machine, not by its input. Distinct indices remain distinct even when their actions or successors agree.
Main definitions #
Turing.MultiTapeCTM.binaryCertificate: concatenate the fixed-width index codes.Turing.MultiTapeCTM.binaryIndices: read a fixed number of binary blocks as indices.
Main results #
Turing.MultiTapeCTM.binaryIndices_binaryCertificate: decoding the code recovers its indices.Turing.MultiTapeCTM.binaryCertificate_binaryIndices: full-width words are recovered exactly.Turing.MultiTapeCTM.decodeCertificate_indices_lt: a transition-list bound also bounds every index in a successful canonical certificate, including terminal padding.
References #
The binary representation is the existing Cslib.BitString.binaryWord; its module records the
original formalization credit. The occurrence and padding semantics are MultiTape.Counting and
MultiTape.Counting.Certificate.
@[simp]
theorem Turing.MultiTapeCTM.runBranch_indices_lt {k : ℕ} {Symbol : Type u_1} {State : Type u_2} {input : List Symbol} (machine : MultiTapeCTM k Symbol State) {bound : ℕ} (hbound : ∀ (cfg : Cfg k Symbol State input), (machine.actions cfg).length ≤ bound) {cfg final : Cfg k Symbol State input} {choices : List ℕ} (hrun : machine.runBranch cfg choices = some final) (index : ℕ) :
Every used index is below the occurrence-list bound, without identifying equal successors.
theorem Turing.MultiTapeCTM.decodeCertificate_indices_lt {k : ℕ} {Symbol : Type u_1} {State : Type u_2} {input : List Symbol} (machine : MultiTapeCTM k Symbol State) {bound : ℕ} (hpos : 0 < bound) (hbound : ∀ (cfg : Cfg k Symbol State input), (machine.actions cfg).length ≤ bound) {cfg final : Cfg k Symbol State input} {word choices : List ℕ} (hdecode : machine.decodeCertificate cfg word = some (choices, final)) (index : ℕ) :
The same positive bound covers actual indices and the forced zero padding after halting.