An untrusted prover claims that a graph is 3-colorable, and provides a claimed proof. The verifier wants to check that the proof is correct, but only wants to read a constant number of bits of the proof.
The cheating strategy is used only when the graph is not 3-colorable. The verifier is random, so it is run 100 times, to see how often it can catch a wrong proof.
The proof consists of eight oracle tables. An oracle is simply a large table of bits that the verifier may query at a few chosen positions. They have three different roles.
| Oracle | Purpose |
|---|---|
chi (χ) |
Encodes the prover's claimed color for every vertex as a low-degree polynomial. |
| Oracle | Purpose |
|---|---|
A0 (A0) |
Certifies that χ assigns every vertex one of the three allowed colors. |
B0 (B0) |
Certifies that the endpoints of every edge receive different colors. |
These let the verifier check that the three main oracles above have the promised algebraic form, without reading them in full.
| Oracle | Purpose |
|---|---|
chi_lines |
Supplies restrictions of χ to algebraic lines, allowing the verifier to test its degree and locally correct an answer. |
chi_prime (χ′) |
Encodes the derived function χ′(x,y) = χ(x) − χ(y), which is used to compare the colors at two vertices. |
chi_prime_lines |
Supplies line restrictions used to test and locally correct χ′. |
A0_lines |
Supplies line restrictions used to test and locally correct the certificate A0. |
B0_lines |
Supplies line restrictions used to test and locally correct the certificate B0. |
The first random round is shown step by step.
chi, chi_lines,
chi_prime, chi_prime_lines,
A0, A0_lines,
B0, and B0_lines.
chi_prime agrees with χ(x) − χ(y).
chi/chi_lines,
chi_prime/chi_prime_lines,
A0/A0_lines, and
B0/B0_lines. The consistency check also uses
chi together with chi_prime.
chi, A0, and A0_lines.
The line oracle is used to test and locally correct the certificate.
chi_prime, B0, and B0_lines,
together with the graph's fixed edge function. Step 2 has already tied
chi_prime to chi.
The verifier has not run yet.
Generate a graph and run the verifier.
If the graph is not 3-colorable, the cheating prover submits a false proof based on the strategy selected above. For a 3-colorable graph, the prover is always honest and the selected cheating strategy is ignored.
Before encoding, the entries of the oracles are elements of \(\mathbb{F}_q\), where \(q=2^t\). One field element therefore takes \(t=\log_2 q\) bits to write down, which is already more than the verifier is allowed to read. An entry of a line-table oracle contains even more information: it describes a univariate polynomial of degree \(D\) over \(\mathbb{F}_q\).
The four main algebraic objects \(\chi,\chi',A_0,B_0\) are encoded using the degree-3 Hadamard encoding. Fix an \(\mathbb{F}_2\)-linear identification \(\rho:\mathbb{F}_q\to\mathbb{F}_2^t\). For a field element \(a\in\mathbb{F}_q\), its encoding records \(P(\rho(a))\) for every polynomial \(P\in\mathcal{P}_3(t,\mathbb{F}_2)\). Thus every encoded position is a single bit, even though it represents information about an element of \(\mathbb{F}_q\).
This code has constant relative distance. Consequently, the verifier can distinguish two different field elements and test whether a submitted table has the required Hadamard form by reading only a constant number of bits.
For the line tables, the coefficient vector of each degree-\(D\) univariate polynomial is first transformed into a constant-degree multivariate polynomial using the map \(\Psi\). The values of that polynomial are then degree-3 Hadamard encoded in the same way. This lets the verifier combine low-degree tests and local correction with only a constant number of oracle queries, at the cost of a small increase in randomness.