---
# System prepended metadata

title: ark-bcs Lincheck Writeup

---

# ark-bcs Lincheck Writeup

In `lincheck`, we want to prove the following relation: in the RS-IOP with field $\mathbb{F}$ and codeword domain $L$, we have

- domain $H_1$, denoted as **constraint domain**. This domain has size as number of constraints (power of two).
- domain $H_2$, denoted as **variable domain**. This domain has size as number of variables (power of two).
- $f_{Mz}, f_{z} \in RS[L, \rho]$. Its degree bound is $L\rho.$  We extend them to $\hat{f_{Mz}}$ in domain $H_1$, $\hat{f_{z}}$ in domain $H_2$. 
- matrix $M \in \mathbb{F}^{H_1\times H_2}$ . Denote $|H_1| = m, |H_2| = n$. 

We want to satisfy: 
$$
\hat{f_{Mz}}(a) = \sum_{b\in H_2} M_{a,b} \cdot \hat{f_{z}}(b)
$$
In short, we want to show $\hat{f_{Mz}} = M\hat{f_{z}}$. 

## Key Ideas

The key idea is to sample a random vector $\vec{r} \in \mathbb{F}^m$ and compute $M\vec{r}$. 

If $\hat{f_{Mz}} = M\hat{f_{z}}$, then: 
$$
\hat{f_{Mz}}\cdot\vec{r} = M\hat{f_{z}}\cdot \vec{r}\\
\hat{f_{Mz}}\cdot\vec{r} = M(\hat{r^T} \vec{f_z})\\
\vec{r}\cdot\hat{f_{Mz}} = (M^T\vec{r})\cdot \hat{f_{z}}\\
\vec{r}\cdot\hat{f_{Mz}} - (M^T\vec{r})\cdot \hat{f_{z}} = 0
$$
In Aurora paper, we have shown that instead of sampling $\vec{r}$ uniformly at random, with modest increase of soundness error, we can instead sample $\alpha$ such that 
$$
\vec{r} = [1, \alpha, \alpha^2, ...]
$$
Now we low-degree extend both $\vec{r}$ and $M\vec{r}$ to $H$ where $H$ is the larger one of $H_1$ and $H_2$. Indeed, we need $H$ to be $H_1 \cup H_2$, but they are all power of two domain, so it's easy to do. Indeed, since constraints are always more than number of variables, $H = H_1$ so $|H| = m$ 

Because $\vec{r}$ is exactly at the domain point, it's trivial to find an LDE for $\vec{r}$  where
$$
\hat{\vec{r}} = [1, \alpha, \alpha^2, ..., \alpha^{m-1}]\\
$$
To get LDE of $M\vec{r}$, we would need to compute $M\vec{r}$  and low degree extend it to $\hat{M\vec{r}}$ to $H$ using one IFFT. 

Note that now $\hat{f_{Mz}}$ and $\hat{f_{z}}$ is on domain $H = H_1$. 

Thus, the relation of inner product becomes

$$
\sum_{x\in H_1}\hat{\vec{r}}(x) \cdot \hat{f_{Mz}}(x) - \sum_{y\in H_2} \hat{(M^T\vec{r})} (y)\cdot \hat{f_{z}}(y) = 0
$$

We want to do one sumcheck the relation above. To do so, the summation domain need to be $H_1 \cup H_2$.  

$$
\sum_{x\in H_1 \cup H_2}A(x) \cdot \hat{f_{Mz}}(x) -  B(x)\cdot \hat{f_{z}}(x) = 0
$$

where $A(x) = \hat{\vec{r}}(x)$ for $x \in H_1$ and $A(x) = 0$ for $x \in H_2 - H_1$. $B(x) = \hat{(M^T\vec{r})} (x)$ for $x \in H_2$ and $B(x) = 0$ for $x \in H_1 - H_2$. 




## The protocol

**Verifier Input**: 

- Access to oracle $f_{Mz}, f_{z}$ that belongs somewhere in transcript.
- Matrix $M$. 
- Constraint domain $H_1$. Variable domain $H_2$. 

**Verifier Output:** $TRUE$ if $\hat{f_{Mz}}(a) = \sum_{b\in H_2} M_{a,b} \cdot \hat{f_{z}}(b)$ where $\hat{f_{Mz}}$ is evaluation of $f_{Mz}$ on $H_1$. $\hat{f_{z}}$ in evaluation of $f_{z}$ on $H_2$. $FALSE$ otherwise. 

1. Sample $\alpha$. 

2. Compute LDEs. (*Requires 3 IFFTs*). 

   - $\hat{r}(x)$: no need to interpolate
   - $\hat{f_{Mz}}$: need to interpolate $f_{Mz}$ to get coefficients. 
   - $\hat{f_{z}}$: need to interpolate $f_{z}$ to get coefficients. 
   - $M^T\vec{r}$: First evaluate $M^T\vec{r}$ (treating $\vec{r}$ as a vector on $H_1$). Then, interpolate it to get coefficients.  

3. Make virtual oracle $H(x)$: 
   $$
   H(x) = \hat{\vec{r}}(x) \cdot \hat{f_{Mz}}(x) -\hat{M^T\vec{r}} (x)\cdot \hat{f_{z}}(x)
   $$

   - Degree bound is $|H| + \mbox{degree bound of f1, f2}$ ($f_{Mz}, f_{z}$ have same degree bound). 

4. Invoke sumcheck protocol for $H(x)$ with summation domain $H_1$ where claimed sum is $0$. (If $H_2$ is not a subset of $H_1$, then we need to multiply this virtual oracle by vanishing polynomial of $H_2$ to zero out.)

## Something Further

We can run `lincheck` on multiple instances simultaneously, using random linear combination. 