Suponga que hay un algoritmo de polytime que dado y → a calculó el resultado de la linealización múltiple de C en → a . (wlog Asumiré que la salida → b será un vector de números binarios de p bits b i es k si f b i , k es uno).C(x⃗ )∈F(x⃗ )a⃗ Ca⃗ b⃗ pbikbi,k
Dado que , existe un circuito booleano polisizado que, dada la codificación del circuito aritmético, y los valores de las variables calculan la multilinealización del circuito aritmético en las entradas. Llamemos a este circuito MP⊆P/polyM .
Sea un circuito aritmético arbitrario. Arregle las variables del circuito booleano M que describen el circuito aritmético, por lo que tenemos un circuito booleano que calcula la multilinealización de CCMC en entradas dadas.
Podemos convertir este circuito en un circuito aritmético sobre al observar que x p - 1 es 1 para todos los valores, pero 0, por lo que primero eleva todas las entradas a la potencia p - 1 . Reemplazar cada f ∧ g puerta por multiplicación f . g , cada puerta f ∨ g por f + g - f . g y cada ¬ f puerta por 1 - f .Fpxp−110p−1f∧gf.gf∨gf+g−f.g¬f1−f
Por el supuesto que hicimos anteriormente sobre el formato de la salida, podemos convertir la salida de binario a valores sobre . Tome la salida para b i y combínelos para obtener ∑ 0 ≤ k ≤ p - 1 k b i , kFpbi∑0≤k≤p−1kbi,k .
También podemos convertir la entrada dada como valores sobre en forma binaria ya que hay polinomios que pasan por cualquier número finito de puntos. Por ejemplo, si estamos trabajando en mod 3 , considere los polinomios 2 x ( x + 1 ) y 2 x ( x + 2 ) que dan el primer y el segundo bit de la entrada x ∈ F 3 .Fpmod32x(x+1)2x(x+2)x∈F3
La combinación de estos tenemos un circuito aritmético sobre cálculo de la multi-linealización de C con polynomail tamaño en el tamaño de C .FpCC