@ -9,6 +9,8 @@
\usepackage { xcolor}
\usepackage { xcolor}
\usepackage { pgf-umlsd} % diagrams
\usepackage { pgf-umlsd} % diagrams
\usepackage { centernot}
\usepackage { centernot}
\usepackage { algorithm}
\usepackage { algpseudocode}
% prevent warnings of underfull \hbox :
% prevent warnings of underfull \hbox :
@ -48,15 +50,16 @@
\section { CCS}
\section { CCS}
\subsection { R1CS to CCS overview}
\subsection { R1CS to CCS overview}
\begin { itemize}
\item [] R1CS instance: $ S _ { R 1 CS } = ( m, n, N, l, A, B, C ) $
\item [] CCS instance: $ S _ { CCS } = ( m, n, N, l, t, q, d, M, S, c ) $
\item [] R1CS-to-CCS parameters:\\
$ n = n,~ m = m,~ N = N,~ l = l,~ t = 3 ,~ q = 2 ,~ d = 2 $ \\
$ M = \{ A,B,C \} $ , $ S = \{ \{ 0 ,~ 1 \} ,~ \{ 2 \} \} $ , $ c = \{ 1 , - 1 \} $
\end { itemize}
\begin { description}
\item [R1CS instance] $ S _ { R 1 CS } = ( m, n, N, l, A, B, C ) $ \\
where $ m, n $ are such that $ A \in \mathbb { F } ^ { m \times n } $ , and $ l $ such that the public inputs $ x \in \mathbb { F } ^ l $ . Also $ z = ( w, 1 , x ) \in \mathbb { F } ^ n $ , thus $ w \in \mathbb { F } ^ { n - l - 1 } $ .
\item [CCS instance] $ S _ { CCS } = ( m, n, N, l, t, q, d, M, S, c ) $ \\
where we have the same parameters than in $ S _ { R 1 CS } $ , but additionally:\\
$ t = |M| $ , $ q = |c| = |S| $ , $ d $ = max degree in each variable.
\item [R1CS-to-CCS parameters] $ n = n,~ m = m,~ N = N,~ l = l,~ t = 3 ,~ q = 2 ,~ d = 2 $ , $ M = \{ A,B,C \} $ , $ S = \{ \{ 0 ,~ 1 \} ,~ \{ 2 \} \} $ , $ c = \{ 1 , - 1 \} $
\end { description}
Then, we can see that the CCS relation:
The CCS relation check :
$$ \sum _ { i = 0 } ^ { q - 1 } c _ i \cdot \bigcirc _ { j \in S _ i } M _ j \cdot z = = 0 $$
$$ \sum _ { i = 0 } ^ { q - 1 } c _ i \cdot \bigcirc _ { j \in S _ i } M _ j \cdot z = = 0 $$
where $ z = ( w, 1 , x ) \in \mathbb { F } ^ n $ .
where $ z = ( w, 1 , x ) \in \mathbb { F } ^ n $ .
@ -97,31 +100,38 @@ Sat if:
\section { Multifolding Scheme for CCS}
\section { Multifolding Scheme for CCS}
Recall sum-check protocol:\\
\underline { $ C \leftarrow <P, V ( r ) > ( g, l, d, T ) $ } :\\ % TODO use proper <, >
$ T = \sum _ { x _ 1 \in \{ 0 , 1 \} } \sum _ { x _ 2 \in \{ 0 , 1 \} } \cdots \sum _ { x _ l \in \{ 0 , 1 \} } g ( x _ 1 , x _ 2 , \ldots , x _ l ) $
$ l $ -variate polynomial g, degree $ \leq d $ in each variable.
Recall sum-check protocol notation: \underline { $ C \leftarrow \langle P, V ( r ) \rangle ( g, l, d, T ) $ } :
$$ T = \sum _ { x _ 1 \in \{ 0 , 1 \} } \sum _ { x _ 2 \in \{ 0 , 1 \} } \cdots \sum _ { x _ l \in \{ 0 , 1 \} } g ( x _ 1 , x _ 2 , \ldots , x _ l ) $$
where $ g $ is a $ l $ -variate polynomial, with degree at most $ d $ in each variable, and $ T $ is the claimed value.
let $ s = \log m,~ s' = \log n $ .
\vspace { 1cm}
Let $ s = \log m,~ s' = \log n $ .
\begin { enumerate}
\begin { enumerate}
\item $ V \rightarrow P: \gamma \in ^ R \mathbb { F } ,~ \beta \in ^ R \mathbb { F } ^ s $
\item $ V \rightarrow P: \gamma \in ^ R \mathbb { F } ,~ \beta \in ^ R \mathbb { F } ^ s $
\item $ V: r _ x' \in ^ R \mathbb { F } ^ s $
\item $ V: r _ x' \in ^ R \mathbb { F } ^ s $
\item $ V \leftrightarrow P $ : sum-check protocol:\\
$$ c \leftarrow < P, V ( r _ x' ) > ( g, s, d + 1 , \sum _ { j \in [ t ] } \gamma ^ j \cdot v _ j ) $$
where:\\
\item $ V \leftrightarrow P $ : sum-check protocol:
$$ c \leftarrow \langle P, V( r _ x' ) \rangle ( g, s, d + 1 , \overbrace { \ sum _ { j \in [ t ] } \gamma ^ j \cdot v _ j } ^ \text { T } ) $$
where:
\begin { align*}
\begin { align*}
g(x) & := \left ( \sum _ { j \in [t]} \gamma ^ j \cdot L_ j(x) \right ) + \gamma ^ { t+1} \cdot Q(x)\\
g(x) & := \left ( \sum _ { j \in [t]} \gamma ^ j \cdot L_ j(x) \right ) + \gamma ^ { t+1} \cdot Q(x)\\
L_ j(x) & := \widetilde { eq} (r_ x, x) \cdot \left ( \sum _ { y \in \{ 0,1\} ^ { s'} } \widetilde { M} _ j(x, y) \cdot \widetilde { z} _ 1(y) \right )\\
Q(x) & := \widetilde { eq} (\beta , x) \cdot \left ( \sum _ { i=1} ^ q c_ i \cdot \prod _ { j \in S_ i} \left ( \sum _ { y \in \{ 0, 1\} ^ { s'} } \widetilde { M} _ j(x, y) \cdot \widetilde { z} _ 2(y) \right ) \right )
\text { for LCCCS:} ~ L_ j(x) & := \widetilde { eq} (r_ x, x) \cdot \left (
\underbrace { \sum _ { y \in \{ 0,1\} ^ { s'} } \widetilde { M} _ j(x, y) \cdot \widetilde { z} _ 1(y)} _ \text { this is the check from LCCCS}
\right )\\
\text { for CCCS:} ~ Q(x) := & \widetilde { eq} (\beta , x) \cdot \left (
\underbrace { \sum _ { i=1} ^ q c_ i \cdot \prod _ { j \in S_ i} \left ( \sum _ { y \in \{ 0, 1\} ^ { s'} } \widetilde { M} _ j(x, y) \cdot \widetilde { z} _ 2(y) \right ) } _ \text { this is the check from CommittedCCS}
\right )
\end { align*}
\end { align*}
\item $ P \rightarrow V $ : $ \left ( ( \sigma _ 1 , \ldots , \sigma _ t ) , ( \theta _ 1 , \ldots , \theta _ t ) \right ) $
where
$$ \sigma _ j = \sum _ { y \in \{ 0 , 1 \} ^ { s' } } \widetilde { M } _ j ( x, y ) \cdot \widetilde { z } _ 1 ( y ) $$
$$ \theta _ j = \sum _ { y \in \{ 0 , 1 \} ^ { s' } } \widetilde { M } _ j ( x, y ) \cdot \widetilde { z } _ 2 ( y ) $$
Notice that $ v _ j = \sum _ { y \in \{ 0 , 1 \} ^ { s' } } \widetilde { M } _ j ( r, y ) \cdot \widetilde { z } ( y ) = \sum _ { x \in \{ 0 , 1 \} ^ s } L _ j ( x ) $ .
\item $ P \rightarrow V $ : $ \left ( ( \sigma _ 1 , \ldots , \sigma _ t ) , ( \theta _ 1 , \ldots , \theta _ t ) \right ) $ , where $ \forall j \in [ t ] $ ,
$$ \sigma _ j = \sum _ { y \in \{ 0 , 1 \} ^ { s' } } \widetilde { M } _ j ( r _ x', y ) \cdot \widetilde { z } _ 1 ( y ) $$
$$ \theta _ j = \sum _ { y \in \{ 0 , 1 \} ^ { s' } } \widetilde { M } _ j ( r _ x', y ) \cdot \widetilde { z } _ 2 ( y ) $$
where $ \sigma _ j,~ \theta _ j $ are the checks from LCCCS and CCCS respectively with $ x = r _ x' $ .
\item V: $ e _ 1 \leftarrow \widetilde { eq } ( r _ x, r _ x' ) $ , $ e _ 2 \leftarrow \widetilde { eq } ( \beta , r _ x' ) $ \\
\item V: $ e _ 1 \leftarrow \widetilde { eq } ( r _ x, r _ x' ) $ , $ e _ 2 \leftarrow \widetilde { eq } ( \beta , r _ x' ) $ \\
check:
check:
$$ c = \left ( \sum _ { j \in [ t ] } \gamma ^ j e _ 1 \sigma _ j + \gamma ^ { t + 1 } e _ 2 \left ( \sum _ { i = 1 } ^ q c _ i \cdot \prod _ { j \in S _ i } \sigma \right ) \right ) $$
$$ c = \left ( \sum _ { j \in [ t ] } \gamma ^ j e _ 1 \sigma _ j + \gamma ^ { t + 1 } e _ 2 \left ( \sum _ { i = 1 } ^ q c _ i \cdot \prod _ { j \in S _ i } \sigma \right ) \right ) $$
which should be equivalent to the $ g ( x ) $ computed by $ V,P $ in the sum-check protocol.
\item $ V \rightarrow P: \rho \in ^ R \mathbb { F } $
\item $ V \rightarrow P: \rho \in ^ R \mathbb { F } $
\item $ V, P $ : output the folded LCCCS instance $ ( C', u', \mathsf { x } ', r _ x', v _ 1 ', \ldots , v _ t' ) $ , where $ \forall i \in [ t ] $ :
\item $ V, P $ : output the folded LCCCS instance $ ( C', u', \mathsf { x } ', r _ x', v _ 1 ', \ldots , v _ t' ) $ , where $ \forall i \in [ t ] $ :
\begin { align*}
\begin { align*}
@ -134,6 +144,72 @@ let $s= \log m,~ s'= \log n$.
\end { enumerate}
\end { enumerate}
% % % % % % APPENDIX
\appendix
\section { Appendix: Some details}
This appendix contains some notes on things that don't specifically appear in the paper, but that would be needed in a practical implementation of the scheme.
\subsection { Matrix and Vector to Sparse Multilinear Extension}
Let $ M \in \mathbb { F } ^ { m \times n } $ be a matrix. We want to compute its MLE
$$ \widetilde { M } ( x _ 1 , \ldots , x _ l ) = \sum _ { e \in \{ 0 , 1 \} ^ l } M ( e ) \cdot \widetilde { eq } ( x, e ) $$
We can view the matrix $ M \in \mathbb { F } ^ { m \times n } $ as a function with the following signature:
$$ M ( \cdot ) : \{ 0 , 1 \} ^ s \times \{ 0 , 1 \} ^ { s' } \rightarrow \mathbb { F } $$
where $ s = \lceil \log m \rceil ,~ s' = \lceil \log n \rceil $ .
An entry in $ M $ can be accessed with a $ ( s + s' ) $ -bit identifier.
eg.:
$$
M = \begin { pmatrix}
1 & 2 & 3\\
4 & 5 & 6\\
\end { pmatrix}
\in \mathbb { F} ^ { 3 \times 2}
$$
$ m = 3 ,~ n = 2 ,~~~ s = \lceil \log 3 \rceil = 2 ,~ s' = \lceil \log 2 \rceil = 1 $
So, $ M ( s _ 0 , s _ 1 ) = x $ , where $ s _ 0 \in \{ 0 , 1 \} ^ s,~ s _ 1 \in \{ 0 , 1 \} ^ { s' } ,~ x \in \mathbb { F } $
$$
M = \begin { pmatrix}
M(00,0) & M(01,0) & M(10,0)\\
M(00,1) & M(01,1) & M(10,1)\\
\end { pmatrix}
\in \mathbb { F} ^ { 3 \times 2}
$$
This logic can be defined as follows:
\begin { algorithm} [H]
\caption { Generating a Sparse Multilinear Polynomial from a matrix}
\begin { algorithmic}
\State set empty vector $ v \in ( \text { index: } ~ \mathbb { Z } , x: \mathbb { F } ) ^ { s \times s' } $
\For { $ i $ to $ n $ }
\For { $ j $ to $ m $ }
\If { $ M _ { i,j } \neq 0 $ }
\State $ v. \text { append } ( \{ \text { index } : i \cdot m + j,~ x: M _ { i,j } \} ) $
\EndIf
\EndFor
\EndFor
\State return $ v $ \Comment { $ v $ represents the evaluations of the polynomial}
\end { algorithmic}
\end { algorithm}
Once we have the polynomial, its MLE comes from
$$ \widetilde { M } ( x _ 1 , \ldots , x _ { s + s' } ) = \sum _ { e \in \{ 0 , 1 \} ^ { s + s' } } M ( e ) \cdot \widetilde { eq } ( x, e ) $$
$$ M ( X ) \in \mathbb { F } [ X _ 1 , \ldots , X _ s ] $$
\paragraph { Multilinear extensions of vectors}
Given a vector $ u \in \mathbb { F } ^ m $ , the polynomial $ \widetilde { u } $ is the MLE of $ u $ , and is obtained by viewing $ u $ as a function mapping ($ s = \log m $ )
$$ u ( x ) : \{ 0 , 1 \} ^ s \rightarrow \mathbb { F } $$
$ \widetilde { u } ( x, e ) $ is the multilinear extension of the function $ u ( x ) $
$$ \widetilde { u } ( x _ 1 , \ldots , x _ s ) = \sum _ { e \in \{ 0 , 1 \} ^ s } u ( e ) \cdot \widetilde { eq } ( x, e ) $$
\bibliography { paper-notes.bib}
\bibliography { paper-notes.bib}
\bibliographystyle { unsrt}
\bibliographystyle { unsrt}