Asumsikan ada algoritma polytime yang memberikan C ( → x ) ∈ F ( → x ) dan → a yang menghitung hasil multi-linierisasi C pada → a . (wlog Saya akan berasumsi bahwa output → b akan menjadi vektor p- bit angka biner b i adalah k iff the b i , k adalah satu.)C(x⃗ )∈F(x⃗ )a⃗ Ca⃗ b⃗ pbikbi,k
Karena P ⊆ P / p o l y , ada sirkuit bsi polias yang memberikan pengkodean sirkuit aritmatika dan nilai-nilai untuk variabel menghitung multi-linierisasi dari rangkaian aritmatika pada input. Membiarkan memanggil sirkuit ini M .P⊆P/polyM
Biarkan C menjadi sirkuit aritmatika yang arbitrer. Perbaiki variabel dari rangkaian boolean M yang menggambarkan rangkaian aritmatika, jadi kami memiliki sirkuit boolean yang menghitung multi-linierisasi C pada input yang diberikan.CMC
Kita bisa mengubah sirkuit ini menjadi sirkuit aritmatika lebih F p dengan mencatat bahwa x p - 1 adalah 1 untuk semua nilai tapi 0 jadi pertama menaikkan semua masukan untuk kekuatan p - 1 . Ganti setiap gerbang f ∧ g dengan perkalian f . g , masing-masing f ∨ g gerbang oleh f + g - f . g dan masing-masing ¬ f gerbang oleh 1 - f .Fpxp−110p−1f∧gf.gf∨gf+g−f.g¬f1−f
By the assumption we made above about the format of the output, we can turn the output from binary to values over FpFp. Take the output for bibi and combine them to get ∑0≤k≤p−1kbi,k∑0≤k≤p−1kbi,k.
Kami juga dapat mengkonversi input yang diberikan sebagai nilai lebih F p ke bentuk biner karena ada polinomial melewati sejumlah terbatas poin. Misalnya jika kita bekerja dalam mod 3 , pertimbangkan polinomial 2 x ( x + 1 ) dan 2 x ( x + 2 ) yang memberikan bit pertama dan kedua dari input x ∈ F 3 .Fpmod32x(x+1)2x(x+2)x∈F3
Menggabungkan ini kita memiliki sirkuit aritmatika lebih F p komputasi multi-linierisasi dari C dengan ukuran polynomail dalam ukuran C .FpCC