---
# System prepended metadata

title: generalize-libra-sumcheck-to-c-phases

---

[[xzz-2019-libra]]

section 3.3.3

$\sum_{x_1, x_2, ..., x_c \in \{0,1\}^l} f_0(g, x_1, x_2, ..., x_c)f_1(x_1)f_2(x_2)...f_c(x_c)$

general idea
- each phase should have just one variable after partially evaluating already known variables. 

example
- $\sum_{x_1,x_2,x_3,x_4 \in \{0,1\}^l} f_0(g, x_1, x_2, x_3, x_4)f_1(x_1)f_2(x_2)f_3(x_3)f_4(x_4)$

- phase 1 poly
	- polynomial with constant $G$ and variable $x_1$
	- $\sum_{x_1 \in \{0,1\}^l} f_1(x_1) \cdot \sum_{x_2,x_3,x_4 \in \{0,1\}^l} f_0(G,x_1,x_2,x_3,x_4)f_2(x_2)f_3(x_3)f_4(x_4)$
	- replace second operand with $h_{G}(x_1)$
	- so $h_G(x_1) = \sum_{x_2,x_3,x_4 \in \{0,1\}^l} f_0(G,x_1,x_2,x_3,x_4)f_2(x_2)f_3(x_3)f_4(x_4)$ 
	- phase 1 poly = $\sum_{x_1 \in \{0,1\}^l} f_1(x_1) \cdot h_G(x_1)$

- phase 2 poly
	- polynomial with constants $G, X1$ and variable $x_2$ 
	- $f_1(X1) \cdot \sum_{x_2 \in \{0,1\}^l} f_2(x_2) \cdot \sum_{x_3,x_4 \in \{0,1\}^l} f_0(G,X1,x_2,x_3,x_4)f_3(x_3)f_4(x_4)$
	- replace second operand with $h_{G,X1}(x_2)$ 
	- $h_{G,X1}(x_2) = \sum_{x_3,x_4 \in \{0,1\}^l} f_0(G,X1,x_2,x_3,x_4)f_3(x_3)f_4(x_4)$
	- phase 2 poly = $f_1(X1) \cdot \sum_{x_2 \in \{0,1\}^l} f_2(x_2) \cdot h_{G,X1}(x_2)$ 

- phase 3 poly
	- polynomial with constants $G, X1, X2$ and variable $x_3$ 
	- $f_1(X1) \cdot f_2(X2) \cdot \sum_{x_3 \in \{0,1\}^l} f_3(x_3) \cdot \sum_{x_4 \in \{0,1\}^l} f_0(G,X1,X2,x_3,x_4)f_4(x_4)$
	- replace second operand with $h_{G,X1,X2}(x_3)$ 
	- $h_{G,X1,X2}(x_3) = \sum_{x_4 \in \{0,1\}^l} f_0(G,X1,X2,x_3,x_4)f_4(x_4)$
	- phase 2 poly = $f_1(X1) \cdot f_2(X2) \cdot \sum_{x_3 \in \{0,1\}^l} f_3(x_3) \cdot h_{G,X1,X2}(x_3)$ 

- phase 4 poly
	- polynomial with constants $G, X1, X2, X3$ and variable $x_4$
	- phase 4 poly = $f_1(X1) \cdot f_2(X2) \cdot f_3(X3) \cdot \sum_{x_4 \in \{0,1\}^l} f_0(G,X1,X2,X3,x_4)f_4(x_4)$