template XOR() { signal input a; signal input b; signal output out; out <== a + b - 2*a*b; } template AND() { signal input a; signal input b; signal output out; out <== a*b; } template OR() { signal input a; signal input b; signal output out; out <== a + b - a*b; } template NOT() { signal input in; signal output out; out <== 1 + in - 2*in; } template NAND() { signal input a; signal input b; signal output out; out <== 1 - a*b; } template NOR() { signal input a; signal input b; signal output out; out <== a*b + 1 - a - b; }