Path actions for the certified-row complement protocol #
These scanners implement the path-witnessing part of inductive counting. The source
system supplied here has Unit certificates; in the complete construction it is the
subset-construction system CertifiedRowSystem.determinize.
Small scanner utilities #
Extend a possibly-unset replicated bit, rejecting a disagreement.
Equations
Instances For
Extend a possibly-unset replicated phase, rejecting a disagreement.
Equations
Instances For
State of a uniform-value scan. bad is distinct from the initially unset state,
so a disagreement cannot be erased by a later matching cell.
- start {X : Type u_5} : UniformScan X
- value {X : Type u_5} (expected : X) : UniformScan X
- bad {X : Type u_5} : UniformScan X
Instances For
Equations
- One or more equations did not get rendered due to their size.
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq CertifiedRowSystem.Complement.UniformScan.start CertifiedRowSystem.Complement.UniformScan.start = isTrue ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq CertifiedRowSystem.Complement.UniformScan.start (CertifiedRowSystem.Complement.UniformScan.value expected) = isFalse ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq CertifiedRowSystem.Complement.UniformScan.start CertifiedRowSystem.Complement.UniformScan.bad = isFalse ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq (CertifiedRowSystem.Complement.UniformScan.value expected) CertifiedRowSystem.Complement.UniformScan.start = isFalse ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq (CertifiedRowSystem.Complement.UniformScan.value expected) CertifiedRowSystem.Complement.UniformScan.bad = isFalse ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq CertifiedRowSystem.Complement.UniformScan.bad CertifiedRowSystem.Complement.UniformScan.start = isFalse ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq CertifiedRowSystem.Complement.UniformScan.bad (CertifiedRowSystem.Complement.UniformScan.value expected) = isFalse ⋯
- CertifiedRowSystem.Complement.instDecidableEqUniformScan.decEq CertifiedRowSystem.Complement.UniformScan.bad CertifiedRowSystem.Complement.UniformScan.bad = isTrue ⋯
Instances For
Extend a uniform-value scan by one element.
Equations
- One or more equations did not get rendered due to their size.
- CertifiedRowSystem.Complement.UniformScan.start.step x✝ = CertifiedRowSystem.Complement.UniformScan.value x✝
- CertifiedRowSystem.Complement.UniformScan.bad.step x✝ = CertifiedRowSystem.Complement.UniformScan.bad
Instances For
Scan a replicated Boolean track.
Equations
- CertifiedRowSystem.Complement.scanBits x✝ [] = x✝
- CertifiedRowSystem.Complement.scanBits x✝ (bit :: bits) = CertifiedRowSystem.Complement.scanBits (x✝.step bit) bits
Instances For
Scan a replicated phase track.
Equations
- CertifiedRowSystem.Complement.scanPhases x✝ [] = x✝
- CertifiedRowSystem.Complement.scanPhases x✝ (phase :: phases) = CertifiedRowSystem.Complement.scanPhases (x✝.step phase) phases
Instances For
A disagreement is an absorbing rejection for the replicated-bit scanner.
A disagreement is an absorbing rejection for the replicated-phase scanner.
Regression test: a later matching bit cannot erase an earlier disagreement.
Regression test: a later matching phase cannot erase an earlier disagreement.
Equality accumulator for an aligned pair of tracks.
Equations
- CertifiedRowSystem.Complement.noteEq ok old new = (ok && decide (old = new))
Instances For
Boolean scan of a cell-local relation on two aligned lists.
Equations
- CertifiedRowSystem.Complement.checkPairs p [] [] = true
- CertifiedRowSystem.Complement.checkPairs p (x_2 :: xs) (y :: ys) = (p x_2 y && CertifiedRowSystem.Complement.checkPairs p xs ys)
- CertifiedRowSystem.Complement.checkPairs p x✝¹ x✝ = false
Instances For
Every list of unit certificates is the canonical replicated unit list.
For a unit-certified system there is only one certificate row of a given length.
A deterministic unit-certified verifier has a unique run on every aligned pair.
Starting a path #
Cell-local part of path initialization. All persistent tracks are copied, the path is reset to the immutable source row, and fuel is reset to zero.
Equations
- One or more equations did not get rendered due to their size.
Instances For
State of a path-initialization scan.
Instances For
One cell of a path-initialization scan.
Equations
- CertifiedRowSystem.Complement.startPathStepCell oldPhase newPhase ok old new = (ok && CertifiedRowSystem.Complement.startPathLocalOK oldPhase newPhase old new)
Instances For
Successful terminal state for path initialization.
Equations
Instances For
Run a path-initialization scanner on aligned protocol rows.
Equations
- One or more equations did not get rendered due to their size.
- CertifiedRowSystem.Complement.evalStartPath oldPhase newPhase x✝ [] [] = some x✝
- CertifiedRowSystem.Complement.evalStartPath oldPhase newPhase x✝² x✝¹ x✝ = none
Instances For
Exact list-level specification of path initialization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The finite scanner accepts exactly the list-level path-initialization relation.
Track/phase projection of the list-level path initialization relation.
Ordinary counting-round path initialization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Final-rejection path initialization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Extending a bounded path #
Finite state of the synchronous bounded-path scanner.
- sourceState : Q
- samePath : Bool
- fuelSucc : RowNumeral.CarryState
- fuelDepth : Ordering
- localOK : Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Initial state for a bounded path-extension scan.
Equations
- CertifiedRowSystem.Complement.pathStepStart D = { sourceState := D.stepStart, samePath := true, fuelSucc := RowNumeral.CarryState.carry, fuelDepth := Ordering.eq, localOK := true }
Instances For
Persistent cell-local conditions of a path extension.
Equations
- One or more equations did not get rendered due to their size.
Instances For
One cell of a path extension. It simultaneously runs the deterministic source
edge verifier, the stuttering check, the fuel successor, and fuel < depth.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A path extension succeeds exactly for a proper bounded fuel increment and either a stutter or a source edge.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run the path-extension scanner on aligned rows.
Equations
- One or more equations did not get rendered due to their size.
- CertifiedRowSystem.Complement.evalPathStep D phase x✝ [] [] = some x✝
- CertifiedRowSystem.Complement.evalPathStep D phase x✝² x✝¹ x✝ = none
Instances For
Exact componentwise behavior of the path-extension scan. This theorem is the bridge from the finite product state to the list-level source, counter, comparison, and preservation checks.
List-level semantics of one bounded path extension.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Phase and persistent-track projection of a bounded path step.
The path scanner accepts exactly a persistent, proper fuel increment whose path component either stutters or follows one determinized source edge.
Counting-round path extension.
Equations
Instances For
Final-rejection path extension.
Equations
Instances For
Completing a counting-round witness #
Finite state for completing a reachability witness in a counting round.
- edgeState : Q
- pathInner : Bool
- fuelDepth : Bool
- innerOuter : Bool
- seenSucc : RowNumeral.CarryState
- innerSucc : RowNumeral.CarryState
- oldFound : UniformScan Bool
- newFound : UniformScan Bool
- newPhase : UniformScan ProtocolPhase
- localOK : Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Initial state of the witness-completion scan.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Persistent and reset conditions of counting-round witness completion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
One cell of witness completion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Successful witness completion. The phase is determined by whether advancing the canonical inner enumeration overflows.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run counting-round witness completion on aligned rows.
Equations
- One or more equations did not get rendered due to their size.
- CertifiedRowSystem.Complement.evalFinishWitness D x✝ [] [] = some x✝
- CertifiedRowSystem.Complement.evalFinishWitness D x✝² x✝¹ x✝ = none
Instances For
Exact componentwise behavior of counting-round witness completion.
List-level specification of completing a counting-round reachability witness.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Persistent/reset-track projection of counting-round witness completion.
The finite scanner accepts exactly the list-level witness-completion action.
Completing a final-rejection witness #
Finite state for completing one witness in the final all-nonfinal scan.
- finalState : F
- pathInner : Bool
- fuelDepth : Bool
- seenSucc : RowNumeral.CarryState
- innerSucc : RowNumeral.CarryState
- newPhase : UniformScan ProtocolPhase
- localOK : Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Initial state for final witness completion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Persistent/reset conditions for final witness completion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
One cell of final witness completion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Successful final witness completion also requires the witnessed source row to be nonfinal.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Run final witness completion on aligned rows.
Equations
- One or more equations did not get rendered due to their size.
- CertifiedRowSystem.Complement.evalFinalWitness D x✝ [] [] = some x✝
- CertifiedRowSystem.Complement.evalFinalWitness D x✝² x✝¹ x✝ = none
Instances For
Exact componentwise behavior of final witness completion.
List-level specification of completing one final all-nonfinal witness.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Persistent/reset-track projection of final witness completion.
The final witness scanner accepts exactly a reachable-row witness whose source final predicate is false.