zkp update
$$ \gdef\delim#1#2#3{\mathopen{}\mathclose{\left#1 #2 \right#3}} \gdef\p#1{\delim({#1})} \gdef\ps#1{\delim\{{#1}\}} \gdef\F{\mathbb F} \gdef\set#1{\mathcal #1} \gdef\mat#1{\mathrm #1} \gdef\vec#1{\bm #1} $$
Customizable Constraint System (CCS)
In STW23 a CCS is a set of sets of matrices $\set S$ such that a witness $\vec w$ satisfies
$$ \sum_{\set T ∈ \set S}\ \bigodot_{M ∈ \set T}\ M ⋅ \vec w = \vec 0 $$
where $\bigodot$ is the Hadamard product.
A R1CS constraint is a triplet of matrices $(A,B,C)$ such that a witness $\vec w$ satisfies $\p{A⋅\vec w} ∘ \p{B⋅\vec w} = C⋅\vec w$. A R1CS becomes $\ps{\ps{A,B},\ps{-C}}$. For transformation of Plonkish and AIR constraints see STW23.
Note. CCS is closed under conjunction. Given two CCS constraints $\set S_1$ and $\set S_2$ with matrices of size $m_1×n$ and $m_2×n$ respectively. Convert all matrices to $\p{m_1 + m_2} × n$ as $\begin{bmatrix}M \\ 0\end{bmatrix}$ and $\begin{bmatrix}0 \\ M\end{bmatrix}$ respectively. The conjoined CSS is now the union.
Q. The degree of the CCS is $\max_{\set T ∈ \set S} \delim\vert{\set T}\vert$ and the rank is the number of rows in the matrices. Can we reduce the degree by increasing the rank? For example we can reduce $\ps{\ps{A, B}, \ps{C}}$ to $\ps{\ps{D, D}, \ps{E}}$ at doubling rank.
CCS+ extends this with a lookup argument. In addition to the above there is a set of indices $\set I$ and a set of field elements $\set T$. The witness additional satisfies
$$ \operatornamewithlimits{\large \forall}_{i∈\set I}\ w_i ∈ \set T $$
Q. How do we conjoin table lookup arguments?
Sum-check
Introduced in LFKN92. Given multivariate polynomial $G ∈ \F[X_1,…,X_n]$ and domain $\set B = \set B_1 × ⋯ × \set B_n$, $\set B_i \subseteq \F$. Typically $\set B = \ps{0,1}^n$. We want to proof
$$ h = \sum_{\vec x ∈ \set B} G\p{\vec x} $$
The prover commits to $G$ such that the verifier has oracle access to evaluate $G(\vec x)$ for $\vec x ∈ \F^n$.
Prover sends $G_1 ∈ \F[X]$
$$ G_1(X) = \sum_{\vec x ∈ \set B_2×⋯×\set B_n} G\p{X, \vec x} $$
verifier checks
$$ h = \sum_{x ∈ \set B_1} G_1\p{x} $$
verifier sends random $r ∈ \F$.
prover sends
$$ G_2(X) = \sum_{\vec x ∈ \set B_3×⋯×\set B_n} G\p{r, X, \vec x} $$
verifier checks that degree of $G_2$ equals degree of $X_2$ in $G$ and
$$ G_1(r) = \sum_{x ∈ \set B_2} G_2\p{x} $$
repeat until prover sends
$$ G_n(X) = G\p{\vec r, X} $$
. Verifier takes a random $r ∈ \F$ and checks
$$ G_n(r) = G(\vec r) $$
using any means to compute $G\p{\vec r}$.
See Justin Thaler's notes on Sum-Check: https://people.cs.georgetown.edu/jthaler/sumcheck.pdf
Small field optimization https://people.cs.georgetown.edu/jthaler/small-sumcheck.pdf
https://zkproof.org/2020/03/16/sum-checkprotocol/
GKR
https://people.cs.georgetown.edu/jthaler/gkrnotes.pdf https://people.cs.georgetown.edu/jthaler/GKRNote.pdf
logUp
Cached Quotients
Lasso lookups
For fixed sparse matrix $\mathrm M$ and committed vectors $\vec v$ and $\vec a$ show:
$$ \mathrm M ⋅ \vec v = \vec a $$