Local tests and their constraint graphs #
A local test reads a proof π : P → Γ, a word over the alphabet Γ indexed by positions, at a
few positions chosen by a random string r : R, the positions query r i for i : Q, and decides
from the symbols read whether to accept. Its acceptance probability acceptProb π is taken over a
uniformly random string. This is the shape of the verifier of a probabilistically checkable proof
making |Q| queries, and of the testers of the Hadamard code
Arora and Barak, Chapter 11.
Such a test becomes a constraint graph Arora and Barak, Chapter 22
(LocalTest.toConstraintGraph): a vertex for every position, carrying a symbol, and a vertex for
every random string, carrying the symbols the test is to read on it; for every random string r
and query i, an edge from the vertex of r to the position query r i holds when the symbols
claimed at r make the test accept and the i-th of them is the symbol at the position. On a
random string where the test rejects the proof read off the positions, the claimed symbols either
make the test reject or differ from the proof at some query, so one of the edges of the random
string is violated. A labelling therefore violates a proportion of the edges at least the rejection
probability of the test divided by |Q| (LocalTest.one_sub_acceptProb_le_card_mul_unsatFrac).
Local tests combine: LocalTest.map renames the positions, to run a test on part of a larger
proof; LocalTest.and runs two tests on independent random strings and accepts when both do;
LocalTest.mix runs a test of a family chosen uniformly at random.
Main definitions #
Cslib.PCP.LocalTest: a test reading a proof at positions chosen by a random string.Cslib.PCP.LocalTest.Passes,Cslib.PCP.LocalTest.acceptProb: acceptance on a random string, and its probability.Cslib.PCP.LocalTest.map,Cslib.PCP.LocalTest.and,Cslib.PCP.LocalTest.mix: renaming the positions, conjunction, and random choice in a family.Cslib.PCP.LocalTest.comapRand,Cslib.PCP.LocalTest.padQueries: adapting coin and query layouts.Cslib.PCP.LocalTest.toConstraintGraph: the constraint graph of a local test.Cslib.PCP.LocalTest.proofOf: the proof that a labelling of that graph carries at the positions.Cslib.PCP.LocalTest.labellingOf: the labelling of that graph by a proof.
Main results #
Cslib.PCP.LocalTest.acceptProb_eq_one_iff: a test accepts with probability one exactly when it passes on every random string.Cslib.PCP.LocalTest.acceptProb_and_le_left,Cslib.PCP.LocalTest.acceptProb_and_le_right,Cslib.PCP.LocalTest.acceptProb_mix: acceptance probabilities of combined tests.Cslib.PCP.LocalTest.card_filter_not_passes_le_card_unsatEdges,Cslib.PCP.LocalTest.one_sub_acceptProb_le_card_mul_unsatFrac: soundness of the constraint graph, every rejecting random string accounting for a violated edge.Cslib.PCP.LocalTest.satisfiable_toConstraintGraph: completeness of the constraint graph.Cslib.PCP.LocalTest.unsatFrac_labellingOf: its exact value on the labelling carried by a proof.
References #
A local test on proofs π : P → Γ, words over the alphabet Γ indexed by the positions
P: on a random string r : R, it reads the proof at the positions query r i for i : Q, and
accepts when Accepts r holds of the symbols read.
- query : R → Q → P
The position read by the query
ion the random stringr. - Accepts : R → (Q → Γ) → Prop
Whether the test accepts on the random string
r, given the symbols read by its queries.
Instances For
Combining tests #
The test T run through the renaming f : P → P' of its positions: it reads f (query r i).
On a proof indexed by P' it is T run on the part of the proof that f selects.
Instances For
Replace the query layout by Q': read chooses the old query at each new position,
and use selects the answers consumed by the original predicate. A left inverse makes this
an exact padding or rearrangement, as expressed by passes_reindexQueries.
Instances For
Pad a nonempty query layout to length m, repeating the first query at unused positions.
The acceptance predicate ignores those additional answers.
Instances For
The conjunction of two tests: on independent random strings r and r', run both tests,
making the queries of both, and accept when both accept.
Instances For
The acceptance probability #
The conjunction of two tests accepts at most as often as the first one.
The conjunction of two tests accepts at most as often as the second one.
The acceptance probability of a random test of a family is the average of the acceptance probabilities of its members.
Selecting one of |E| checks loses at most a factor |E| in rejection compared with any
test implied by passing all the checks on the same random string. The checks may share coins;
independence is unnecessary.
The constraint graph of a local test #
The constraint graph of a local test Arora and Barak, Chapter 22. Its
vertices are the positions, labelled by a symbol, and the random strings, labelled by the symbols
the test is to read. For every random string r and query i, the edge (r, i) goes from the
vertex of r to the position query r i, and holds when the symbols claimed at r make the test
accept and the i-th of them is the symbol of the position. The alphabet Γ × (Q → Γ) serves both
kinds of vertices: positions use the first component and random strings the second one.
Instances For
The edge (r, i) holds when the symbols claimed at r make the test accept and the i-th of
them is the symbol of the position read.
A random string on which the test does not pass the proof carried by a labelling has a violated edge.
Soundness of the constraint graph of a test, counting version: the random strings on which the test does not pass the proof carried by a labelling are at most as many as the edges the labelling violates.
Soundness of the constraint graph of a test: a labelling violates a proportion of the edges at least the rejection probability of the test on the proof it carries, divided by the number of queries.
The labelling of the constraint graph of a test by a proof π: every position carries its
symbol, and every random string the symbols of π that the test reads on it. The symbol γ fills
the components that the constraints do not read.
Instances For
The labelling by a proof satisfies the edges of the random strings on which the test passes that proof.
When the claimed answers are read from a proof, every edge at a random string is violated exactly when the test rejects. The violated fraction is therefore the rejection probability.
Completeness of the constraint graph of a test: if the test passes the proof π on every
random string, the labelling by π satisfies the constraint graph.