github.com/consensys/gnark@v0.11.0/internal/backend/circuits/determinism.go (about) 1 package circuits 2 3 import ( 4 "github.com/consensys/gnark/frontend" 5 ) 6 7 type determinism struct { 8 X [5]frontend.Variable 9 Z frontend.Variable `gnark:",public"` 10 } 11 12 func (circuit *determinism) Define(api frontend.API) error { 13 a := api.Add(circuit.X[0], 14 circuit.X[0], 15 circuit.X[1], 16 circuit.X[1], 17 circuit.X[2], 18 circuit.X[2], 19 circuit.X[3], 20 circuit.X[3], 21 circuit.X[4], 22 circuit.X[4], 23 ) 24 b := api.Mul(a, a) 25 api.AssertIsEqual(b, circuit.Z) 26 return nil 27 } 28 29 func init() { 30 var circuit, good, bad determinism 31 32 good.X[0] = (1) 33 good.X[1] = (2) 34 good.X[2] = (3) 35 good.X[3] = (4) 36 good.X[4] = (5) 37 good.Z = (900) 38 39 bad.X[0] = (1) 40 bad.X[1] = (1) 41 bad.X[2] = (1) 42 bad.X[3] = (1) 43 bad.X[4] = (1) 44 bad.Z = (900) 45 46 addEntry("determinism", &circuit, &good, &bad, nil) 47 }