Documentation

CslibFrontier.Computability.Complexity.Problems.Graph.RotationSystem.Recognition.RecoveryInvariants

Finite invariants of candidate recovery #

These invariants and storage bounds hold independently of a topological query criterion. A failed search may return none; a returned table still passes the existing checker.

Remaining candidates are exactly unused darts of the original endpoint fiber.

theorem Cslib.Complexity.Graph.RotationRecognition.nextCandidate_some {I : FixedRotationInput} {v d : ℕ} {block : List ℕ} (h : nextCandidate I v block = some d) :
d ∈ remaining I v block ∧ query (split I v (block ++ [d])) = true

A successful first-candidate search retains the exact split-query guard.

theorem Cslib.Complexity.Graph.RotationRecognition.advance_some {I : FixedRotationInput} {v : ℕ} {block result : List ℕ} (h : advance I v (some block) = some result) :
remaining I v block = [] ∧ result = block ∨ ∃ d ∈ remaining I v block, query (split I v (block ++ [d])) = true ∧ result = block ++ [d]

An extension either keeps a complete block or appends one unused, actually queried dart.

theorem Cslib.Complexity.Graph.RotationRecognition.advance_invariant {I : FixedRotationInput} {v : ℕ} {block result : List ℕ} (h : advance I v (some block) = some result) (hnd : block.Nodup) (hmem : ∀ d ∈ block, d ∈ fiber I.graph v) :
result.Nodup ∧ (∀ d ∈ result, d ∈ fiber I.graph v) ∧ block <+: result ∧ result.length ≤ block.length + 1

Advancing preserves the finite endpoint fiber, duplicate freedom and directed prefix.

A successful recovered word uses at most the actual fiber length, with no repeated or invalid binary dart index. This holds on malformed input too.

Every successful word enumerates its entire original endpoint fiber.

Explicit polynomial storage for a recovered binary dart word, including its list framing.

A raw block step grows storage by at most one bounded dart. Failure discards the block. The bound applies to every accumulator, including malformed or oversized blocks.

@[simp]

Prescribing an order keeps the original graph unchanged.

@[simp]

Prescribing a vertex replaces an entry; it never appends to the original order table.

A coarse all-raw storage bound for replacing one order. Counting every table entry makes this bound independent of validity and of the numerical value of the supplied vertex index.

A successful outer step retains the original graph/table width and adds only bounded word storage. The statement is unconditional on raw input and algebraic completeness.

One outer step's explicit all-raw encoded-storage growth budget.

Instances For

    Every finite prefix of the outer fold retains the original graph and order width, with only polynomial storage growth. No query histories or split graphs are retained.

    All original graph edges, including loops and parallel records, are unchanged by successful order recovery. Its table width is unchanged even on malformed input.

    Replacing one entry leaves every other vertex's order unchanged.

    Every originally prescribed complete word remains literally unchanged.

    Instances For

      Completing a free vertex preserves all already prescribed words on every raw input.

      Full-order table guard implies the literal Realizes equations on the decoded rotation.

      A returned table has exactly one successor per original dart.

      A returned successor is an actual original dart index, even on raw malformed input.

      Full framed binary storage of a returned existing certificate is explicitly quadratic in the original edge count. No trace or query system is included in the output.

      Successful candidate recovery supplies the existing numerical feasibility predicate, without requiring the missing algebraic completeness criterion.