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