[[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)$