arnaucube
arnaucube/gnark-plonky2-verifierPublic Self-hosted repository
gnark-plonky2-verifier/plonk/gates/gates_test.go
plonk/gates/gates_test.goRaw
  1package gates_test
  2
  3import (
  4	"errors"
  5	"testing"
  6
  7	"github.com/consensys/gnark-crypto/ecc"
  8	"github.com/consensys/gnark-crypto/field/goldilocks"
  9	"github.com/consensys/gnark/frontend"
 10	"github.com/consensys/gnark/test"
 11	gl "github.com/succinctlabs/gnark-plonky2-verifier/goldilocks"
 12	"github.com/succinctlabs/gnark-plonky2-verifier/plonk/gates"
 13	"github.com/succinctlabs/gnark-plonky2-verifier/poseidon"
 14	"github.com/succinctlabs/gnark-plonky2-verifier/verifier"
 15)
 16
 17// From recursive_step circuit
 18var localConstants = []gl.QuadraticExtensionVariable{
 19	{gl.NewVariable("4962976205186800892"), gl.NewVariable("6982360466972099197")},
 20	{gl.NewVariable("3587364333101709084"), gl.NewVariable("17496916837371484700")},
 21	{gl.NewVariable("17287374881609559799"), gl.NewVariable("3152841633956965234")},
 22	{gl.NewVariable("8531030241248616826"), gl.NewVariable("7753678118587211959")},
 23	{gl.NewVariable("7622109056373824903"), gl.NewVariable("6523636236475969621")},
 24}
 25
 26var localWires = []gl.QuadraticExtensionVariable{
 27	{gl.NewVariable("5101665081776077058"), gl.NewVariable("13601771238484783081")},
 28	{gl.NewVariable("13763997788502656587"), gl.NewVariable("6068443864169526207")},
 29	{gl.NewVariable("10492880302699453810"), gl.NewVariable("11304418575668616669")},
 30	{gl.NewVariable("2175168501339052813"), gl.NewVariable("3658211467579027796")},
 31	{gl.NewVariable("11342710587435471757"), gl.NewVariable("658078906333318768")},
 32	{gl.NewVariable("16590262768413671742"), gl.NewVariable("4678191900868819358")},
 33	{gl.NewVariable("18412513594273328173"), gl.NewVariable("3981245463942959904")},
 34	{gl.NewVariable("18150166316938544267"), gl.NewVariable("6968565044901838140")},
 35	{gl.NewVariable("1048835939602984673"), gl.NewVariable("3511920575130606798")},
 36	{gl.NewVariable("13693300152826538654"), gl.NewVariable("5872314861500881782")},
 37	{gl.NewVariable("6394696263219721312"), gl.NewVariable("92364988976021720")},
 38	{gl.NewVariable("468193345380249942"), gl.NewVariable("4951036536117371576")},
 39	{gl.NewVariable("9660006729985637684"), gl.NewVariable("14762789799642492635")},
 40	{gl.NewVariable("10091149087332313493"), gl.NewVariable("13279468039286967053")},
 41	{gl.NewVariable("12007469191150580744"), gl.NewVariable("2495445179052731885")},
 42	{gl.NewVariable("14225726459587943147"), gl.NewVariable("13484648741862607201")},
 43	{gl.NewVariable("15365400400136175672"), gl.NewVariable("12227857303059870833")},
 44	{gl.NewVariable("1717742269682481687"), gl.NewVariable("14319701537357602192")},
 45	{gl.NewVariable("2130805637557027375"), gl.NewVariable("9674794597783493233")},
 46	{gl.NewVariable("4200526016516623452"), gl.NewVariable("1757832412907480092")},
 47	{gl.NewVariable("4159226258922372229"), gl.NewVariable("2121976810680943769")},
 48	{gl.NewVariable("2887943290582259162"), gl.NewVariable("10337505797799617185")},
 49	{gl.NewVariable("14760843822980496189"), gl.NewVariable("16331301823872182680")},
 50	{gl.NewVariable("14715580754822129725"), gl.NewVariable("13761736659446638375")},
 51	{gl.NewVariable("6925818640561435525"), gl.NewVariable("14142327999826777974")},
 52	{gl.NewVariable("14048060513252076245"), gl.NewVariable("14860933194240516940")},
 53	{gl.NewVariable("3928889853630846436"), gl.NewVariable("16211791673476822740")},
 54	{gl.NewVariable("15980387576926781891"), gl.NewVariable("6238947314711778055")},
 55	{gl.NewVariable("15694939331980119296"), gl.NewVariable("8708301222382733590")},
 56	{gl.NewVariable("192757930858294268"), gl.NewVariable("5400388905722847256")},
 57	{gl.NewVariable("17614358883814855964"), gl.NewVariable("11499208634388453518")},
 58	{gl.NewVariable("9523994443422431577"), gl.NewVariable("6835394446482946098")},
 59	{gl.NewVariable("10096606893378243201"), gl.NewVariable("8982086840326369907")},
 60	{gl.NewVariable("7328922720001507777"), gl.NewVariable("17298728994563323488")},
 61	{gl.NewVariable("7038859554184407337"), gl.NewVariable("6498153778103681368")},
 62	{gl.NewVariable("10610651604960433540"), gl.NewVariable("18240735600936975661")},
 63	{gl.NewVariable("4310901749476028644"), gl.NewVariable("17813866938235850894")},
 64	{gl.NewVariable("12456949458361594924"), gl.NewVariable("16541357680870686003")},
 65	{gl.NewVariable("13986559680062429806"), gl.NewVariable("14210541290696888125")},
 66	{gl.NewVariable("10299578396192380820"), gl.NewVariable("18011235767871391546")},
 67	{gl.NewVariable("747566550336808782"), gl.NewVariable("5892109075601553099")},
 68	{gl.NewVariable("11613383633841665100"), gl.NewVariable("3562006923196410047")},
 69	{gl.NewVariable("14971867523312360339"), gl.NewVariable("9835080574905235511")},
 70	{gl.NewVariable("5487884847548072736"), gl.NewVariable("17112808386797082519")},
 71	{gl.NewVariable("1687420180518659740"), gl.NewVariable("14003627304711288225")},
 72	{gl.NewVariable("6760442482244819429"), gl.NewVariable("15796493945480647537")},
 73	{gl.NewVariable("2639939427088481105"), gl.NewVariable("16213109089273184951")},
 74	{gl.NewVariable("6186345082501710713"), gl.NewVariable("2529053005908871239")},
 75	{gl.NewVariable("16270115914931256348"), gl.NewVariable("2789355919627681645")},
 76	{gl.NewVariable("4586999018177783314"), gl.NewVariable("2427837399215959725")},
 77	{gl.NewVariable("18143358622388343317"), gl.NewVariable("2145167333845152043")},
 78	{gl.NewVariable("20367062449222124"), gl.NewVariable("14939961527015734373")},
 79	{gl.NewVariable("16851694158642043266"), gl.NewVariable("5250789952541240163")},
 80	{gl.NewVariable("273375074794411822"), gl.NewVariable("16211897175907793903")},
 81	{gl.NewVariable("8905927930385832568"), gl.NewVariable("6540262589846603524")},
 82	{gl.NewVariable("9283781971254844102"), gl.NewVariable("15115068064900745758")},
 83	{gl.NewVariable("16002987404851668189"), gl.NewVariable("15226686847545140008")},
 84	{gl.NewVariable("17201679792194997813"), gl.NewVariable("589849108691638964")},
 85	{gl.NewVariable("13270753269614250355"), gl.NewVariable("13858862497673084592")},
 86	{gl.NewVariable("3679908279346826560"), gl.NewVariable("10125726541855725943")},
 87	{gl.NewVariable("9493227554592600240"), gl.NewVariable("13229107531594530196")},
 88	{gl.NewVariable("10072423214517113799"), gl.NewVariable("1877804054697703518")},
 89	{gl.NewVariable("9351494680554520560"), gl.NewVariable("12930187723253788505")},
 90	{gl.NewVariable("9537056082833040850"), gl.NewVariable("3947445714701039423")},
 91	{gl.NewVariable("978662253133020143"), gl.NewVariable("17432233037279205717")},
 92	{gl.NewVariable("13408331971471826902"), gl.NewVariable("8338873650278204671")},
 93	{gl.NewVariable("10455530172494355126"), gl.NewVariable("14614842120953588617")},
 94	{gl.NewVariable("3066054670984065145"), gl.NewVariable("11061840675948823020")},
 95	{gl.NewVariable("1215442291812236170"), gl.NewVariable("6970679356502977963")},
 96	{gl.NewVariable("16254140688845356393"), gl.NewVariable("16413217415268481315")},
 97	{gl.NewVariable("5571707217813279614"), gl.NewVariable("2506082641312169038")},
 98	{gl.NewVariable("18179591596294163519"), gl.NewVariable("16131760445397495720")},
 99	{gl.NewVariable("9500821197677833979"), gl.NewVariable("14137570623214003877")},
100	{gl.NewVariable("18159279414894480072"), gl.NewVariable("316120438770524969")},
101	{gl.NewVariable("18164288455905080997"), gl.NewVariable("12889510574086616078")},
102	{gl.NewVariable("7158952489901063870"), gl.NewVariable("8855957421923524202")},
103	{gl.NewVariable("11785615172910130564"), gl.NewVariable("13242859272114186921")},
104	{gl.NewVariable("7978627011292316159"), gl.NewVariable("12030929068833787030")},
105	{gl.NewVariable("5676253512795062173"), gl.NewVariable("9401396509276686822")},
106	{gl.NewVariable("13934555872940874542"), gl.NewVariable("12262482935570269103")},
107	{gl.NewVariable("17018864997992880664"), gl.NewVariable("8399037137658253821")},
108	{gl.NewVariable("1846702834278938262"), gl.NewVariable("13210394651984411322")},
109	{gl.NewVariable("18406563809882201846"), gl.NewVariable("15807625126691296911")},
110	{gl.NewVariable("16192554501791210701"), gl.NewVariable("15105514277710825451")},
111	{gl.NewVariable("16115514979166385045"), gl.NewVariable("5618092869410987045")},
112	{gl.NewVariable("9816852940756124129"), gl.NewVariable("1617435612712694609")},
113	{gl.NewVariable("15012743324956680415"), gl.NewVariable("11098953448520716956")},
114	{gl.NewVariable("7370750057902285338"), gl.NewVariable("15456123684241865136")},
115	{gl.NewVariable("14924801177398773859"), gl.NewVariable("1116868612459919368")},
116	{gl.NewVariable("509701279674911901"), gl.NewVariable("8606220700917290973")},
117	{gl.NewVariable("256371784527067555"), gl.NewVariable("18023759020251995084")},
118	{gl.NewVariable("4027645791496469270"), gl.NewVariable("6446906876250510281")},
119	{gl.NewVariable("8190141658485644545"), gl.NewVariable("3259909135802998300")},
120	{gl.NewVariable("11270185749533517292"), gl.NewVariable("7032460358965516338")},
121	{gl.NewVariable("12112891112487601597"), gl.NewVariable("3686732542066412082")},
122	{gl.NewVariable("18143522178445971138"), gl.NewVariable("6066438010126851248")},
123	{gl.NewVariable("16109160830754618815"), gl.NewVariable("2728516440557525242")},
124	{gl.NewVariable("14634072837475699881"), gl.NewVariable("423778353213757146")},
125	{gl.NewVariable("10421081673554059162"), gl.NewVariable("10142208889746521219")},
126	{gl.NewVariable("12957639310809930956"), gl.NewVariable("1709286023553869935")},
127	{gl.NewVariable("16217923109113456531"), gl.NewVariable("3257438610376598615")},
128	{gl.NewVariable("14024104132094810570"), gl.NewVariable("6065015478137587430")},
129	{gl.NewVariable("7972303368219061571"), gl.NewVariable("5413678307283424945")},
130	{gl.NewVariable("10367882107777269226"), gl.NewVariable("9366367173763419226")},
131	{gl.NewVariable("11506720810821148150"), gl.NewVariable("15210537421649867625")},
132	{gl.NewVariable("10979917526797364486"), gl.NewVariable("3365843489182711842")},
133	{gl.NewVariable("9176981360155624350"), gl.NewVariable("7315956459698675112")},
134	{gl.NewVariable("3964217770504101577"), gl.NewVariable("9088242192411952739")},
135	{gl.NewVariable("16243289324567090937"), gl.NewVariable("13379263550784156456")},
136	{gl.NewVariable("18105277122985331384"), gl.NewVariable("13639149553905751132")},
137	{gl.NewVariable("11145583988660932112"), gl.NewVariable("16125114195985557867")},
138	{gl.NewVariable("18437667738670181477"), gl.NewVariable("8593343353929068644")},
139	{gl.NewVariable("15549894364614350199"), gl.NewVariable("6234736889764963090")},
140	{gl.NewVariable("17753837009416762390"), gl.NewVariable("15297774054893249240")},
141	{gl.NewVariable("1465043006528110247"), gl.NewVariable("11029942851654974974")},
142	{gl.NewVariable("14312704742949520917"), gl.NewVariable("17324353686056674958")},
143	{gl.NewVariable("8078333430227959261"), gl.NewVariable("14797545414164578336")},
144	{gl.NewVariable("3544997838139687150"), gl.NewVariable("8846840377946705678")},
145	{gl.NewVariable("9981846866090807073"), gl.NewVariable("18142560414179130259")},
146	{gl.NewVariable("1256577435119993994"), gl.NewVariable("155745544208227129")},
147	{gl.NewVariable("6040293874299819317"), gl.NewVariable("10483265617246740662")},
148	{gl.NewVariable("976159477616343697"), gl.NewVariable("6356544693059700239")},
149	{gl.NewVariable("4771747444846377672"), gl.NewVariable("2466985401424965488")},
150	{gl.NewVariable("9549711421417753693"), gl.NewVariable("9543806479040458857")},
151	{gl.NewVariable("5277199124405775998"), gl.NewVariable("6251037001966593402")},
152	{gl.NewVariable("13103543598051591262"), gl.NewVariable("2001921170471454234")},
153	{gl.NewVariable("1254878001165263070"), gl.NewVariable("17587272030879777460")},
154	{gl.NewVariable("2300344156307624878"), gl.NewVariable("14356513038946626528")},
155	{gl.NewVariable("2482567400777596327"), gl.NewVariable("3314129985687795881")},
156	{gl.NewVariable("16492046206730922155"), gl.NewVariable("1312905854247159931")},
157	{gl.NewVariable("3061501132630116372"), gl.NewVariable("13315665946615810001")},
158	{gl.NewVariable("16415932954051444990"), gl.NewVariable("925217124969456536")},
159	{gl.NewVariable("9764657158286137619"), gl.NewVariable("16039332713210679567")},
160	{gl.NewVariable("14993545086997628961"), gl.NewVariable("18010329211070748489")},
161	{gl.NewVariable("17327862012036619887"), gl.NewVariable("16962349802452905993")},
162	{gl.NewVariable("4826313026336060985"), gl.NewVariable("3597777099127511952")},
163}
164
165var publicInputsHash = poseidon.GoldilocksHashOut{
166	gl.Zero(),
167	gl.Zero(),
168	gl.Zero(),
169	gl.Zero(),
170}
171
172var publicInputGateExpectedConstraints = []gl.QuadraticExtensionVariable{
173	{gl.NewVariable("5101665081776077058"), gl.NewVariable("13601771238484783081")},
174	{gl.NewVariable("13763997788502656587"), gl.NewVariable("6068443864169526207")},
175	{gl.NewVariable("10492880302699453810"), gl.NewVariable("11304418575668616669")},
176	{gl.NewVariable("2175168501339052813"), gl.NewVariable("3658211467579027796")},
177}
178
179// BaseSumGate { num_limbs: 63 }), (Base: 2)
180var baseSumGateExpectedConstraints = []gl.QuadraticExtensionVariable{
181	{gl.NewVariable("9928715244459351681"), gl.NewVariable("5344081500364361215")},
182	{gl.NewVariable("10167164649082076581"), gl.NewVariable("15450889555489725096")},
183	{gl.NewVariable("3546584706462116594"), gl.NewVariable("1476426705388693036")},
184	{gl.NewVariable("12648634003162244983"), gl.NewVariable("2239452344495239178")},
185	{gl.NewVariable("2301087631440580451"), gl.NewVariable("11975672920337250307")},
186	{gl.NewVariable("14001554463269171732"), gl.NewVariable("6953207277617809048")},
187	{gl.NewVariable("9895590040747031510"), gl.NewVariable("1356956949635190505")},
188	{gl.NewVariable("14939964178677988571"), gl.NewVariable("454717738260444218")},
189	{gl.NewVariable("12201660109699192297"), gl.NewVariable("12502457673278583036")},
190	{gl.NewVariable("1175543972635147885"), gl.NewVariable("11103026408792334489")},
191	{gl.NewVariable("3384025741923988904"), gl.NewVariable("2656764746353452717")},
192	{gl.NewVariable("10849522185534943138"), gl.NewVariable("13172212508084788997")},
193	{gl.NewVariable("10509522572526523739"), gl.NewVariable("2090707475955491976")},
194	{gl.NewVariable("13692600715410336206"), gl.NewVariable("7227633217973806771")},
195	{gl.NewVariable("8471053080480597138"), gl.NewVariable("2646922138422495173")},
196	{gl.NewVariable("555344530120410083"), gl.NewVariable("13860459564781531385")},
197	{gl.NewVariable("8748801107049442833"), gl.NewVariable("9263752460533085733")},
198	{gl.NewVariable("13633964398888639692"), gl.NewVariable("10068133633095351031")},
199	{gl.NewVariable("6911322073377914708"), gl.NewVariable("17978361073083837803")},
200	{gl.NewVariable("11223090828346729804"), gl.NewVariable("5006610230932979596")},
201	{gl.NewVariable("11581626217660221266"), gl.NewVariable("16347470001077006094")},
202	{gl.NewVariable("2924189901864366701"), gl.NewVariable("4309265474738828848")},
203	{gl.NewVariable("7275314468944461178"), gl.NewVariable("3109308884739285751")},
204	{gl.NewVariable("12416988612575693809"), gl.NewVariable("13772367397588066248")},
205	{gl.NewVariable("15438805794425696237"), gl.NewVariable("5809350894111990599")},
206	{gl.NewVariable("4275145128501503120"), gl.NewVariable("13230668146909969114")},
207	{gl.NewVariable("15244699495724739585"), gl.NewVariable("7672322205441472064")},
208	{gl.NewVariable("5429809680618805220"), gl.NewVariable("3153880467220264060")},
209	{gl.NewVariable("14715345489518514160"), gl.NewVariable("2246036712337629635")},
210	{gl.NewVariable("9359342125434211935"), gl.NewVariable("7844760208539761732")},
211	{gl.NewVariable("17550561700498841003"), gl.NewVariable("10851755490050776878")},
212	{gl.NewVariable("12192385328855013814"), gl.NewVariable("6629056869404844416")},
213	{gl.NewVariable("3424745785197724925"), gl.NewVariable("9833599393425172230")},
214	{gl.NewVariable("8602078107149096927"), gl.NewVariable("6592109323720773368")},
215	{gl.NewVariable("4109716921881297082"), gl.NewVariable("4396469548700606105")},
216	{gl.NewVariable("10400304110319417426"), gl.NewVariable("1229823145437740976")},
217	{gl.NewVariable("14853277673343952974"), gl.NewVariable("7653131044140686982")},
218	{gl.NewVariable("15831955783787857197"), gl.NewVariable("16541106185743830609")},
219	{gl.NewVariable("16097830673407036871"), gl.NewVariable("917501749911433098")},
220	{gl.NewVariable("6819428296662518848"), gl.NewVariable("15325182544903569500")},
221	{gl.NewVariable("3554857310728040215"), gl.NewVariable("17540168721765377170")},
222	{gl.NewVariable("7246216899469226885"), gl.NewVariable("3184709231158489554")},
223	{gl.NewVariable("3462793508732024933"), gl.NewVariable("13410498916934897793")},
224	{gl.NewVariable("784714181705176804"), gl.NewVariable("8079390288171846846")},
225	{gl.NewVariable("4592501261546923410"), gl.NewVariable("6046244648190342248")},
226	{gl.NewVariable("14100558314779073910"), gl.NewVariable("9589305391181830029")},
227	{gl.NewVariable("7208216654581381179"), gl.NewVariable("16662177305876430630")},
228	{gl.NewVariable("13442246990998561849"), gl.NewVariable("6359024918649040199")},
229	{gl.NewVariable("16196376030005699590"), gl.NewVariable("5656446490425854681")},
230	{gl.NewVariable("16279173216505198700"), gl.NewVariable("6278440230935274234")},
231	{gl.NewVariable("9299204333782277508"), gl.NewVariable("5539548698065086849")},
232	{gl.NewVariable("531539748103362347"), gl.NewVariable("17008402782657673980")},
233	{gl.NewVariable("11956287871118080485"), gl.NewVariable("17776888431041950837")},
234	{gl.NewVariable("16795401491637949606"), gl.NewVariable("12112971435724505573")},
235	{gl.NewVariable("10141270150228316653"), gl.NewVariable("8738825159351228227")},
236	{gl.NewVariable("4249416130151320263"), gl.NewVariable("4171109024390883108")},
237	{gl.NewVariable("13565954345346642147"), gl.NewVariable("11300077318998472624")},
238	{gl.NewVariable("6006413348327738680"), gl.NewVariable("17429146764001291339")},
239	{gl.NewVariable("3009379005164242386"), gl.NewVariable("17911649148503516453")},
240	{gl.NewVariable("4172202865347441020"), gl.NewVariable("6700979848078030374")},
241	{gl.NewVariable("9692174554453081047"), gl.NewVariable("16461309050820528716")},
242	{gl.NewVariable("16012555505188709835"), gl.NewVariable("875036531415994728")},
243	{gl.NewVariable("14527388813134058525"), gl.NewVariable("13371873777459370318")},
244	{gl.NewVariable("6493493657980111839"), gl.NewVariable("14874520839734823069")},
245}
246
247// ArithmeticGate { num_ops: 20 }
248var arithmeticGateExpectedConstraints = []gl.QuadraticExtensionVariable{
249	{gl.NewVariable("8251494922795803874"), gl.NewVariable("7884328911897949424")},
250	{gl.NewVariable("17545754596575389449"), gl.NewVariable("15111927979676704385")},
251	{gl.NewVariable("10052040965126353731"), gl.NewVariable("1448153912054014611")},
252	{gl.NewVariable("3878848318701063854"), gl.NewVariable("15999854355391952993")},
253	{gl.NewVariable("2194699804496089007"), gl.NewVariable("7489112350095609056")},
254	{gl.NewVariable("666656317372820215"), gl.NewVariable("8333111246649438880")},
255	{gl.NewVariable("15500013716804095980"), gl.NewVariable("7739144386812042617")},
256	{gl.NewVariable("2815612394018416154"), gl.NewVariable("15839168197108305099")},
257	{gl.NewVariable("12980309813768330187"), gl.NewVariable("12446111953378048591")},
258	{gl.NewVariable("1389916348936822477"), gl.NewVariable("2080258147396834809")},
259	{gl.NewVariable("3676770229830052631"), gl.NewVariable("8984521981419906260")},
260	{gl.NewVariable("4759606161035299488"), gl.NewVariable("18415228017149216426")},
261	{gl.NewVariable("6849567585629675684"), gl.NewVariable("15231001333591586187")},
262	{gl.NewVariable("17831496121270832947"), gl.NewVariable("1868580989876710210")},
263	{gl.NewVariable("12226832860244216901"), gl.NewVariable("12352098694767236965")},
264	{gl.NewVariable("9795530155924375772"), gl.NewVariable("4833402654226660686")},
265	{gl.NewVariable("7421277748600887772"), gl.NewVariable("16979590244320625600")},
266	{gl.NewVariable("4212532134312824848"), gl.NewVariable("7938725153260099101")},
267	{gl.NewVariable("17718231164451799422"), gl.NewVariable("13363195988334771788")},
268	{gl.NewVariable("5414385531680474153"), gl.NewVariable("13600409983387272243")},
269}
270
271// RandomAccessGate { bits: 4, num_copies: 4, num_extra_constants: 2, _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
272var randomAccessGateExpectedConstraints = []gl.QuadraticExtensionVariable{
273	{gl.NewVariable("18367067186009695282"), gl.NewVariable("6227937229941915629")},
274	{gl.NewVariable("342627832935644960"), gl.NewVariable("11262336464371657587")},
275	{gl.NewVariable("7711502047853221895"), gl.NewVariable("9814305320358879113")},
276	{gl.NewVariable("2436675870898619939"), gl.NewVariable("12171743011114835714")},
277	{gl.NewVariable("9224796650008092960"), gl.NewVariable("197827193844666436")},
278	{gl.NewVariable("7661651717350955969"), gl.NewVariable("3929163527437938921")},
279	{gl.NewVariable("11994613277879586781"), gl.NewVariable("2918199453077793278")},
280	{gl.NewVariable("2133315582796573410"), gl.NewVariable("9920472598641951727")},
281	{gl.NewVariable("5763420675219782924"), gl.NewVariable("193200772658790662")},
282	{gl.NewVariable("14322103909897767697"), gl.NewVariable("2455403487869979318")},
283	{gl.NewVariable("3583177870835306708"), gl.NewVariable("15956920993825363087")},
284	{gl.NewVariable("15767764327818217757"), gl.NewVariable("17814936958431909187")},
285	{gl.NewVariable("7224551806569620055"), gl.NewVariable("1191241782303323453")},
286	{gl.NewVariable("3994846439282900915"), gl.NewVariable("16007298430807731888")},
287	{gl.NewVariable("1904864531973789879"), gl.NewVariable("9374437322489636375")},
288	{gl.NewVariable("17617411600595291430"), gl.NewVariable("11804426503917788826")},
289	{gl.NewVariable("5010213812557284606"), gl.NewVariable("8276410914978849008")},
290	{gl.NewVariable("13701536021647106057"), gl.NewVariable("5043776904396037625")},
291	{gl.NewVariable("4336267979289896624"), gl.NewVariable("8771134635816393433")},
292	{gl.NewVariable("17885926480537171976"), gl.NewVariable("9644095314646547597")},
293	{gl.NewVariable("17179233085824331332"), gl.NewVariable("6950525108693323209")},
294	{gl.NewVariable("9461258042008745175"), gl.NewVariable("6766975264204597922")},
295	{gl.NewVariable("10838154179711471883"), gl.NewVariable("16554457937262927355")},
296	{gl.NewVariable("5823858951686479642"), gl.NewVariable("10171201631442530906")},
297	{gl.NewVariable("17476953112985367168"), gl.NewVariable("12062851564787792403")},
298	{gl.NewVariable("7909573710893929152"), gl.NewVariable("6207515797705444652")},
299}
300
301// PoseidonGate(PhantomData<plonky2_field::goldilocks_field::GoldilocksField>)<WIDTH=12>
302var poseidonGateExpectedConstraints = []gl.QuadraticExtensionVariable{
303	{gl.NewVariable("15438805794425696237"), gl.NewVariable("5809350894111990599")},
304	{gl.NewVariable("105238306594298866"), gl.NewVariable("6398155585902798861")},
305	{gl.NewVariable("5256232026568856387"), gl.NewVariable("9253448664982005262")},
306	{gl.NewVariable("6559974022172208218"), gl.NewVariable("14478753759394222537")},
307	{gl.NewVariable("7036928093413865537"), gl.NewVariable("895644692646980845")},
308	{gl.NewVariable("6350074916129003337"), gl.NewVariable("10418298512623677843")},
309	{gl.NewVariable("6618288817893266284"), gl.NewVariable("17565920952415773065")},
310	{gl.NewVariable("7214268149308735221"), gl.NewVariable("17797640553663908886")},
311	{gl.NewVariable("17038147867485750883"), gl.NewVariable("10766691853641769251")},
312	{gl.NewVariable("1228066111137794024"), gl.NewVariable("1267834319488006514")},
313	{gl.NewVariable("15317834050441961579"), gl.NewVariable("13280896488837969140")},
314	{gl.NewVariable("10135227968960430585"), gl.NewVariable("7096433509203324519")},
315	{gl.NewVariable("10733417635899979276"), gl.NewVariable("16819459255105516700")},
316	{gl.NewVariable("4231839251429338586"), gl.NewVariable("3213678047797020863")},
317	{gl.NewVariable("16271445286187692537"), gl.NewVariable("15377656608157234934")},
318	{gl.NewVariable("9356442829698587975"), gl.NewVariable("14633910545825415036")},
319	{gl.NewVariable("13952390018297698734"), gl.NewVariable("16325393355066618599")},
320	{gl.NewVariable("11399251131586292643"), gl.NewVariable("16257107051968717815")},
321	{gl.NewVariable("4274092107872068929"), gl.NewVariable("15550597684938436610")},
322	{gl.NewVariable("13076618331457049912"), gl.NewVariable("4958059540220054374")},
323	{gl.NewVariable("11650097218963026123"), gl.NewVariable("12070947109214611020")},
324	{gl.NewVariable("2700303408109034014"), gl.NewVariable("5968338348636871194")},
325	{gl.NewVariable("11508005723655482353"), gl.NewVariable("15224088756564969467")},
326	{gl.NewVariable("9328231423353697829"), gl.NewVariable("10577349809783627634")},
327	{gl.NewVariable("556544259468984890"), gl.NewVariable("13376447539117215836")},
328	{gl.NewVariable("17319865455991589647"), gl.NewVariable("588985536671201497")},
329	{gl.NewVariable("9528470026616131077"), gl.NewVariable("7257040911301352274")},
330	{gl.NewVariable("14316182132889623635"), gl.NewVariable("9589165219691594711")},
331	{gl.NewVariable("10405802815809041956"), gl.NewVariable("13917007789819955074")},
332	{gl.NewVariable("12560668105252495616"), gl.NewVariable("3591188232548111694")},
333	{gl.NewVariable("14765117357942682611"), gl.NewVariable("10757853341059462467")},
334	{gl.NewVariable("6099902163260965551"), gl.NewVariable("11343816861356056114")},
335	{gl.NewVariable("1083174255539258286"), gl.NewVariable("7587979659522435417")},
336	{gl.NewVariable("2882552180249608570"), gl.NewVariable("7966658657757662554")},
337	{gl.NewVariable("13490914415473336227"), gl.NewVariable("63845168436289811")},
338	{gl.NewVariable("9459794640071212413"), gl.NewVariable("13417331052474309186")},
339	{gl.NewVariable("18328090807516092318"), gl.NewVariable("11807085063599693782")},
340	{gl.NewVariable("281059606944328759"), gl.NewVariable("13352248056867426135")},
341	{gl.NewVariable("10905177588660050370"), gl.NewVariable("6597328385789442670")},
342	{gl.NewVariable("8426356906491012567"), gl.NewVariable("17214424336396001022")},
343	{gl.NewVariable("15696035667318839817"), gl.NewVariable("13285870048485492127")},
344	{gl.NewVariable("6110244444680672193"), gl.NewVariable("17558548349689468031")},
345	{gl.NewVariable("14614078615782659381"), gl.NewVariable("13184024850613726857")},
346	{gl.NewVariable("1541592450520953410"), gl.NewVariable("18339388388315914026")},
347	{gl.NewVariable("8059386643769157052"), gl.NewVariable("10208764910817462305")},
348	{gl.NewVariable("7612459820354975117"), gl.NewVariable("7582060685277695926")},
349	{gl.NewVariable("12515587043516861064"), gl.NewVariable("16099239041553682288")},
350	{gl.NewVariable("14269196473871652102"), gl.NewVariable("1225067220600668761")},
351	{gl.NewVariable("12691255077510636187"), gl.NewVariable("14147201911063761532")},
352	{gl.NewVariable("3001134598446056765"), gl.NewVariable("14313090483058155636")},
353	{gl.NewVariable("13964993951988177315"), gl.NewVariable("17731737838539414275")},
354	{gl.NewVariable("2686259154263524343"), gl.NewVariable("12198712301337570859")},
355	{gl.NewVariable("6730431920128908773"), gl.NewVariable("4325394084875720868")},
356	{gl.NewVariable("988774723104779817"), gl.NewVariable("8388266879854983623")},
357	{gl.NewVariable("8233087560647959985"), gl.NewVariable("7751837576340060020")},
358	{gl.NewVariable("9546113779017699592"), gl.NewVariable("4049920632309298778")},
359	{gl.NewVariable("3283837251411237060"), gl.NewVariable("13560940050752580093")},
360	{gl.NewVariable("10388838746951897109"), gl.NewVariable("454393475113110282")},
361	{gl.NewVariable("2208016536897042313"), gl.NewVariable("17105586471193083308")},
362	{gl.NewVariable("17683990802267567604"), gl.NewVariable("15398473956537380705")},
363	{gl.NewVariable("70612752050386177"), gl.NewVariable("12349994002954022957")},
364	{gl.NewVariable("13794244952989612728"), gl.NewVariable("15888581169565306348")},
365	{gl.NewVariable("8270800566553141412"), gl.NewVariable("1516938823651329185")},
366	{gl.NewVariable("643507941153616368"), gl.NewVariable("3893451216814345882")},
367	{gl.NewVariable("16464837166410943694"), gl.NewVariable("11108183142967610977")},
368	{gl.NewVariable("9748621820629198396"), gl.NewVariable("3766489907402036319")},
369	{gl.NewVariable("3115179618981245947"), gl.NewVariable("10160994694067456423")},
370	{gl.NewVariable("4497210741038443097"), gl.NewVariable("6445446770984515259")},
371	{gl.NewVariable("5470898125882256227"), gl.NewVariable("8249357863801204908")},
372	{gl.NewVariable("16762380205819269382"), gl.NewVariable("172510727904060494")},
373	{gl.NewVariable("7920011253931301350"), gl.NewVariable("9681193995678483756")},
374	{gl.NewVariable("8258951043315574232"), gl.NewVariable("13137471323476190588")},
375	{gl.NewVariable("4339364527801481944"), gl.NewVariable("16862579756243326257")},
376	{gl.NewVariable("8980029737458438570"), gl.NewVariable("14651625524257781922")},
377	{gl.NewVariable("17935993907375677671"), gl.NewVariable("5318319737405476029")},
378	{gl.NewVariable("716791501623731831"), gl.NewVariable("18425818060734993303")},
379	{gl.NewVariable("601549076806364660"), gl.NewVariable("12303919727550310013")},
380	{gl.NewVariable("18026376178895562118"), gl.NewVariable("14687420532194520529")},
381	{gl.NewVariable("16943892475592026666"), gl.NewVariable("7451688507369746594")},
382	{gl.NewVariable("8724072308842121373"), gl.NewVariable("11662986251379699921")},
383	{gl.NewVariable("3201079129905071298"), gl.NewVariable("11542621183935331871")},
384	{gl.NewVariable("9889739070824270529"), gl.NewVariable("3891825006545095657")},
385	{gl.NewVariable("15538978715382418651"), gl.NewVariable("2419672705453973015")},
386	{gl.NewVariable("3001525234835174062"), gl.NewVariable("17115969716224377534")},
387	{gl.NewVariable("18001237923148428045"), gl.NewVariable("2198015511953873786")},
388	{gl.NewVariable("14186741561112601666"), gl.NewVariable("13156405199205086627")},
389	{gl.NewVariable("10166592177477126663"), gl.NewVariable("13586051001537885658")},
390	{gl.NewVariable("8678352780562557555"), gl.NewVariable("1968366090049630482")},
391	{gl.NewVariable("5627999915794840395"), gl.NewVariable("13597556392696072088")},
392	{gl.NewVariable("9291327714650886898"), gl.NewVariable("2411361999629511024")},
393	{gl.NewVariable("6824943761729555359"), gl.NewVariable("7484507209360908175")},
394	{gl.NewVariable("6276580084700132178"), gl.NewVariable("6246691657613415035")},
395	{gl.NewVariable("10736230409698057656"), gl.NewVariable("7306720219045064925")},
396	{gl.NewVariable("15442170485732017109"), gl.NewVariable("1739984147692575725")},
397	{gl.NewVariable("4448878124301402845"), gl.NewVariable("18436455114977877323")},
398	{gl.NewVariable("638012599023653143"), gl.NewVariable("16265955502846626936")},
399	{gl.NewVariable("6793907577559820653"), gl.NewVariable("15343551069946118619")},
400	{gl.NewVariable("17903286158968614509"), gl.NewVariable("9559701571149911252")},
401	{gl.NewVariable("14652006464960400785"), gl.NewVariable("50421020503848143")},
402	{gl.NewVariable("9452858006432860845"), gl.NewVariable("2625726945677447428")},
403	{gl.NewVariable("853640589013584892"), gl.NewVariable("14655161412118141649")},
404	{gl.NewVariable("12863832006745352780"), gl.NewVariable("14564189651136231029")},
405	{gl.NewVariable("8551517270810530438"), gl.NewVariable("10859465327758962622")},
406	{gl.NewVariable("10113468436120661191"), gl.NewVariable("16040944006557911589")},
407	{gl.NewVariable("4921439225277518643"), gl.NewVariable("8399175422965154512")},
408	{gl.NewVariable("13068240354812957183"), gl.NewVariable("8520393046894990946")},
409	{gl.NewVariable("1189183420107219532"), gl.NewVariable("18066897627856601789")},
410	{gl.NewVariable("3997900004790871153"), gl.NewVariable("1269718920871578117")},
411	{gl.NewVariable("15438784576472256462"), gl.NewVariable("9577304425687441047")},
412	{gl.NewVariable("17158083218962275971"), gl.NewVariable("17379790274576244684")},
413	{gl.NewVariable("3470452736936929010"), gl.NewVariable("12769555113044633230")},
414	{gl.NewVariable("18389243269515626865"), gl.NewVariable("8023737530782576805")},
415	{gl.NewVariable("3529213023405995549"), gl.NewVariable("8829896701928525938")},
416	{gl.NewVariable("14072413770981804653"), gl.NewVariable("9660693090213237836")},
417	{gl.NewVariable("14369435038913678671"), gl.NewVariable("7659129852562422871")},
418	{gl.NewVariable("6779301728445724040"), gl.NewVariable("18290152515233036523")},
419	{gl.NewVariable("8113954200727174254"), gl.NewVariable("16490002532983549952")},
420	{gl.NewVariable("11465655095604389561"), gl.NewVariable("9066100972825318010")},
421	{gl.NewVariable("15998691377748321442"), gl.NewVariable("16970045124898180365")},
422	{gl.NewVariable("8424730626816696233"), gl.NewVariable("17168184083072399403")},
423	{gl.NewVariable("1941959246552302666"), gl.NewVariable("6751013195867127440")},
424	{gl.NewVariable("1907519456922228224"), gl.NewVariable("689311996911195932")},
425	{gl.NewVariable("16277197060525435740"), gl.NewVariable("12018417724719716072")},
426}
427
428var reducingExtensionGateExpectedConstraints = []gl.QuadraticExtensionVariable{
429	{gl.NewVariable("12832102811425062912"), gl.NewVariable("2979695993654444095")},
430	{gl.NewVariable("4822478941232734654"), gl.NewVariable("2600327308894333341")},
431	{gl.NewVariable("12450653411048814602"), gl.NewVariable("1161667420593062956")},
432	{gl.NewVariable("3145631295867407955"), gl.NewVariable("1702059944088737075")},
433	{gl.NewVariable("4597190091407364771"), gl.NewVariable("4257077286672555409")},
434	{gl.NewVariable("10177664366491925772"), gl.NewVariable("10489575701186298604")},
435	{gl.NewVariable("2754621968864722399"), gl.NewVariable("12087963411706301871")},
436	{gl.NewVariable("534408217555793149"), gl.NewVariable("12559345737194357169")},
437	{gl.NewVariable("9508765820222303634"), gl.NewVariable("14102461861317982082")},
438	{gl.NewVariable("15070954032232801974"), gl.NewVariable("2078249670161696735")},
439	{gl.NewVariable("10465809629504954691"), gl.NewVariable("16223748685835312497")},
440	{gl.NewVariable("10957196413441800202"), gl.NewVariable("3841214025425953691")},
441	{gl.NewVariable("18438848195188240825"), gl.NewVariable("5697684145424680565")},
442	{gl.NewVariable("565455534266129104"), gl.NewVariable("12543354947937779806")},
443	{gl.NewVariable("16376588778962418386"), gl.NewVariable("1273250903423198860")},
444	{gl.NewVariable("4128104469872810921"), gl.NewVariable("1433037233801071123")},
445	{gl.NewVariable("6011337242244377340"), gl.NewVariable("16068106780789397185")},
446	{gl.NewVariable("4741354504248328629"), gl.NewVariable("3000853646720964165")},
447	{gl.NewVariable("13064594310789140866"), gl.NewVariable("10950406741883971259")},
448	{gl.NewVariable("17079026691450750925"), gl.NewVariable("6522027970928818261")},
449	{gl.NewVariable("13158136237489326416"), gl.NewVariable("7677629162183242732")},
450	{gl.NewVariable("14741398060174921234"), gl.NewVariable("2960243215156352194")},
451	{gl.NewVariable("9111161782199179468"), gl.NewVariable("8010960876261510099")},
452	{gl.NewVariable("1404837029582986528"), gl.NewVariable("9377230983302764181")},
453	{gl.NewVariable("7086781234814455260"), gl.NewVariable("7571558192372650697")},
454	{gl.NewVariable("5627013434503229817"), gl.NewVariable("14984048934926143304")},
455	{gl.NewVariable("2115495655441739405"), gl.NewVariable("1656704965110317534")},
456	{gl.NewVariable("2311846135199651566"), gl.NewVariable("17438437808346967358")},
457	{gl.NewVariable("8679806319651401773"), gl.NewVariable("3278538718508560579")},
458	{gl.NewVariable("7897681105604536660"), gl.NewVariable("10966573925848082711")},
459	{gl.NewVariable("5451958405177630542"), gl.NewVariable("9207735009647199721")},
460	{gl.NewVariable("8825486358121162697"), gl.NewVariable("15997852519026522914")},
461	{gl.NewVariable("475225211669491693"), gl.NewVariable("1907827506180042626")},
462	{gl.NewVariable("16033031089519343732"), gl.NewVariable("15009948832718035672")},
463	{gl.NewVariable("5048598591200038865"), gl.NewVariable("156574475928756206")},
464	{gl.NewVariable("3580311624647961767"), gl.NewVariable("6084715537433906996")},
465	{gl.NewVariable("9121009921295095324"), gl.NewVariable("18407759801432275235")},
466	{gl.NewVariable("16569013039730214123"), gl.NewVariable("3930908108224055041")},
467	{gl.NewVariable("13844066138909451365"), gl.NewVariable("6585754647203519368")},
468	{gl.NewVariable("14133345335167543367"), gl.NewVariable("3946807387480232364")},
469	{gl.NewVariable("9876285028806980582"), gl.NewVariable("40898067822033734")},
470	{gl.NewVariable("6293483059765701407"), gl.NewVariable("16009270905706605849")},
471	{gl.NewVariable("11635947241393753594"), gl.NewVariable("5053395178858294866")},
472	{gl.NewVariable("16062194595705166277"), gl.NewVariable("752574348595159408")},
473	{gl.NewVariable("15607597716340375230"), gl.NewVariable("10428583315124220143")},
474	{gl.NewVariable("6975301479426228318"), gl.NewVariable("16528136630898216147")},
475	{gl.NewVariable("16312827398430223622"), gl.NewVariable("17909475722464415780")},
476	{gl.NewVariable("2273087545743905667"), gl.NewVariable("12405446777919046866")},
477	{gl.NewVariable("14781933506876191161"), gl.NewVariable("4464109151368149713")},
478	{gl.NewVariable("4226716729950095934"), gl.NewVariable("8908251769229049654")},
479	{gl.NewVariable("8310476487592089883"), gl.NewVariable("3834672170570438819")},
480	{gl.NewVariable("4285568636604940795"), gl.NewVariable("7183765355016179794")},
481	{gl.NewVariable("14300853697824059506"), gl.NewVariable("16287477445929928328")},
482	{gl.NewVariable("1238186507267033247"), gl.NewVariable("12357102109973664962")},
483	{gl.NewVariable("15607388919140050768"), gl.NewVariable("15421065238069253306")},
484	{gl.NewVariable("12418734453826432586"), gl.NewVariable("12072056126139297564")},
485	{gl.NewVariable("3924467115116313620"), gl.NewVariable("1212362379653628161")},
486	{gl.NewVariable("8252514850759544679"), gl.NewVariable("7893938436444134034")},
487	{gl.NewVariable("711675815009325200"), gl.NewVariable("15678724077367989757")},
488	{gl.NewVariable("10920573406841924033"), gl.NewVariable("8189696933773246220")},
489	{gl.NewVariable("9737295100232588618"), gl.NewVariable("13383462338120177171")},
490	{gl.NewVariable("8983013033045953935"), gl.NewVariable("5301160793103788033")},
491	{gl.NewVariable("2086512740154274197"), gl.NewVariable("9511985884344255651")},
492	{gl.NewVariable("7404726366142548080"), gl.NewVariable("11257391295697140486")},
493	{gl.NewVariable("10045968629671906256"), gl.NewVariable("10721172752468420959")},
494	{gl.NewVariable("9499240237398016191"), gl.NewVariable("17996498955496851489")},
495}
496
497// ReducingGate { num_coeffs: 44 }
498var reducingGateExpectedConstraints = []gl.QuadraticExtensionVariable{
499	{gl.NewVariable("4189565386714553574"), gl.NewVariable("14972099283023295929")},
500	{gl.NewVariable("4811224976739448335"), gl.NewVariable("17901409314576454439")},
501	{gl.NewVariable("5140059407491502784"), gl.NewVariable("1144330742785924570")},
502	{gl.NewVariable("7077436393778991453"), gl.NewVariable("13398199711778224412")},
503	{gl.NewVariable("11213768990622043903"), gl.NewVariable("3886053425349218150")},
504	{gl.NewVariable("2946099412905029571"), gl.NewVariable("16515307040211357295")},
505	{gl.NewVariable("11766152895257088950"), gl.NewVariable("12561350435611412995")},
506	{gl.NewVariable("15559670172179416359"), gl.NewVariable("14246884723129607378")},
507	{gl.NewVariable("5240707719525548158"), gl.NewVariable("1640773599873992510")},
508	{gl.NewVariable("14358821079049832289"), gl.NewVariable("2746855687282611080")},
509	{gl.NewVariable("3214086216088588558"), gl.NewVariable("1520697626094905530")},
510	{gl.NewVariable("9834748172213967248"), gl.NewVariable("13487010468070558667")},
511	{gl.NewVariable("1423442768503334248"), gl.NewVariable("10945790255819476518")},
512	{gl.NewVariable("2308372186436983690"), gl.NewVariable("8803174935784778070")},
513	{gl.NewVariable("9995833078447025147"), gl.NewVariable("9074310518079663649")},
514	{gl.NewVariable("14149697874498108875"), gl.NewVariable("15875817120435194028")},
515	{gl.NewVariable("14564758547073982656"), gl.NewVariable("13386335755835868953")},
516	{gl.NewVariable("6432745607675418074"), gl.NewVariable("8030247499566565321")},
517	{gl.NewVariable("17308235779926438117"), gl.NewVariable("16843697410674499818")},
518	{gl.NewVariable("15507223129386571868"), gl.NewVariable("3935281607585552366")},
519	{gl.NewVariable("16041402982622709805"), gl.NewVariable("12432717078068957835")},
520	{gl.NewVariable("6455955094164032063"), gl.NewVariable("2435635342699968412")},
521	{gl.NewVariable("9814981570869789379"), gl.NewVariable("5009257884262115226")},
522	{gl.NewVariable("9452031978763862902"), gl.NewVariable("15609083603899848676")},
523	{gl.NewVariable("13532623109002857304"), gl.NewVariable("7324541443245949391")},
524	{gl.NewVariable("7899075212455453622"), gl.NewVariable("14276489152002439614")},
525	{gl.NewVariable("2403019844704266911"), gl.NewVariable("5922544710604013781")},
526	{gl.NewVariable("9709471021111675830"), gl.NewVariable("5538539165068927028")},
527	{gl.NewVariable("15700585567216041265"), gl.NewVariable("17893894492159337326")},
528	{gl.NewVariable("8890003199638063977"), gl.NewVariable("17726621767321974437")},
529	{gl.NewVariable("389239919653982052"), gl.NewVariable("3497778410650283061")},
530	{gl.NewVariable("845227572644858827"), gl.NewVariable("7040344997713673855")},
531	{gl.NewVariable("9861253052349275208"), gl.NewVariable("1880449137233040023")},
532	{gl.NewVariable("9239454143759318515"), gl.NewVariable("7968256557482935820")},
533	{gl.NewVariable("12576879243038758854"), gl.NewVariable("9784626207087825707")},
534	{gl.NewVariable("14811673587164089973"), gl.NewVariable("10785522535030299714")},
535	{gl.NewVariable("696437091186897361"), gl.NewVariable("13293602092569033065")},
536	{gl.NewVariable("1240161179290551759"), gl.NewVariable("9542275505416038259")},
537	{gl.NewVariable("5298553932515957396"), gl.NewVariable("14597738151157731445")},
538	{gl.NewVariable("8472517818840783225"), gl.NewVariable("7685861056688910111")},
539	{gl.NewVariable("10067665523858551777"), gl.NewVariable("13019870415534016025")},
540	{gl.NewVariable("3030966178198674680"), gl.NewVariable("10107838846102885642")},
541	{gl.NewVariable("6762889891370677550"), gl.NewVariable("16151528872832782368")},
542	{gl.NewVariable("17207754552662723664"), gl.NewVariable("15168039969859158460")},
543	{gl.NewVariable("9111161782199179468"), gl.NewVariable("8010960876261510099")},
544	{gl.NewVariable("1212079098724692260"), gl.NewVariable("3976842077579916925")},
545	{gl.NewVariable("8111924351272477885"), gl.NewVariable("1472738463707044435")},
546	{gl.NewVariable("14549763060495382561"), gl.NewVariable("8148654488443197206")},
547	{gl.NewVariable("9633247645878352168"), gl.NewVariable("4173826759172401145")},
548	{gl.NewVariable("13429667484612728110"), gl.NewVariable("139708813783643870")},
549	{gl.NewVariable("11164941208889426013"), gl.NewVariable("3615779386887825309")},
550	{gl.NewVariable("15733773570058687441"), gl.NewVariable("11172582394325691371")},
551	{gl.NewVariable("11237663549079845099"), gl.NewVariable("375954911737718734")},
552	{gl.NewVariable("14815280969174152094"), gl.NewVariable("17903238907570421232")},
553	{gl.NewVariable("12264332321023153985"), gl.NewVariable("4996015210046477989")},
554	{gl.NewVariable("5733452693326962912"), gl.NewVariable("15445457134261228447")},
555	{gl.NewVariable("11339891595047637420"), gl.NewVariable("762619178430884475")},
556	{gl.NewVariable("10413672060220880988"), gl.NewVariable("2522708614237496949")},
557	{gl.NewVariable("4759794002943168525"), gl.NewVariable("8366670758049431064")},
558	{gl.NewVariable("11081128192182141387"), gl.NewVariable("5264843790841556843")},
559	{gl.NewVariable("16467547707866820269"), gl.NewVariable("10395994280728082037")},
560	{gl.NewVariable("7372902852922723938"), gl.NewVariable("6597057511414169148")},
561	{gl.NewVariable("1246550990665510080"), gl.NewVariable("369146659419534786")},
562	{gl.NewVariable("107137977263990694"), gl.NewVariable("13480217899797734610")},
563	{gl.NewVariable("9352391006524927052"), gl.NewVariable("16474580549927501346")},
564	{gl.NewVariable("11475195577527382963"), gl.NewVariable("16771481018793784004")},
565	{gl.NewVariable("7763817490144412733"), gl.NewVariable("7847907679735875325")},
566	{gl.NewVariable("6954934416977006194"), gl.NewVariable("1588175103882481774")},
567	{gl.NewVariable("208699790124989138"), gl.NewVariable("104050776110144395")},
568	{gl.NewVariable("1999712470949493845"), gl.NewVariable("14640293671425837284")},
569	{gl.NewVariable("17489389210332023693"), gl.NewVariable("1485853484717956236")},
570	{gl.NewVariable("13389678828109836153"), gl.NewVariable("12239927773742888217")},
571	{gl.NewVariable("7279356606052782033"), gl.NewVariable("16889809967345118643")},
572	{gl.NewVariable("5530632913824527303"), gl.NewVariable("6593916246324540830")},
573	{gl.NewVariable("6517985275757881887"), gl.NewVariable("1094679265639341934")},
574	{gl.NewVariable("16005022297334791008"), gl.NewVariable("2231375568117939019")},
575	{gl.NewVariable("7801581545066110268"), gl.NewVariable("16195585011186011335")},
576	{gl.NewVariable("2346311239309318787"), gl.NewVariable("10194252071441594046")},
577	{gl.NewVariable("1333414916806612489"), gl.NewVariable("4078668601880487193")},
578	{gl.NewVariable("17162202837341088150"), gl.NewVariable("3946492721743094611")},
579	{gl.NewVariable("2372952988964786162"), gl.NewVariable("14459600129361968991")},
580	{gl.NewVariable("15958985504784681452"), gl.NewVariable("18297567352909625870")},
581	{gl.NewVariable("5468110010239944205"), gl.NewVariable("1297673223075459793")},
582	{gl.NewVariable("5916958362061888790"), gl.NewVariable("12686064186569549334")},
583	{gl.NewVariable("17141186363273294375"), gl.NewVariable("5330662447468959333")},
584	{gl.NewVariable("9597329746711776008"), gl.NewVariable("13290917949843243492")},
585	{gl.NewVariable("9061260430036409956"), gl.NewVariable("10642927510372211646")},
586	{gl.NewVariable("9766392710518436993"), gl.NewVariable("1864738510099355769")},
587}
588
589// ArithmeticExtensionGate { num_ops: 10 }
590var arithmeticExtensionGateExpectedConstraints = []gl.QuadraticExtensionVariable{
591	{gl.NewVariable("14556369430662721230"), gl.NewVariable("4131185000258568561")},
592	{gl.NewVariable("16378466706564867046"), gl.NewVariable("1439052841211884527")},
593	{gl.NewVariable("8231479592213172392"), gl.NewVariable("8409169031581010782")},
594	{gl.NewVariable("5465959779370835700"), gl.NewVariable("17016702720873000919")},
595	{gl.NewVariable("10611951970626560747"), gl.NewVariable("11015475306668399283")},
596	{gl.NewVariable("6566683434087540889"), gl.NewVariable("7528162900166069532")},
597	{gl.NewVariable("13167150559619768862"), gl.NewVariable("15618445283750881414")},
598	{gl.NewVariable("14768578132422983729"), gl.NewVariable("13938407401080069149")},
599	{gl.NewVariable("18415232841919605685"), gl.NewVariable("15088528771916927003")},
600	{gl.NewVariable("1305736199568141897"), gl.NewVariable("16885250849392919438")},
601	{gl.NewVariable("1425549592953864549"), gl.NewVariable("1074162823816629148")},
602	{gl.NewVariable("12616210534513128803"), gl.NewVariable("8618852250387339753")},
603	{gl.NewVariable("16775588216530426832"), gl.NewVariable("16358913853138883160")},
604	{gl.NewVariable("236831045676808583"), gl.NewVariable("16231688985959438642")},
605	{gl.NewVariable("264831195814170716"), gl.NewVariable("9852325877887114505")},
606	{gl.NewVariable("14065541678187010167"), gl.NewVariable("5594602585697559035")},
607	{gl.NewVariable("2354884863196165822"), gl.NewVariable("12715102096346587892")},
608	{gl.NewVariable("5881791209743274427"), gl.NewVariable("1913490798645218291")},
609	{gl.NewVariable("3621056055759314065"), gl.NewVariable("15076066883455218113")},
610	{gl.NewVariable("15382741815013668685"), gl.NewVariable("5674166256062091576")},
611}
612
613// MulExtensionGate { num_ops: 13 }
614var mulExtensionGateExpectedConstraints = []gl.QuadraticExtensionVariable{
615	{gl.NewVariable("14558272317822654580"), gl.NewVariable("833215892324477732")},
616	{gl.NewVariable("9214806296346539012"), gl.NewVariable("7798842673847612486")},
617	{gl.NewVariable("4933313819253472884"), gl.NewVariable("17115399133104593821")},
618	{gl.NewVariable("6382294466663581729"), gl.NewVariable("8863722647290983592")},
619	{gl.NewVariable("5274430631758054179"), gl.NewVariable("1761561038204031519")},
620	{gl.NewVariable("6975818216493368257"), gl.NewVariable("3643153118790582585")},
621	{gl.NewVariable("9382708770545050748"), gl.NewVariable("2040988809014144797")},
622	{gl.NewVariable("7526300035416853327"), gl.NewVariable("8692405747344509879")},
623	{gl.NewVariable("6092157877842311771"), gl.NewVariable("5767914690949635280")},
624	{gl.NewVariable("3636879736078164520"), gl.NewVariable("454792903724498694")},
625	{gl.NewVariable("5982213211108308130"), gl.NewVariable("3906161453783544349")},
626	{gl.NewVariable("1353999567434327832"), gl.NewVariable("3912356165392315450")},
627	{gl.NewVariable("3866250282554618990"), gl.NewVariable("14215790041865539111")},
628	{gl.NewVariable("16972659905821970574"), gl.NewVariable("2550277288305104044")},
629	{gl.NewVariable("6739526869755283609"), gl.NewVariable("4676222628249438354")},
630	{gl.NewVariable("18314541579046409607"), gl.NewVariable("13871312232745645647")},
631	{gl.NewVariable("13309435341537760906"), gl.NewVariable("10879629980202564460")},
632	{gl.NewVariable("8149445702527176593"), gl.NewVariable("12079787385488004774")},
633	{gl.NewVariable("141936326832390573"), gl.NewVariable("9852981409020916366")},
634	{gl.NewVariable("1174277439708011834"), gl.NewVariable("11084240604056156653")},
635	{gl.NewVariable("3890191667424476902"), gl.NewVariable("1428130379783403165")},
636	{gl.NewVariable("18264002552181363059"), gl.NewVariable("17855293364353531924")},
637	{gl.NewVariable("1657518282890904146"), gl.NewVariable("14874491364689193658")},
638	{gl.NewVariable("9091236796792826297"), gl.NewVariable("18232800981045995203")},
639	{gl.NewVariable("7965395014621568897"), gl.NewVariable("15643014489741966811")},
640	{gl.NewVariable("14048129594584036134"), gl.NewVariable("8880723489474532129")},
641}
642
643// CosetInterpolationGate { subgroup_bits: 4, degree: 6, barycentric_weights: [17293822565076172801, 18374686475376656385, 18446744069413535745, 281474976645120, 17592186044416, 18446744069414584577, 18446744000695107601, 18446744065119617025, 1152921504338411520, 72057594037927936, 18446744069415632897, 18446462594437939201, 18446726477228539905, 18446744069414584065, 68719476720, 4294967296], _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
644var cosetInterpolationGateExpectedConstraints = []gl.QuadraticExtensionVariable{
645	{gl.NewVariable("4489474937116132272"), gl.NewVariable("17966585078409280607")},
646	{gl.NewVariable("6284821823752419954"), gl.NewVariable("15732864946173560339")},
647	{gl.NewVariable("12879723719779486283"), gl.NewVariable("983649133858104142")},
648	{gl.NewVariable("17293136937393925432"), gl.NewVariable("4033193666483141970")},
649	{gl.NewVariable("10809912963683055710"), gl.NewVariable("3166226310305151244")},
650	{gl.NewVariable("13051854837169808452"), gl.NewVariable("12636844243964449888")},
651	{gl.NewVariable("15180422697988222141"), gl.NewVariable("3172471974421734205")},
652	{gl.NewVariable("7715327263429433235"), gl.NewVariable("14269461688353925342")},
653	{gl.NewVariable("7348198793616724228"), gl.NewVariable("11426363269581761252")},
654	{gl.NewVariable("6529761710182712179"), gl.NewVariable("15370899814178958348")},
655	{gl.NewVariable("1312640305437468539"), gl.NewVariable("7416725026793550034")},
656	{gl.NewVariable("7435934314089172319"), gl.NewVariable("8931511780309647479")},
657}
658
659// PoseidonMdsGate(PhantomData<plonky2_field::goldilocks_field::GoldilocksField>)<WIDTH=12>"
660var poseidonMdsGateExpectedConstraints = []gl.QuadraticExtensionVariable{
661	{gl.NewVariable("7821764612044984890"), gl.NewVariable("11645399715550800761")},
662	{gl.NewVariable("7054686226368496581"), gl.NewVariable("3456599659382547499")},
663	{gl.NewVariable("9932401212201586910"), gl.NewVariable("15935184283784595275")},
664	{gl.NewVariable("14850232436396031573"), gl.NewVariable("10054869170615550942")},
665	{gl.NewVariable("17859784214232634920"), gl.NewVariable("3141019307077014353")},
666	{gl.NewVariable("1316926243065869924"), gl.NewVariable("5447399801288094074")},
667	{gl.NewVariable("12198784876096903918"), gl.NewVariable("10976551553233951532")},
668	{gl.NewVariable("3280500541526908156"), gl.NewVariable("1813330468204166522")},
669	{gl.NewVariable("6788483962196012692"), gl.NewVariable("15983747071745976199")},
670	{gl.NewVariable("3372073447943379816"), gl.NewVariable("9356836818900551936")},
671	{gl.NewVariable("13834815153351545489"), gl.NewVariable("1073963211629459057")},
672	{gl.NewVariable("15376716257200419051"), gl.NewVariable("16044430964768811142")},
673	{gl.NewVariable("16752138206727891451"), gl.NewVariable("6303059651352280564")},
674	{gl.NewVariable("17195959285241102556"), gl.NewVariable("10990140109461952122")},
675	{gl.NewVariable("16812594260057394716"), gl.NewVariable("5841834090350584793")},
676	{gl.NewVariable("17706037262140285164"), gl.NewVariable("8626184557677598926")},
677	{gl.NewVariable("6826825357492466350"), gl.NewVariable("17865947929743097490")},
678	{gl.NewVariable("13679887869755160737"), gl.NewVariable("16481628195512675795")},
679	{gl.NewVariable("7881296289635150478"), gl.NewVariable("15368930380652981390")},
680	{gl.NewVariable("12075171536836315078"), gl.NewVariable("12900345753644751245")},
681	{gl.NewVariable("11461113822534614109"), gl.NewVariable("2937306395206947398")},
682	{gl.NewVariable("18365572828001780476"), gl.NewVariable("4309067613742479326")},
683	{gl.NewVariable("9460729461000852035"), gl.NewVariable("9232487430983842586")},
684	{gl.NewVariable("9920817005263779727"), gl.NewVariable("16326126591726196229")},
685}
686
687type TestGateCircuit struct {
688	testGate            gates.Gate
689	ExpectedConstraints []gl.QuadraticExtensionVariable
690}
691
692func (circuit *TestGateCircuit) Define(api frontend.API) error {
693	commonCircuitData := verifier.DeserializeCommonCircuitData("../../data/decode_block/common_circuit_data.json")
694	numSelectors := commonCircuitData.SelectorsInfo.NumSelectors()
695
696	glApi := gl.NewGoldilocksApi(api)
697
698	vars := gates.NewEvaluationVars(localConstants[numSelectors:], localWires, publicInputsHash)
699
700	constraints := circuit.testGate.EvalUnfiltered(api, *glApi, *vars)
701
702	if len(constraints) != len(circuit.ExpectedConstraints) {
703		return errors.New("gate constraints length mismatch")
704	}
705	for i := 0; i < len(constraints); i++ {
706		glApi.AssertIsEqualExtension(constraints[i], circuit.ExpectedConstraints[i])
707	}
708
709	return nil
710}
711
712func TestGates(t *testing.T) {
713	assert := test.NewAssert(t)
714
715	testCase := func(testGate gates.Gate, expectedConstraints []gl.QuadraticExtensionVariable) {
716		circuit := &TestGateCircuit{testGate: testGate, ExpectedConstraints: expectedConstraints}
717		witness := &TestGateCircuit{testGate: testGate, ExpectedConstraints: expectedConstraints}
718		err := test.IsSolved(circuit, witness, ecc.BN254.ScalarField())
719		assert.NoError(err)
720	}
721
722	type gateTest struct {
723		testGate            gates.Gate
724		expectedConstraints []gl.QuadraticExtensionVariable
725	}
726
727	gateTests := []gateTest{
728		{gates.NewPublicInputGate(), publicInputGateExpectedConstraints},
729		{gates.NewBaseSumGate(63, 2), baseSumGateExpectedConstraints},
730		{gates.NewArithmeticGate(20), arithmeticGateExpectedConstraints},
731		{gates.NewRandomAccessGate(4, 4, 2), randomAccessGateExpectedConstraints},
732		{gates.NewPoseidonGate(), poseidonGateExpectedConstraints},
733		{gates.NewArithmeticExtensionGate(10), arithmeticExtensionGateExpectedConstraints},
734		{gates.NewMultiplicationExtensionGate(13), mulExtensionGateExpectedConstraints},
735		{gates.NewReducingExtensionGate(33), reducingExtensionGateExpectedConstraints},
736		{gates.NewReducingGate(44), reducingGateExpectedConstraints},
737		{gates.NewCosetInterpolationGate(
738			4,
739			6,
740			[]goldilocks.Element{
741				goldilocks.NewElement(17293822565076172801),
742				goldilocks.NewElement(18374686475376656385),
743				goldilocks.NewElement(18446744069413535745),
744				goldilocks.NewElement(281474976645120),
745				goldilocks.NewElement(17592186044416),
746				goldilocks.NewElement(18446744069414584577),
747				goldilocks.NewElement(18446744000695107601),
748				goldilocks.NewElement(18446744065119617025),
749				goldilocks.NewElement(1152921504338411520),
750				goldilocks.NewElement(72057594037927936),
751				goldilocks.NewElement(18446744069415632897),
752				goldilocks.NewElement(18446462594437939201),
753				goldilocks.NewElement(18446726477228539905),
754				goldilocks.NewElement(18446744069414584065),
755				goldilocks.NewElement(68719476720),
756				goldilocks.NewElement(4294967296),
757			},
758		), cosetInterpolationGateExpectedConstraints},
759		{&gates.PoseidonMdsGate{}, poseidonMdsGateExpectedConstraints},
760	}
761
762	for _, test := range gateTests {
763		testCase(
764			test.testGate,
765			test.expectedConstraints,
766		)
767	}
768}