Suponha que exista um algoritmo polytime que forneceu e → a calculou o resultado da multi-linearização de C em → a . (wlog, assumirei que a saída → b será um vetor de números binários p- bits b i é k se b i , k for um.)C( x⃗ )∈F(x⃗ )a⃗ Ca⃗ b⃗ pbikbi,k
Desde , existe um circuito booleano polysize que dada a codificação do circuito aritmético e os valores para as variáveis calcula a multi-linearização do circuito aritmético nas entradas. Vamos chamar esse circuito M .P⊆P/polyM
Seja um circuito aritmético arbitrário. Corrija as variáveis do circuito booleano M que descrevem o circuito aritmético, para que tenhamos um circuito booleano que calcula a multi-linearização de C em determinadas entradas.CMC
Nós podemos transformar este circuito para um circuito aritmético sobre notando que x p - 1 é 1 para todos os valores, mas 0 de maneira que primeiro levantar todas as entradas para a alimentação p - 1 . Substituir cada f ∧ g portão por multiplicação f . g , cada f ∨ g portão por f + g - f . g e cada ¬ f gate por 1 - f .Fpxp−110p−1f∧gf.gf∨gf+g−f.g¬f1−f
Pela suposição que fizemos acima sobre o formato da saída, podemos transformar a saída de binária em valores acima de . Tome a saída para b i e combine-os para obter ∑ 0 ≤ k ≤ p - 1 k b i , k .Fpbi∑0≤k≤p−1kbi,k
Também podemos converter a entrada fornecida como valores acima de para a forma binária, pois existem polinômios passando por qualquer número finito de pontos. Por exemplo, se estamos trabalhando no mod 3 , considere os polinômios 2 x ( x + 1 ) e 2 x ( x + 2 ) que fornecem o primeiro e o segundo bits da entrada x ∈ F 3 .Fpmod32x(x+1)2x(x+2)x∈F3
Combinando estes temos um circuito aritmético sobre computar a multi-linearização de C com tamanho polynomail no tamanho de C .FpCC