template ManyConstraints(NUM_VARIABLES, NUM_CONSTRAINTS) { signal private input a; signal output c; assert(NUM_VARIABLES <= NUM_CONSTRAINTS) signal b[NUM_VARIABLES]; b[0] <== a*a; var i; for (i = 1; i < NUM_VARIABLES; i++) { b[i] <== b[i-1]*b[i-1]; } i = i-1; for (var j = NUM_VARIABLES; j < NUM_CONSTRAINTS; j++) { b[i] === b[i-1]*b[i-1]; } c <== b[i]; } component main = ManyConstraints(NUM_VARIABLES_TEMPLATE, NUM_CONSTRAINTS_TEMPLATE);