# Rational Sumcheck

\begin{aligned} c = \sum_{x\in H} \frac{\textcolor{lightgreen}{p(X)}}{\textcolor{orange}{q(X)}} \end{aligned}
• Polynomial functions:
• $$f(X) = c_0 + c_1X + \dots c_nX^n$$
• Rational functions:
• $$r(X) = \frac{\textcolor{lightgreen}{p(X)}}{\textcolor{orange}{q(X)}}$$
• Generally, a rational function is not a polynomial function
• Therefore, we cannot directly apply the sumcheck protocol
• There is a workaround though:

# Rational Sumcheck

• Define a polynomial $$f(X)$$ such that
\begin{aligned} \forall x\in H, \quad f(x) := \frac{\textcolor{lightgreen}{p(x)}}{\textcolor{orange}{q(x)}}. \end{aligned}
• Then we can compute $$g(X)$$ and $$h(X)$$ such that:
\begin{aligned} f(X) = X\textcolor{red}{g(X)} + \frac{\sigma}{|H|} \end{aligned}
\begin{aligned} f(X) \cdot q(X) - p(X) = \textcolor{red}{h(X)}v_H(X) \end{aligned}

$$\longleftarrow$$ Classic Aurora sumcheck

$$\longleftarrow$$ Quotient check

• Prover cost: $$\mathcal{O}(N\cdot \text{log}(N))$$ where $$N = |H|$$
• Can we do better?

# Sumcheck

x_1
x_2
x_3
x_1
x_2
x_3
• Round polynomial:  $$r_i(X) = \textcolor{lightgreen}{f_{\text{lo}}}(1-X) + \textcolor{red}{f_{\text{hi}}}X$$
• Challenge: $$\alpha_i = H(r_i)$$

# Sumcheck

x_1
x_2
x_3
x_1
x_2
• Round polynomial:  $$r_i(X) = \textcolor{lightgreen}{f_{\text{lo}}}(1-X) + \textcolor{red}{f_{\text{hi}}}X$$
• Challenge: $$\alpha_i = H(r_i)$$

# Sumcheck

x_1
x_2
x_3
x_1
x_2
x_1
x_2
• Round polynomial:  $$r_i(X) = \textcolor{lightgreen}{f_{\text{lo}}}(1-X) + \textcolor{red}{f_{\text{hi}}}X$$
• Challenge: $$\alpha_i = H(r_i)$$

# Sumcheck

x_1
x_2
x_3
x_1
x_2
x_1
• Round polynomial:  $$r_i(X) = \textcolor{lightgreen}{f_{\text{lo}}}(1-X) + \textcolor{red}{f_{\text{hi}}}X$$
• Challenge: $$\alpha_i = H(r_i)$$

# Sumcheck

x_1
x_2
x_3
x_1
x_2
x_1
• Round polynomial:  $$r_i(X) = \textcolor{lightgreen}{f_{\text{lo}}}(1-X) + \textcolor{red}{f_{\text{hi}}}X$$
• Challenge: $$\alpha_i = H(r_i)$$

# Sumcheck

x_1
x_2
x_3
x_1
x_2
x_1
• Round polynomial:  $$r_i(X) = \textcolor{lightgreen}{f_{\text{lo}}}(1-X) + \textcolor{red}{f_{\text{hi}}}X$$
• Challenge: $$\alpha_i = H(r_i)$$
2^3
2^2
2^1

Dimensionality reduction!

# Rethinking Rational Sumcheck

\begin{aligned} \frac{\textcolor{orange}{p_1}}{\textcolor{lightgreen}{q_1}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_2}}{\textcolor{lightgreen}{q_2}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_3}}{\textcolor{lightgreen}{q_3}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_4}}{\textcolor{lightgreen}{q_4}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_5}}{\textcolor{lightgreen}{q_5}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_6}}{\textcolor{lightgreen}{q_6}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_7}}{\textcolor{lightgreen}{q_7}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_8}}{\textcolor{lightgreen}{q_8}} \end{aligned}
+
+
+
+
+
+
+
\begin{aligned} \frac{\textcolor{orange}{p_1}\textcolor{lightgreen}{q_2} + \textcolor{orange}{p_2}\textcolor{lightgreen}{q_1}}{\textcolor{lightgreen}{q_1q_2}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_3}\textcolor{lightgreen}{q_4} + \textcolor{orange}{p_4}\textcolor{lightgreen}{q_3}}{\textcolor{lightgreen}{q_3q_4}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_5}\textcolor{lightgreen}{q_6} + \textcolor{orange}{p_6}\textcolor{lightgreen}{q_5}}{\textcolor{lightgreen}{q_5q_6}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_7}\textcolor{lightgreen}{q_8} + \textcolor{orange}{p_8}\textcolor{lightgreen}{q_7}}{\textcolor{lightgreen}{q_7q_8}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_1}\textcolor{lightgreen}{q_2q_3q_4} + \textcolor{orange}{p_2}\textcolor{lightgreen}{q_1q_3q_4} + \textcolor{orange}{p_3}\textcolor{lightgreen}{q_1q_2q_4} + \textcolor{orange}{p_4}\textcolor{lightgreen}{q_1q_2q_3}}{ \textcolor{lightgreen}{q_1q_2q_3q_4}} \end{aligned}
\begin{aligned} \frac{\textcolor{orange}{p_5}\textcolor{lightgreen}{q_6q_7q_8} + \textcolor{orange}{p_6}\textcolor{lightgreen}{q_5q_7q_8} + \textcolor{orange}{p_7}\textcolor{lightgreen}{q_5q_6q_8} + \textcolor{orange}{p_8}\textcolor{lightgreen}{q_5q_6q_7}}{ \textcolor{lightgreen}{q_5q_6q_7q_8}} \end{aligned}
\begin{aligned} \frac{ \textcolor{orange}{p_1}\textcolor{lightgreen}{q_2q_3\dots q_8} + \textcolor{orange}{p_2}\textcolor{lightgreen}{q_1q_3 \dots q_8} + \textcolor{orange}{p_3}\textcolor{lightgreen}{q_1q_2 \dots q_8} + \textcolor{orange}{p_4}\textcolor{lightgreen}{q_1q_2 \dots q_8} + \textcolor{orange}{p_5}\textcolor{lightgreen}{q_1q_2\dots q_8} + \textcolor{orange}{p_6}\textcolor{lightgreen}{q_1q_2 \dots q_8} + \textcolor{orange}{p_7}\textcolor{lightgreen}{q_1q_2 \dots q_8} + \textcolor{orange}{p_8}\textcolor{lightgreen}{q_1q_2 \dots q_8} }{ \textcolor{lightgreen}{q_1q_2q_3q_4q_5q_6q_7q_8}} \end{aligned}
2^3
2^2
2^1

# GKR Circuit

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

$$+/\times$$ gates

*
: \left( (\textcolor{orange}{p_1}, \textcolor{lightgreen}{q_1}), \ (\textcolor{orange}{p_2}, \textcolor{lightgreen}{q_2}) \right) \longrightarrow (\textcolor{orange}{p_1}\textcolor{lightgreen}{q_2} + \textcolor{orange}{p_2}\textcolor{lightgreen}{q_1})
\longleftarrow \text{numerator}
\#
: \left( (\textcolor{orange}{p_1}, \textcolor{lightgreen}{q_1}), \ (\textcolor{orange}{p_2}, \textcolor{lightgreen}{q_2}) \right) \longrightarrow (\textcolor{lightgreen}{q_2}\textcolor{lightgreen}{q_1})
\longleftarrow \text{denominator}

# Recall logUp

\begin{aligned} \textsf{lhs} =&\ (\textcolor{brown}{\beta} + f_1)(\textcolor{brown}{\beta} + f_2)(\textcolor{brown}{\beta} + f_3) \dots(\textcolor{brown}{\beta} + f_{18})(\textcolor{brown}{\beta} + f_{19}) \\ =&\ \prod_{i=1}^{n} (\textcolor{brown}{\beta} + f_i) \end{aligned}
\begin{aligned} \textsf{rhs} =&\ (\textcolor{brown}{\beta} + t_1)^4 (\textcolor{brown}{\beta} + t_2)^2 (\textcolor{brown}{\beta} + t_3)^4 (\textcolor{brown}{\beta} + t_4)^2 (\textcolor{brown}{\beta} + t_5)^1 (\textcolor{brown}{\beta} + t_6)^3 (\textcolor{brown}{\beta} + t_7)^3\\ =&\ \prod_{i=1}^{N} (\textcolor{brown}{\beta} + t_i)^{m_i} \end{aligned}
\implies \prod_{j=1}^{n} (\textcolor{brown}{\beta} + f_j) = \prod_{i=1}^{N} (\textcolor{brown}{\beta} + t_i)^{m_i}
\implies \sum_{j=1}^{n} \text{log}(\textcolor{brown}{\beta} + f_j) = \sum_{i=1}^{N} m_i \cdot \text{log}(\textcolor{brown}{\beta} + t_i)
\implies \begin{aligned} \sum_{j=1}^{n} \frac{1}{(\textcolor{brown}{\beta} + f_j)} = \sum_{i=1}^{N} \frac{m_i}{(\textcolor{brown}{\beta} + t_i)} \end{aligned}
\underbrace{\hspace{13.4cm}}_{}
\underbrace{\hspace{4.9cm}}_{}

Table

Values

(\textcolor{brown}{\beta} + t_1)
(\textcolor{brown}{\beta} + t_2)
(\textcolor{brown}{\beta} + t_3)
(\textcolor{brown}{\beta} + t_4)
(\textcolor{brown}{\beta} + t_5)
(\textcolor{brown}{\beta} + t_6)
(\textcolor{brown}{\beta} + t_7)
(\textcolor{brown}{\beta} + f_1)
(\textcolor{brown}{\beta} + f_2)
(\textcolor{brown}{\beta} + f_3)
(\textcolor{brown}{\beta} + f_4)
(\textcolor{brown}{\beta} + f_5)
(\textcolor{brown}{\beta} + f_6)
(\textcolor{brown}{\beta} + f_7)
(\textcolor{brown}{\beta} + f_8)
(\textcolor{brown}{\beta} + f_9)
(\textcolor{brown}{\beta} + f_{10})
(\textcolor{brown}{\beta} + f_{11})
(\textcolor{brown}{\beta} + f_{12})
(\textcolor{brown}{\beta} + f_{13})
(\textcolor{brown}{\beta} + f_{14})
(\textcolor{brown}{\beta} + f_{15})
(\textcolor{brown}{\beta} + f_{16})
(\textcolor{brown}{\beta} + f_{17})
(\textcolor{brown}{\beta} + f_{18})
(\textcolor{brown}{\beta} + f_{19})

# Recall logUp

\implies \begin{aligned} \sum_{j=1}^{n} \frac{1}{(\textcolor{brown}{\beta} + f_j)} = \sum_{i=1}^{N} \frac{m_i}{(\textcolor{brown}{\beta} + t_i)} \end{aligned}

Table

Values

(\textcolor{brown}{\beta} + t_1)
(\textcolor{brown}{\beta} + t_2)
(\textcolor{brown}{\beta} + t_3)
(\textcolor{brown}{\beta} + t_4)
(\textcolor{brown}{\beta} + t_5)
(\textcolor{brown}{\beta} + t_6)
(\textcolor{brown}{\beta} + t_7)
(\textcolor{brown}{\beta} + f_1)
(\textcolor{brown}{\beta} + f_2)
(\textcolor{brown}{\beta} + f_3)
(\textcolor{brown}{\beta} + f_4)
(\textcolor{brown}{\beta} + f_5)
(\textcolor{brown}{\beta} + f_6)
(\textcolor{brown}{\beta} + f_7)
(\textcolor{brown}{\beta} + f_8)
(\textcolor{brown}{\beta} + f_9)
(\textcolor{brown}{\beta} + f_{10})
(\textcolor{brown}{\beta} + f_{11})
(\textcolor{brown}{\beta} + f_{12})
(\textcolor{brown}{\beta} + f_{13})
(\textcolor{brown}{\beta} + f_{14})
(\textcolor{brown}{\beta} + f_{15})
(\textcolor{brown}{\beta} + f_{16})
(\textcolor{brown}{\beta} + f_{17})
(\textcolor{brown}{\beta} + f_{18})
(\textcolor{brown}{\beta} + f_{19})
• In most cases: $$N \gg n$$, so we can write:
\implies \begin{aligned} \sum_{j=1}^{n} \frac{1}{(\textcolor{brown}{\beta} + f_j)} = \sum_{j=1, m_{i_j} \neq 0}^{n} \frac{m_{i_j}}{(\textcolor{brown}{\beta} + t_{i_j})} \end{aligned}
\implies \begin{aligned} \sum_{\vec{x}\in H_n} \left( \frac{m(\vec{x})}{(\textcolor{brown}{\beta} + t(\vec{x}))} - \frac{1}{(\textcolor{brown}{\beta} + f(\vec{x}))} \right) = 0 \end{aligned}
\implies \begin{aligned} \sum_{\vec{x}\in H_n} \left( m(\vec{x})\textcolor{red}{h(\vec{x})} - \textcolor{red}{h_1(\vec{x})} \right) = 0 \end{aligned}
• Prover has to send helpers $$h(X), h_1(X)$$

# Recall logUp

Table

Values

(\textcolor{brown}{\beta} + t_1)
(\textcolor{brown}{\beta} + t_2)
(\textcolor{brown}{\beta} + t_3)
(\textcolor{brown}{\beta} + t_4)
(\textcolor{brown}{\beta} + t_5)
(\textcolor{brown}{\beta} + t_6)
(\textcolor{brown}{\beta} + t_7)
(\textcolor{brown}{\beta} + f_1)
(\textcolor{brown}{\beta} + f_2)
(\textcolor{brown}{\beta} + f_3)
(\textcolor{brown}{\beta} + f_4)
(\textcolor{brown}{\beta} + f_5)
(\textcolor{brown}{\beta} + f_6)
(\textcolor{brown}{\beta} + f_7)
(\textcolor{brown}{\beta} + f_8)
(\textcolor{brown}{\beta} + f_9)
(\textcolor{brown}{\beta} + f_{10})
(\textcolor{brown}{\beta} + f_{11})
(\textcolor{brown}{\beta} + f_{12})
(\textcolor{brown}{\beta} + f_{13})
(\textcolor{brown}{\beta} + f_{14})
(\textcolor{brown}{\beta} + f_{15})
(\textcolor{brown}{\beta} + f_{16})
(\textcolor{brown}{\beta} + f_{17})
(\textcolor{brown}{\beta} + f_{18})
(\textcolor{brown}{\beta} + f_{19})
\implies \begin{aligned} \sum_{\vec{x}\in H_n} \left( m(\vec{x})\textcolor{red}{h(\vec{x})} - \textcolor{red}{h_1(\vec{x})} \right) = 0 \end{aligned}

# Recall logUp

Table

(\textcolor{brown}{\beta} + t_1)
(\textcolor{brown}{\beta} + t_2)
(\textcolor{brown}{\beta} + t_3)
(\textcolor{brown}{\beta} + t_4)
(\textcolor{brown}{\beta} + t_5)
(\textcolor{brown}{\beta} + t_6)
(\textcolor{brown}{\beta} + t_7)
(\textcolor{brown}{\beta} + f_1)
(\textcolor{brown}{\beta} + f_2)
(\textcolor{brown}{\beta} + f_3)
(\textcolor{brown}{\beta} + f_4)
(\textcolor{brown}{\beta} + f_5)
(\textcolor{brown}{\beta} + f_6)
(\textcolor{brown}{\beta} + f_7)
(\textcolor{brown}{\beta} + f_8)
(\textcolor{brown}{\beta} + f_9)
(\textcolor{brown}{\beta} + f_{10})
(\textcolor{brown}{\beta} + f_{11})
(\textcolor{brown}{\beta} + f_{12})
(\textcolor{brown}{\beta} + f_{13})
(\textcolor{brown}{\beta} + f_{14})
(\textcolor{brown}{\beta} + f_{15})
(\textcolor{brown}{\beta} + f_{16})
(\textcolor{brown}{\beta} + f_{17})
(\textcolor{brown}{\beta} + f_{18})
(\textcolor{brown}{\beta} + f_{19})
\implies \begin{aligned} \sum_{\vec{x}\in H_n} \left( m(\vec{x})\textcolor{red}{h(\vec{x})} - \textcolor{red}{h_1(\vec{x})} \right) = 0 \end{aligned}

Values

\textcolor{red}{h_1(\vec{x})} + \textcolor{red}{h_2(\vec{x})}
\textcolor{red}{h_1(\vec{x})} + \textcolor{red}{h_2(\vec{x})} + \textcolor{red}{h_3(\vec{x})}
\textcolor{red}{h_1(\vec{x})}+ \textcolor{red}{h_2(\vec{x})}+ \textcolor{red}{h_3(\vec{x})}+ \textcolor{red}{h_4(\vec{x})}
\implies \begin{aligned} \sum_{\vec{x}\in H_n} \left( m(\vec{x})\textcolor{red}{h(\vec{x})} - \textcolor{red}{\sum_{j=1}^{M}h_j(\vec{x})} \right) = 0 \end{aligned}
• Prover has to send helpers $$m+1$$ helpers
• Idea: Use GKR to do rational sumcheck!

# GKR-logUp

\implies \begin{aligned} \sum_{\vec{x}\in H_n} \left( \frac{m(\vec{x})}{(\textcolor{brown}{\beta} + t(\vec{x}))} - \sum_{j=1}^{M} \frac{1}{(\textcolor{brown}{\beta} + f_j(\vec{x}))} \right) = 0 \end{aligned}
\implies \begin{aligned} \frac{m(0)}{(\textcolor{brown}{\beta} + t(0))} + \frac{m(1)}{(\textcolor{brown}{\beta} + t(1))} + \dots + \frac{m(2^n-1)}{(\textcolor{brown}{\beta} + t(2^n-1))} + \end{aligned}
\begin{aligned} \frac{-1}{(\textcolor{brown}{\beta} + f_1(0))} + \frac{-1}{(\textcolor{brown}{\beta} + f_1(1))} + \dots + \frac{-1}{(\textcolor{brown}{\beta} + f_1(2^n-1))} + \end{aligned}
\begin{aligned} \frac{-1}{(\textcolor{brown}{\beta} + f_2(0))} + \frac{-1}{(\textcolor{brown}{\beta} + f_2(1))} + \dots + \frac{-1}{(\textcolor{brown}{\beta} + f_2(2^n-1))} + \end{aligned}
\begin{aligned} \frac{-1}{(\textcolor{brown}{\beta} + f_M(0))} + \frac{-1}{(\textcolor{brown}{\beta} + f_M(1))} + \dots + \frac{-1}{(\textcolor{brown}{\beta} + f_M(2^n-1))}. \end{aligned}
\vdots
\underbrace{\hspace{7cm}}{}
2^n(1 + M) \text{ terms}
2^{n+k} \text{ rational sumcheck}
\implies

# Summary

• Prover has only 1 extra commitment: the multiplicities polynomial $$m(\vec{x})$$
• Cost of rational sumcheck is $$\mathcal{O}(N\cdot M)$$ due to GKR trick
• Possible research directions:

• 59