The gap graph, as an algorithm #
The verifier does not read a graph; it reads an algorithm that answers three questions about one — how many edges, where an edge's ends are, and whether a pair of symbols satisfies it. This module packages the gap graph that way, by reading the string the reduction writes.
The constraint is a bounded-key decision: an edge's record names its constraint by a code, and the code, together with the two symbol blocks, is all the constraint depends on. Both are clamped to constant width, so the key is constant-size even on strings that are not graphs at all.
Main definitions #
Complexity.gapAlg— the gap graph as anAlgCSP
Main results #
Complexity.gapAlg_models— it agrees with the gap graph
Reading the graph #
The graph string a verifier argument names.
Equations
- Complexity.gapStr F hd E padU z = Complexity.gapAll F hd E padU (Complexity.pairFst (Complexity.pairFst z))
Instances For
Everything the constraint depends on: the code and the two symbol blocks.
Equations
- Complexity.gapOkKey F hd E padU z = Complexity.pair (Complexity.gapCodeBlk F hd E padU z) (List.take 46 (Complexity.pairSnd z))
Instances For
What the constraint says, of the key alone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constraint, as a language on the verifier's verdict argument.
Equations
- Complexity.gapOk F hd E padU = {z : List Bool | Complexity.gapOkPred (Complexity.gapOkKey F hd E padU z)}
Instances For
The record #
It models the gap graph #
The algorithm models the gap graph.