Reading a verifier's query list #
A PCPVerifier hands over its query positions only as an encoded list — that is
what positions_mem provides, and it is all a polynomial-time algorithm can
have, since a single position may be astronomically large. This module reads
individual entries back out of that encoding with the bracket scan.
Two facts make the reading enough for everything downstream. A position is recovered as its own serialization, so two positions can be compared by comparing strings, with no arithmetic on the values; and an index past the end of the list is recognisable, because every serialization is non-empty.
Main definitions #
Complexity.posInner— the encoding stripped of its outer bracketsComplexity.posAt,Complexity.posCount— one entry, and how many there are
Main results #
Complexity.posAt_eq,Complexity.posCount_eq— what the scan readsComplexity.posAt_eq_iff— comparing entries compares positions
The i-th entry of an encoded list, as its own serialization.
Equations
Instances For
How many entries an encoded list has, in unary.
Equations
Instances For
What the scan reads #
Concatenating encoded lists. The encoding of an append is the two inner parts, one after the other, inside a fresh pair of brackets.
Comparing entries compares positions. The scan returns each entry's own serialization, and that serialization determines the entry.