package gates_test import ( "errors" "testing" "github.com/consensys/gnark-crypto/field/goldilocks" "github.com/consensys/gnark/frontend" "github.com/consensys/gnark/test" "github.com/succinctlabs/gnark-plonky2-verifier/field" "github.com/succinctlabs/gnark-plonky2-verifier/poseidon" "github.com/succinctlabs/gnark-plonky2-verifier/verifier/internal/gates" "github.com/succinctlabs/gnark-plonky2-verifier/verifier/utils" ) // From recursive_step circuit var localConstants = []field.QuadraticExtension{ {field.NewFieldConst(4962976205186800892), field.NewFieldConst(6982360466972099197)}, {field.NewFieldConst(3587364333101709084), field.NewFieldConst(17496916837371484700)}, {field.NewFieldConst(17287374881609559799), field.NewFieldConst(3152841633956965234)}, {field.NewFieldConst(8531030241248616826), field.NewFieldConst(7753678118587211959)}, {field.NewFieldConst(7622109056373824903), field.NewFieldConst(6523636236475969621)}, } var localWires = []field.QuadraticExtension{ {field.NewFieldConst(5101665081776077058), field.NewFieldConst(13601771238484783081)}, {field.NewFieldConst(13763997788502656587), field.NewFieldConst(6068443864169526207)}, {field.NewFieldConst(10492880302699453810), field.NewFieldConst(11304418575668616669)}, {field.NewFieldConst(2175168501339052813), field.NewFieldConst(3658211467579027796)}, {field.NewFieldConst(11342710587435471757), field.NewFieldConst(658078906333318768)}, {field.NewFieldConst(16590262768413671742), field.NewFieldConst(4678191900868819358)}, {field.NewFieldConst(18412513594273328173), field.NewFieldConst(3981245463942959904)}, {field.NewFieldConst(18150166316938544267), field.NewFieldConst(6968565044901838140)}, {field.NewFieldConst(1048835939602984673), field.NewFieldConst(3511920575130606798)}, {field.NewFieldConst(13693300152826538654), field.NewFieldConst(5872314861500881782)}, {field.NewFieldConst(6394696263219721312), field.NewFieldConst(92364988976021720)}, {field.NewFieldConst(468193345380249942), field.NewFieldConst(4951036536117371576)}, {field.NewFieldConst(9660006729985637684), field.NewFieldConst(14762789799642492635)}, {field.NewFieldConst(10091149087332313493), field.NewFieldConst(13279468039286967053)}, {field.NewFieldConst(12007469191150580744), field.NewFieldConst(2495445179052731885)}, {field.NewFieldConst(14225726459587943147), field.NewFieldConst(13484648741862607201)}, {field.NewFieldConst(15365400400136175672), field.NewFieldConst(12227857303059870833)}, {field.NewFieldConst(1717742269682481687), field.NewFieldConst(14319701537357602192)}, {field.NewFieldConst(2130805637557027375), field.NewFieldConst(9674794597783493233)}, {field.NewFieldConst(4200526016516623452), field.NewFieldConst(1757832412907480092)}, {field.NewFieldConst(4159226258922372229), field.NewFieldConst(2121976810680943769)}, {field.NewFieldConst(2887943290582259162), field.NewFieldConst(10337505797799617185)}, {field.NewFieldConst(14760843822980496189), field.NewFieldConst(16331301823872182680)}, {field.NewFieldConst(14715580754822129725), field.NewFieldConst(13761736659446638375)}, {field.NewFieldConst(6925818640561435525), field.NewFieldConst(14142327999826777974)}, {field.NewFieldConst(14048060513252076245), field.NewFieldConst(14860933194240516940)}, {field.NewFieldConst(3928889853630846436), field.NewFieldConst(16211791673476822740)}, {field.NewFieldConst(15980387576926781891), field.NewFieldConst(6238947314711778055)}, {field.NewFieldConst(15694939331980119296), field.NewFieldConst(8708301222382733590)}, {field.NewFieldConst(192757930858294268), field.NewFieldConst(5400388905722847256)}, {field.NewFieldConst(17614358883814855964), field.NewFieldConst(11499208634388453518)}, {field.NewFieldConst(9523994443422431577), field.NewFieldConst(6835394446482946098)}, {field.NewFieldConst(10096606893378243201), field.NewFieldConst(8982086840326369907)}, {field.NewFieldConst(7328922720001507777), field.NewFieldConst(17298728994563323488)}, {field.NewFieldConst(7038859554184407337), field.NewFieldConst(6498153778103681368)}, {field.NewFieldConst(10610651604960433540), field.NewFieldConst(18240735600936975661)}, {field.NewFieldConst(4310901749476028644), field.NewFieldConst(17813866938235850894)}, {field.NewFieldConst(12456949458361594924), field.NewFieldConst(16541357680870686003)}, {field.NewFieldConst(13986559680062429806), field.NewFieldConst(14210541290696888125)}, {field.NewFieldConst(10299578396192380820), field.NewFieldConst(18011235767871391546)}, {field.NewFieldConst(747566550336808782), field.NewFieldConst(5892109075601553099)}, {field.NewFieldConst(11613383633841665100), field.NewFieldConst(3562006923196410047)}, {field.NewFieldConst(14971867523312360339), field.NewFieldConst(9835080574905235511)}, {field.NewFieldConst(5487884847548072736), field.NewFieldConst(17112808386797082519)}, {field.NewFieldConst(1687420180518659740), field.NewFieldConst(14003627304711288225)}, {field.NewFieldConst(6760442482244819429), field.NewFieldConst(15796493945480647537)}, {field.NewFieldConst(2639939427088481105), field.NewFieldConst(16213109089273184951)}, {field.NewFieldConst(6186345082501710713), field.NewFieldConst(2529053005908871239)}, {field.NewFieldConst(16270115914931256348), field.NewFieldConst(2789355919627681645)}, {field.NewFieldConst(4586999018177783314), field.NewFieldConst(2427837399215959725)}, {field.NewFieldConst(18143358622388343317), field.NewFieldConst(2145167333845152043)}, {field.NewFieldConst(20367062449222124), field.NewFieldConst(14939961527015734373)}, {field.NewFieldConst(16851694158642043266), field.NewFieldConst(5250789952541240163)}, {field.NewFieldConst(273375074794411822), field.NewFieldConst(16211897175907793903)}, {field.NewFieldConst(8905927930385832568), field.NewFieldConst(6540262589846603524)}, {field.NewFieldConst(9283781971254844102), field.NewFieldConst(15115068064900745758)}, {field.NewFieldConst(16002987404851668189), field.NewFieldConst(15226686847545140008)}, {field.NewFieldConst(17201679792194997813), field.NewFieldConst(589849108691638964)}, {field.NewFieldConst(13270753269614250355), field.NewFieldConst(13858862497673084592)}, {field.NewFieldConst(3679908279346826560), field.NewFieldConst(10125726541855725943)}, {field.NewFieldConst(9493227554592600240), field.NewFieldConst(13229107531594530196)}, {field.NewFieldConst(10072423214517113799), field.NewFieldConst(1877804054697703518)}, {field.NewFieldConst(9351494680554520560), field.NewFieldConst(12930187723253788505)}, {field.NewFieldConst(9537056082833040850), field.NewFieldConst(3947445714701039423)}, {field.NewFieldConst(978662253133020143), field.NewFieldConst(17432233037279205717)}, {field.NewFieldConst(13408331971471826902), field.NewFieldConst(8338873650278204671)}, {field.NewFieldConst(10455530172494355126), field.NewFieldConst(14614842120953588617)}, {field.NewFieldConst(3066054670984065145), field.NewFieldConst(11061840675948823020)}, {field.NewFieldConst(1215442291812236170), field.NewFieldConst(6970679356502977963)}, {field.NewFieldConst(16254140688845356393), field.NewFieldConst(16413217415268481315)}, {field.NewFieldConst(5571707217813279614), field.NewFieldConst(2506082641312169038)}, {field.NewFieldConst(18179591596294163519), field.NewFieldConst(16131760445397495720)}, {field.NewFieldConst(9500821197677833979), field.NewFieldConst(14137570623214003877)}, {field.NewFieldConst(18159279414894480072), field.NewFieldConst(316120438770524969)}, {field.NewFieldConst(18164288455905080997), field.NewFieldConst(12889510574086616078)}, {field.NewFieldConst(7158952489901063870), field.NewFieldConst(8855957421923524202)}, {field.NewFieldConst(11785615172910130564), field.NewFieldConst(13242859272114186921)}, {field.NewFieldConst(7978627011292316159), field.NewFieldConst(12030929068833787030)}, {field.NewFieldConst(5676253512795062173), field.NewFieldConst(9401396509276686822)}, {field.NewFieldConst(13934555872940874542), field.NewFieldConst(12262482935570269103)}, {field.NewFieldConst(17018864997992880664), field.NewFieldConst(8399037137658253821)}, {field.NewFieldConst(1846702834278938262), field.NewFieldConst(13210394651984411322)}, {field.NewFieldConst(18406563809882201846), field.NewFieldConst(15807625126691296911)}, {field.NewFieldConst(16192554501791210701), field.NewFieldConst(15105514277710825451)}, {field.NewFieldConst(16115514979166385045), field.NewFieldConst(5618092869410987045)}, {field.NewFieldConst(9816852940756124129), field.NewFieldConst(1617435612712694609)}, {field.NewFieldConst(15012743324956680415), field.NewFieldConst(11098953448520716956)}, {field.NewFieldConst(7370750057902285338), field.NewFieldConst(15456123684241865136)}, {field.NewFieldConst(14924801177398773859), field.NewFieldConst(1116868612459919368)}, {field.NewFieldConst(509701279674911901), field.NewFieldConst(8606220700917290973)}, {field.NewFieldConst(256371784527067555), field.NewFieldConst(18023759020251995084)}, {field.NewFieldConst(4027645791496469270), field.NewFieldConst(6446906876250510281)}, {field.NewFieldConst(8190141658485644545), field.NewFieldConst(3259909135802998300)}, {field.NewFieldConst(11270185749533517292), field.NewFieldConst(7032460358965516338)}, {field.NewFieldConst(12112891112487601597), field.NewFieldConst(3686732542066412082)}, {field.NewFieldConst(18143522178445971138), field.NewFieldConst(6066438010126851248)}, {field.NewFieldConst(16109160830754618815), field.NewFieldConst(2728516440557525242)}, {field.NewFieldConst(14634072837475699881), field.NewFieldConst(423778353213757146)}, {field.NewFieldConst(10421081673554059162), field.NewFieldConst(10142208889746521219)}, {field.NewFieldConst(12957639310809930956), field.NewFieldConst(1709286023553869935)}, {field.NewFieldConst(16217923109113456531), field.NewFieldConst(3257438610376598615)}, {field.NewFieldConst(14024104132094810570), field.NewFieldConst(6065015478137587430)}, {field.NewFieldConst(7972303368219061571), field.NewFieldConst(5413678307283424945)}, {field.NewFieldConst(10367882107777269226), field.NewFieldConst(9366367173763419226)}, {field.NewFieldConst(11506720810821148150), field.NewFieldConst(15210537421649867625)}, {field.NewFieldConst(10979917526797364486), field.NewFieldConst(3365843489182711842)}, {field.NewFieldConst(9176981360155624350), field.NewFieldConst(7315956459698675112)}, {field.NewFieldConst(3964217770504101577), field.NewFieldConst(9088242192411952739)}, {field.NewFieldConst(16243289324567090937), field.NewFieldConst(13379263550784156456)}, {field.NewFieldConst(18105277122985331384), field.NewFieldConst(13639149553905751132)}, {field.NewFieldConst(11145583988660932112), field.NewFieldConst(16125114195985557867)}, {field.NewFieldConst(18437667738670181477), field.NewFieldConst(8593343353929068644)}, {field.NewFieldConst(15549894364614350199), field.NewFieldConst(6234736889764963090)}, {field.NewFieldConst(17753837009416762390), field.NewFieldConst(15297774054893249240)}, {field.NewFieldConst(1465043006528110247), field.NewFieldConst(11029942851654974974)}, {field.NewFieldConst(14312704742949520917), field.NewFieldConst(17324353686056674958)}, {field.NewFieldConst(8078333430227959261), field.NewFieldConst(14797545414164578336)}, {field.NewFieldConst(3544997838139687150), field.NewFieldConst(8846840377946705678)}, {field.NewFieldConst(9981846866090807073), field.NewFieldConst(18142560414179130259)}, {field.NewFieldConst(1256577435119993994), field.NewFieldConst(155745544208227129)}, {field.NewFieldConst(6040293874299819317), field.NewFieldConst(10483265617246740662)}, {field.NewFieldConst(976159477616343697), field.NewFieldConst(6356544693059700239)}, {field.NewFieldConst(4771747444846377672), field.NewFieldConst(2466985401424965488)}, {field.NewFieldConst(9549711421417753693), field.NewFieldConst(9543806479040458857)}, {field.NewFieldConst(5277199124405775998), field.NewFieldConst(6251037001966593402)}, {field.NewFieldConst(13103543598051591262), field.NewFieldConst(2001921170471454234)}, {field.NewFieldConst(1254878001165263070), field.NewFieldConst(17587272030879777460)}, {field.NewFieldConst(2300344156307624878), field.NewFieldConst(14356513038946626528)}, {field.NewFieldConst(2482567400777596327), field.NewFieldConst(3314129985687795881)}, {field.NewFieldConst(16492046206730922155), field.NewFieldConst(1312905854247159931)}, {field.NewFieldConst(3061501132630116372), field.NewFieldConst(13315665946615810001)}, {field.NewFieldConst(16415932954051444990), field.NewFieldConst(925217124969456536)}, {field.NewFieldConst(9764657158286137619), field.NewFieldConst(16039332713210679567)}, {field.NewFieldConst(14993545086997628961), field.NewFieldConst(18010329211070748489)}, {field.NewFieldConst(17327862012036619887), field.NewFieldConst(16962349802452905993)}, {field.NewFieldConst(4826313026336060985), field.NewFieldConst(3597777099127511952)}, } var publicInputsHash = poseidon.PoseidonHashOut{field.ZERO_F, field.ZERO_F, field.ZERO_F, field.ZERO_F} var publicInputGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(5101665081776077058), field.NewFieldConst(13601771238484783081)}, {field.NewFieldConst(13763997788502656587), field.NewFieldConst(6068443864169526207)}, {field.NewFieldConst(10492880302699453810), field.NewFieldConst(11304418575668616669)}, {field.NewFieldConst(2175168501339052813), field.NewFieldConst(3658211467579027796)}, } // BaseSumGate { num_limbs: 63 }), (Base: 2) var baseSumGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(9928715244459351681), field.NewFieldConst(5344081500364361215)}, {field.NewFieldConst(10167164649082076581), field.NewFieldConst(15450889555489725096)}, {field.NewFieldConst(3546584706462116594), field.NewFieldConst(1476426705388693036)}, {field.NewFieldConst(12648634003162244983), field.NewFieldConst(2239452344495239178)}, {field.NewFieldConst(2301087631440580451), field.NewFieldConst(11975672920337250307)}, {field.NewFieldConst(14001554463269171732), field.NewFieldConst(6953207277617809048)}, {field.NewFieldConst(9895590040747031510), field.NewFieldConst(1356956949635190505)}, {field.NewFieldConst(14939964178677988571), field.NewFieldConst(454717738260444218)}, {field.NewFieldConst(12201660109699192297), field.NewFieldConst(12502457673278583036)}, {field.NewFieldConst(1175543972635147885), field.NewFieldConst(11103026408792334489)}, {field.NewFieldConst(3384025741923988904), field.NewFieldConst(2656764746353452717)}, {field.NewFieldConst(10849522185534943138), field.NewFieldConst(13172212508084788997)}, {field.NewFieldConst(10509522572526523739), field.NewFieldConst(2090707475955491976)}, {field.NewFieldConst(13692600715410336206), field.NewFieldConst(7227633217973806771)}, {field.NewFieldConst(8471053080480597138), field.NewFieldConst(2646922138422495173)}, {field.NewFieldConst(555344530120410083), field.NewFieldConst(13860459564781531385)}, {field.NewFieldConst(8748801107049442833), field.NewFieldConst(9263752460533085733)}, {field.NewFieldConst(13633964398888639692), field.NewFieldConst(10068133633095351031)}, {field.NewFieldConst(6911322073377914708), field.NewFieldConst(17978361073083837803)}, {field.NewFieldConst(11223090828346729804), field.NewFieldConst(5006610230932979596)}, {field.NewFieldConst(11581626217660221266), field.NewFieldConst(16347470001077006094)}, {field.NewFieldConst(2924189901864366701), field.NewFieldConst(4309265474738828848)}, {field.NewFieldConst(7275314468944461178), field.NewFieldConst(3109308884739285751)}, {field.NewFieldConst(12416988612575693809), field.NewFieldConst(13772367397588066248)}, {field.NewFieldConst(15438805794425696237), field.NewFieldConst(5809350894111990599)}, {field.NewFieldConst(4275145128501503120), field.NewFieldConst(13230668146909969114)}, {field.NewFieldConst(15244699495724739585), field.NewFieldConst(7672322205441472064)}, {field.NewFieldConst(5429809680618805220), field.NewFieldConst(3153880467220264060)}, {field.NewFieldConst(14715345489518514160), field.NewFieldConst(2246036712337629635)}, {field.NewFieldConst(9359342125434211935), field.NewFieldConst(7844760208539761732)}, {field.NewFieldConst(17550561700498841003), field.NewFieldConst(10851755490050776878)}, {field.NewFieldConst(12192385328855013814), field.NewFieldConst(6629056869404844416)}, {field.NewFieldConst(3424745785197724925), field.NewFieldConst(9833599393425172230)}, {field.NewFieldConst(8602078107149096927), field.NewFieldConst(6592109323720773368)}, {field.NewFieldConst(4109716921881297082), field.NewFieldConst(4396469548700606105)}, {field.NewFieldConst(10400304110319417426), field.NewFieldConst(1229823145437740976)}, {field.NewFieldConst(14853277673343952974), field.NewFieldConst(7653131044140686982)}, {field.NewFieldConst(15831955783787857197), field.NewFieldConst(16541106185743830609)}, {field.NewFieldConst(16097830673407036871), field.NewFieldConst(917501749911433098)}, {field.NewFieldConst(6819428296662518848), field.NewFieldConst(15325182544903569500)}, {field.NewFieldConst(3554857310728040215), field.NewFieldConst(17540168721765377170)}, {field.NewFieldConst(7246216899469226885), field.NewFieldConst(3184709231158489554)}, {field.NewFieldConst(3462793508732024933), field.NewFieldConst(13410498916934897793)}, {field.NewFieldConst(784714181705176804), field.NewFieldConst(8079390288171846846)}, {field.NewFieldConst(4592501261546923410), field.NewFieldConst(6046244648190342248)}, {field.NewFieldConst(14100558314779073910), field.NewFieldConst(9589305391181830029)}, {field.NewFieldConst(7208216654581381179), field.NewFieldConst(16662177305876430630)}, {field.NewFieldConst(13442246990998561849), field.NewFieldConst(6359024918649040199)}, {field.NewFieldConst(16196376030005699590), field.NewFieldConst(5656446490425854681)}, {field.NewFieldConst(16279173216505198700), field.NewFieldConst(6278440230935274234)}, {field.NewFieldConst(9299204333782277508), field.NewFieldConst(5539548698065086849)}, {field.NewFieldConst(531539748103362347), field.NewFieldConst(17008402782657673980)}, {field.NewFieldConst(11956287871118080485), field.NewFieldConst(17776888431041950837)}, {field.NewFieldConst(16795401491637949606), field.NewFieldConst(12112971435724505573)}, {field.NewFieldConst(10141270150228316653), field.NewFieldConst(8738825159351228227)}, {field.NewFieldConst(4249416130151320263), field.NewFieldConst(4171109024390883108)}, {field.NewFieldConst(13565954345346642147), field.NewFieldConst(11300077318998472624)}, {field.NewFieldConst(6006413348327738680), field.NewFieldConst(17429146764001291339)}, {field.NewFieldConst(3009379005164242386), field.NewFieldConst(17911649148503516453)}, {field.NewFieldConst(4172202865347441020), field.NewFieldConst(6700979848078030374)}, {field.NewFieldConst(9692174554453081047), field.NewFieldConst(16461309050820528716)}, {field.NewFieldConst(16012555505188709835), field.NewFieldConst(875036531415994728)}, {field.NewFieldConst(14527388813134058525), field.NewFieldConst(13371873777459370318)}, {field.NewFieldConst(6493493657980111839), field.NewFieldConst(14874520839734823069)}, } // ArithmeticGate { num_ops: 20 } var arithmeticGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(8251494922795803874), field.NewFieldConst(7884328911897949424)}, {field.NewFieldConst(17545754596575389449), field.NewFieldConst(15111927979676704385)}, {field.NewFieldConst(10052040965126353731), field.NewFieldConst(1448153912054014611)}, {field.NewFieldConst(3878848318701063854), field.NewFieldConst(15999854355391952993)}, {field.NewFieldConst(2194699804496089007), field.NewFieldConst(7489112350095609056)}, {field.NewFieldConst(666656317372820215), field.NewFieldConst(8333111246649438880)}, {field.NewFieldConst(15500013716804095980), field.NewFieldConst(7739144386812042617)}, {field.NewFieldConst(2815612394018416154), field.NewFieldConst(15839168197108305099)}, {field.NewFieldConst(12980309813768330187), field.NewFieldConst(12446111953378048591)}, {field.NewFieldConst(1389916348936822477), field.NewFieldConst(2080258147396834809)}, {field.NewFieldConst(3676770229830052631), field.NewFieldConst(8984521981419906260)}, {field.NewFieldConst(4759606161035299488), field.NewFieldConst(18415228017149216426)}, {field.NewFieldConst(6849567585629675684), field.NewFieldConst(15231001333591586187)}, {field.NewFieldConst(17831496121270832947), field.NewFieldConst(1868580989876710210)}, {field.NewFieldConst(12226832860244216901), field.NewFieldConst(12352098694767236965)}, {field.NewFieldConst(9795530155924375772), field.NewFieldConst(4833402654226660686)}, {field.NewFieldConst(7421277748600887772), field.NewFieldConst(16979590244320625600)}, {field.NewFieldConst(4212532134312824848), field.NewFieldConst(7938725153260099101)}, {field.NewFieldConst(17718231164451799422), field.NewFieldConst(13363195988334771788)}, {field.NewFieldConst(5414385531680474153), field.NewFieldConst(13600409983387272243)}, } // RandomAccessGate { bits: 4, num_copies: 4, num_extra_constants: 2, _phantom: PhantomData } var randomAccessGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(18367067186009695282), field.NewFieldConst(6227937229941915629)}, {field.NewFieldConst(342627832935644960), field.NewFieldConst(11262336464371657587)}, {field.NewFieldConst(7711502047853221895), field.NewFieldConst(9814305320358879113)}, {field.NewFieldConst(2436675870898619939), field.NewFieldConst(12171743011114835714)}, {field.NewFieldConst(9224796650008092960), field.NewFieldConst(197827193844666436)}, {field.NewFieldConst(7661651717350955969), field.NewFieldConst(3929163527437938921)}, {field.NewFieldConst(11994613277879586781), field.NewFieldConst(2918199453077793278)}, {field.NewFieldConst(2133315582796573410), field.NewFieldConst(9920472598641951727)}, {field.NewFieldConst(5763420675219782924), field.NewFieldConst(193200772658790662)}, {field.NewFieldConst(14322103909897767697), field.NewFieldConst(2455403487869979318)}, {field.NewFieldConst(3583177870835306708), field.NewFieldConst(15956920993825363087)}, {field.NewFieldConst(15767764327818217757), field.NewFieldConst(17814936958431909187)}, {field.NewFieldConst(7224551806569620055), field.NewFieldConst(1191241782303323453)}, {field.NewFieldConst(3994846439282900915), field.NewFieldConst(16007298430807731888)}, {field.NewFieldConst(1904864531973789879), field.NewFieldConst(9374437322489636375)}, {field.NewFieldConst(17617411600595291430), field.NewFieldConst(11804426503917788826)}, {field.NewFieldConst(5010213812557284606), field.NewFieldConst(8276410914978849008)}, {field.NewFieldConst(13701536021647106057), field.NewFieldConst(5043776904396037625)}, {field.NewFieldConst(4336267979289896624), field.NewFieldConst(8771134635816393433)}, {field.NewFieldConst(17885926480537171976), field.NewFieldConst(9644095314646547597)}, {field.NewFieldConst(17179233085824331332), field.NewFieldConst(6950525108693323209)}, {field.NewFieldConst(9461258042008745175), field.NewFieldConst(6766975264204597922)}, {field.NewFieldConst(10838154179711471883), field.NewFieldConst(16554457937262927355)}, {field.NewFieldConst(5823858951686479642), field.NewFieldConst(10171201631442530906)}, {field.NewFieldConst(17476953112985367168), field.NewFieldConst(12062851564787792403)}, {field.NewFieldConst(7909573710893929152), field.NewFieldConst(6207515797705444652)}, } // PoseidonGate(PhantomData) var poseidonGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(15438805794425696237), field.NewFieldConst(5809350894111990599)}, {field.NewFieldConst(105238306594298866), field.NewFieldConst(6398155585902798861)}, {field.NewFieldConst(5256232026568856387), field.NewFieldConst(9253448664982005262)}, {field.NewFieldConst(6559974022172208218), field.NewFieldConst(14478753759394222537)}, {field.NewFieldConst(7036928093413865537), field.NewFieldConst(895644692646980845)}, {field.NewFieldConst(6350074916129003337), field.NewFieldConst(10418298512623677843)}, {field.NewFieldConst(6618288817893266284), field.NewFieldConst(17565920952415773065)}, {field.NewFieldConst(7214268149308735221), field.NewFieldConst(17797640553663908886)}, {field.NewFieldConst(17038147867485750883), field.NewFieldConst(10766691853641769251)}, {field.NewFieldConst(1228066111137794024), field.NewFieldConst(1267834319488006514)}, {field.NewFieldConst(15317834050441961579), field.NewFieldConst(13280896488837969140)}, {field.NewFieldConst(10135227968960430585), field.NewFieldConst(7096433509203324519)}, {field.NewFieldConst(10733417635899979276), field.NewFieldConst(16819459255105516700)}, {field.NewFieldConst(4231839251429338586), field.NewFieldConst(3213678047797020863)}, {field.NewFieldConst(16271445286187692537), field.NewFieldConst(15377656608157234934)}, {field.NewFieldConst(9356442829698587975), field.NewFieldConst(14633910545825415036)}, {field.NewFieldConst(13952390018297698734), field.NewFieldConst(16325393355066618599)}, {field.NewFieldConst(11399251131586292643), field.NewFieldConst(16257107051968717815)}, {field.NewFieldConst(4274092107872068929), field.NewFieldConst(15550597684938436610)}, {field.NewFieldConst(13076618331457049912), field.NewFieldConst(4958059540220054374)}, {field.NewFieldConst(11650097218963026123), field.NewFieldConst(12070947109214611020)}, {field.NewFieldConst(2700303408109034014), field.NewFieldConst(5968338348636871194)}, {field.NewFieldConst(11508005723655482353), field.NewFieldConst(15224088756564969467)}, {field.NewFieldConst(9328231423353697829), field.NewFieldConst(10577349809783627634)}, {field.NewFieldConst(556544259468984890), field.NewFieldConst(13376447539117215836)}, {field.NewFieldConst(17319865455991589647), field.NewFieldConst(588985536671201497)}, {field.NewFieldConst(9528470026616131077), field.NewFieldConst(7257040911301352274)}, {field.NewFieldConst(14316182132889623635), field.NewFieldConst(9589165219691594711)}, {field.NewFieldConst(10405802815809041956), field.NewFieldConst(13917007789819955074)}, {field.NewFieldConst(12560668105252495616), field.NewFieldConst(3591188232548111694)}, {field.NewFieldConst(14765117357942682611), field.NewFieldConst(10757853341059462467)}, {field.NewFieldConst(6099902163260965551), field.NewFieldConst(11343816861356056114)}, {field.NewFieldConst(1083174255539258286), field.NewFieldConst(7587979659522435417)}, {field.NewFieldConst(2882552180249608570), field.NewFieldConst(7966658657757662554)}, {field.NewFieldConst(13490914415473336227), field.NewFieldConst(63845168436289811)}, {field.NewFieldConst(9459794640071212413), field.NewFieldConst(13417331052474309186)}, {field.NewFieldConst(18328090807516092318), field.NewFieldConst(11807085063599693782)}, {field.NewFieldConst(281059606944328759), field.NewFieldConst(13352248056867426135)}, {field.NewFieldConst(10905177588660050370), field.NewFieldConst(6597328385789442670)}, {field.NewFieldConst(8426356906491012567), field.NewFieldConst(17214424336396001022)}, {field.NewFieldConst(15696035667318839817), field.NewFieldConst(13285870048485492127)}, {field.NewFieldConst(6110244444680672193), field.NewFieldConst(17558548349689468031)}, {field.NewFieldConst(14614078615782659381), field.NewFieldConst(13184024850613726857)}, {field.NewFieldConst(1541592450520953410), field.NewFieldConst(18339388388315914026)}, {field.NewFieldConst(8059386643769157052), field.NewFieldConst(10208764910817462305)}, {field.NewFieldConst(7612459820354975117), field.NewFieldConst(7582060685277695926)}, {field.NewFieldConst(12515587043516861064), field.NewFieldConst(16099239041553682288)}, {field.NewFieldConst(14269196473871652102), field.NewFieldConst(1225067220600668761)}, {field.NewFieldConst(12691255077510636187), field.NewFieldConst(14147201911063761532)}, {field.NewFieldConst(3001134598446056765), field.NewFieldConst(14313090483058155636)}, {field.NewFieldConst(13964993951988177315), field.NewFieldConst(17731737838539414275)}, {field.NewFieldConst(2686259154263524343), field.NewFieldConst(12198712301337570859)}, {field.NewFieldConst(6730431920128908773), field.NewFieldConst(4325394084875720868)}, {field.NewFieldConst(988774723104779817), field.NewFieldConst(8388266879854983623)}, {field.NewFieldConst(8233087560647959985), field.NewFieldConst(7751837576340060020)}, {field.NewFieldConst(9546113779017699592), field.NewFieldConst(4049920632309298778)}, {field.NewFieldConst(3283837251411237060), field.NewFieldConst(13560940050752580093)}, {field.NewFieldConst(10388838746951897109), field.NewFieldConst(454393475113110282)}, {field.NewFieldConst(2208016536897042313), field.NewFieldConst(17105586471193083308)}, {field.NewFieldConst(17683990802267567604), field.NewFieldConst(15398473956537380705)}, {field.NewFieldConst(70612752050386177), field.NewFieldConst(12349994002954022957)}, {field.NewFieldConst(13794244952989612728), field.NewFieldConst(15888581169565306348)}, {field.NewFieldConst(8270800566553141412), field.NewFieldConst(1516938823651329185)}, {field.NewFieldConst(643507941153616368), field.NewFieldConst(3893451216814345882)}, {field.NewFieldConst(16464837166410943694), field.NewFieldConst(11108183142967610977)}, {field.NewFieldConst(9748621820629198396), field.NewFieldConst(3766489907402036319)}, {field.NewFieldConst(3115179618981245947), field.NewFieldConst(10160994694067456423)}, {field.NewFieldConst(4497210741038443097), field.NewFieldConst(6445446770984515259)}, {field.NewFieldConst(5470898125882256227), field.NewFieldConst(8249357863801204908)}, {field.NewFieldConst(16762380205819269382), field.NewFieldConst(172510727904060494)}, {field.NewFieldConst(7920011253931301350), field.NewFieldConst(9681193995678483756)}, {field.NewFieldConst(8258951043315574232), field.NewFieldConst(13137471323476190588)}, {field.NewFieldConst(4339364527801481944), field.NewFieldConst(16862579756243326257)}, {field.NewFieldConst(8980029737458438570), field.NewFieldConst(14651625524257781922)}, {field.NewFieldConst(17935993907375677671), field.NewFieldConst(5318319737405476029)}, {field.NewFieldConst(716791501623731831), field.NewFieldConst(18425818060734993303)}, {field.NewFieldConst(601549076806364660), field.NewFieldConst(12303919727550310013)}, {field.NewFieldConst(18026376178895562118), field.NewFieldConst(14687420532194520529)}, {field.NewFieldConst(16943892475592026666), field.NewFieldConst(7451688507369746594)}, {field.NewFieldConst(8724072308842121373), field.NewFieldConst(11662986251379699921)}, {field.NewFieldConst(3201079129905071298), field.NewFieldConst(11542621183935331871)}, {field.NewFieldConst(9889739070824270529), field.NewFieldConst(3891825006545095657)}, {field.NewFieldConst(15538978715382418651), field.NewFieldConst(2419672705453973015)}, {field.NewFieldConst(3001525234835174062), field.NewFieldConst(17115969716224377534)}, {field.NewFieldConst(18001237923148428045), field.NewFieldConst(2198015511953873786)}, {field.NewFieldConst(14186741561112601666), field.NewFieldConst(13156405199205086627)}, {field.NewFieldConst(10166592177477126663), field.NewFieldConst(13586051001537885658)}, {field.NewFieldConst(8678352780562557555), field.NewFieldConst(1968366090049630482)}, {field.NewFieldConst(5627999915794840395), field.NewFieldConst(13597556392696072088)}, {field.NewFieldConst(9291327714650886898), field.NewFieldConst(2411361999629511024)}, {field.NewFieldConst(6824943761729555359), field.NewFieldConst(7484507209360908175)}, {field.NewFieldConst(6276580084700132178), field.NewFieldConst(6246691657613415035)}, {field.NewFieldConst(10736230409698057656), field.NewFieldConst(7306720219045064925)}, {field.NewFieldConst(15442170485732017109), field.NewFieldConst(1739984147692575725)}, {field.NewFieldConst(4448878124301402845), field.NewFieldConst(18436455114977877323)}, {field.NewFieldConst(638012599023653143), field.NewFieldConst(16265955502846626936)}, {field.NewFieldConst(6793907577559820653), field.NewFieldConst(15343551069946118619)}, {field.NewFieldConst(17903286158968614509), field.NewFieldConst(9559701571149911252)}, {field.NewFieldConst(14652006464960400785), field.NewFieldConst(50421020503848143)}, {field.NewFieldConst(9452858006432860845), field.NewFieldConst(2625726945677447428)}, {field.NewFieldConst(853640589013584892), field.NewFieldConst(14655161412118141649)}, {field.NewFieldConst(12863832006745352780), field.NewFieldConst(14564189651136231029)}, {field.NewFieldConst(8551517270810530438), field.NewFieldConst(10859465327758962622)}, {field.NewFieldConst(10113468436120661191), field.NewFieldConst(16040944006557911589)}, {field.NewFieldConst(4921439225277518643), field.NewFieldConst(8399175422965154512)}, {field.NewFieldConst(13068240354812957183), field.NewFieldConst(8520393046894990946)}, {field.NewFieldConst(1189183420107219532), field.NewFieldConst(18066897627856601789)}, {field.NewFieldConst(3997900004790871153), field.NewFieldConst(1269718920871578117)}, {field.NewFieldConst(15438784576472256462), field.NewFieldConst(9577304425687441047)}, {field.NewFieldConst(17158083218962275971), field.NewFieldConst(17379790274576244684)}, {field.NewFieldConst(3470452736936929010), field.NewFieldConst(12769555113044633230)}, {field.NewFieldConst(18389243269515626865), field.NewFieldConst(8023737530782576805)}, {field.NewFieldConst(3529213023405995549), field.NewFieldConst(8829896701928525938)}, {field.NewFieldConst(14072413770981804653), field.NewFieldConst(9660693090213237836)}, {field.NewFieldConst(14369435038913678671), field.NewFieldConst(7659129852562422871)}, {field.NewFieldConst(6779301728445724040), field.NewFieldConst(18290152515233036523)}, {field.NewFieldConst(8113954200727174254), field.NewFieldConst(16490002532983549952)}, {field.NewFieldConst(11465655095604389561), field.NewFieldConst(9066100972825318010)}, {field.NewFieldConst(15998691377748321442), field.NewFieldConst(16970045124898180365)}, {field.NewFieldConst(8424730626816696233), field.NewFieldConst(17168184083072399403)}, {field.NewFieldConst(1941959246552302666), field.NewFieldConst(6751013195867127440)}, {field.NewFieldConst(1907519456922228224), field.NewFieldConst(689311996911195932)}, {field.NewFieldConst(16277197060525435740), field.NewFieldConst(12018417724719716072)}, } var reducingExtensionGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(12832102811425062912), field.NewFieldConst(2979695993654444095)}, {field.NewFieldConst(4822478941232734654), field.NewFieldConst(2600327308894333341)}, {field.NewFieldConst(12450653411048814602), field.NewFieldConst(1161667420593062956)}, {field.NewFieldConst(3145631295867407955), field.NewFieldConst(1702059944088737075)}, {field.NewFieldConst(4597190091407364771), field.NewFieldConst(4257077286672555409)}, {field.NewFieldConst(10177664366491925772), field.NewFieldConst(10489575701186298604)}, {field.NewFieldConst(2754621968864722399), field.NewFieldConst(12087963411706301871)}, {field.NewFieldConst(534408217555793149), field.NewFieldConst(12559345737194357169)}, {field.NewFieldConst(9508765820222303634), field.NewFieldConst(14102461861317982082)}, {field.NewFieldConst(15070954032232801974), field.NewFieldConst(2078249670161696735)}, {field.NewFieldConst(10465809629504954691), field.NewFieldConst(16223748685835312497)}, {field.NewFieldConst(10957196413441800202), field.NewFieldConst(3841214025425953691)}, {field.NewFieldConst(18438848195188240825), field.NewFieldConst(5697684145424680565)}, {field.NewFieldConst(565455534266129104), field.NewFieldConst(12543354947937779806)}, {field.NewFieldConst(16376588778962418386), field.NewFieldConst(1273250903423198860)}, {field.NewFieldConst(4128104469872810921), field.NewFieldConst(1433037233801071123)}, {field.NewFieldConst(6011337242244377340), field.NewFieldConst(16068106780789397185)}, {field.NewFieldConst(4741354504248328629), field.NewFieldConst(3000853646720964165)}, {field.NewFieldConst(13064594310789140866), field.NewFieldConst(10950406741883971259)}, {field.NewFieldConst(17079026691450750925), field.NewFieldConst(6522027970928818261)}, {field.NewFieldConst(13158136237489326416), field.NewFieldConst(7677629162183242732)}, {field.NewFieldConst(14741398060174921234), field.NewFieldConst(2960243215156352194)}, {field.NewFieldConst(9111161782199179468), field.NewFieldConst(8010960876261510099)}, {field.NewFieldConst(1404837029582986528), field.NewFieldConst(9377230983302764181)}, {field.NewFieldConst(7086781234814455260), field.NewFieldConst(7571558192372650697)}, {field.NewFieldConst(5627013434503229817), field.NewFieldConst(14984048934926143304)}, {field.NewFieldConst(2115495655441739405), field.NewFieldConst(1656704965110317534)}, {field.NewFieldConst(2311846135199651566), field.NewFieldConst(17438437808346967358)}, {field.NewFieldConst(8679806319651401773), field.NewFieldConst(3278538718508560579)}, {field.NewFieldConst(7897681105604536660), field.NewFieldConst(10966573925848082711)}, {field.NewFieldConst(5451958405177630542), field.NewFieldConst(9207735009647199721)}, {field.NewFieldConst(8825486358121162697), field.NewFieldConst(15997852519026522914)}, {field.NewFieldConst(475225211669491693), field.NewFieldConst(1907827506180042626)}, {field.NewFieldConst(16033031089519343732), field.NewFieldConst(15009948832718035672)}, {field.NewFieldConst(5048598591200038865), field.NewFieldConst(156574475928756206)}, {field.NewFieldConst(3580311624647961767), field.NewFieldConst(6084715537433906996)}, {field.NewFieldConst(9121009921295095324), field.NewFieldConst(18407759801432275235)}, {field.NewFieldConst(16569013039730214123), field.NewFieldConst(3930908108224055041)}, {field.NewFieldConst(13844066138909451365), field.NewFieldConst(6585754647203519368)}, {field.NewFieldConst(14133345335167543367), field.NewFieldConst(3946807387480232364)}, {field.NewFieldConst(9876285028806980582), field.NewFieldConst(40898067822033734)}, {field.NewFieldConst(6293483059765701407), field.NewFieldConst(16009270905706605849)}, {field.NewFieldConst(11635947241393753594), field.NewFieldConst(5053395178858294866)}, {field.NewFieldConst(16062194595705166277), field.NewFieldConst(752574348595159408)}, {field.NewFieldConst(15607597716340375230), field.NewFieldConst(10428583315124220143)}, {field.NewFieldConst(6975301479426228318), field.NewFieldConst(16528136630898216147)}, {field.NewFieldConst(16312827398430223622), field.NewFieldConst(17909475722464415780)}, {field.NewFieldConst(2273087545743905667), field.NewFieldConst(12405446777919046866)}, {field.NewFieldConst(14781933506876191161), field.NewFieldConst(4464109151368149713)}, {field.NewFieldConst(4226716729950095934), field.NewFieldConst(8908251769229049654)}, {field.NewFieldConst(8310476487592089883), field.NewFieldConst(3834672170570438819)}, {field.NewFieldConst(4285568636604940795), field.NewFieldConst(7183765355016179794)}, {field.NewFieldConst(14300853697824059506), field.NewFieldConst(16287477445929928328)}, {field.NewFieldConst(1238186507267033247), field.NewFieldConst(12357102109973664962)}, {field.NewFieldConst(15607388919140050768), field.NewFieldConst(15421065238069253306)}, {field.NewFieldConst(12418734453826432586), field.NewFieldConst(12072056126139297564)}, {field.NewFieldConst(3924467115116313620), field.NewFieldConst(1212362379653628161)}, {field.NewFieldConst(8252514850759544679), field.NewFieldConst(7893938436444134034)}, {field.NewFieldConst(711675815009325200), field.NewFieldConst(15678724077367989757)}, {field.NewFieldConst(10920573406841924033), field.NewFieldConst(8189696933773246220)}, {field.NewFieldConst(9737295100232588618), field.NewFieldConst(13383462338120177171)}, {field.NewFieldConst(8983013033045953935), field.NewFieldConst(5301160793103788033)}, {field.NewFieldConst(2086512740154274197), field.NewFieldConst(9511985884344255651)}, {field.NewFieldConst(7404726366142548080), field.NewFieldConst(11257391295697140486)}, {field.NewFieldConst(10045968629671906256), field.NewFieldConst(10721172752468420959)}, {field.NewFieldConst(9499240237398016191), field.NewFieldConst(17996498955496851489)}, } // ReducingGate { num_coeffs: 44 } var reducingGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(4189565386714553574), field.NewFieldConst(14972099283023295929)}, {field.NewFieldConst(4811224976739448335), field.NewFieldConst(17901409314576454439)}, {field.NewFieldConst(5140059407491502784), field.NewFieldConst(1144330742785924570)}, {field.NewFieldConst(7077436393778991453), field.NewFieldConst(13398199711778224412)}, {field.NewFieldConst(11213768990622043903), field.NewFieldConst(3886053425349218150)}, {field.NewFieldConst(2946099412905029571), field.NewFieldConst(16515307040211357295)}, {field.NewFieldConst(11766152895257088950), field.NewFieldConst(12561350435611412995)}, {field.NewFieldConst(15559670172179416359), field.NewFieldConst(14246884723129607378)}, {field.NewFieldConst(5240707719525548158), field.NewFieldConst(1640773599873992510)}, {field.NewFieldConst(14358821079049832289), field.NewFieldConst(2746855687282611080)}, {field.NewFieldConst(3214086216088588558), field.NewFieldConst(1520697626094905530)}, {field.NewFieldConst(9834748172213967248), field.NewFieldConst(13487010468070558667)}, {field.NewFieldConst(1423442768503334248), field.NewFieldConst(10945790255819476518)}, {field.NewFieldConst(2308372186436983690), field.NewFieldConst(8803174935784778070)}, {field.NewFieldConst(9995833078447025147), field.NewFieldConst(9074310518079663649)}, {field.NewFieldConst(14149697874498108875), field.NewFieldConst(15875817120435194028)}, {field.NewFieldConst(14564758547073982656), field.NewFieldConst(13386335755835868953)}, {field.NewFieldConst(6432745607675418074), field.NewFieldConst(8030247499566565321)}, {field.NewFieldConst(17308235779926438117), field.NewFieldConst(16843697410674499818)}, {field.NewFieldConst(15507223129386571868), field.NewFieldConst(3935281607585552366)}, {field.NewFieldConst(16041402982622709805), field.NewFieldConst(12432717078068957835)}, {field.NewFieldConst(6455955094164032063), field.NewFieldConst(2435635342699968412)}, {field.NewFieldConst(9814981570869789379), field.NewFieldConst(5009257884262115226)}, {field.NewFieldConst(9452031978763862902), field.NewFieldConst(15609083603899848676)}, {field.NewFieldConst(13532623109002857304), field.NewFieldConst(7324541443245949391)}, {field.NewFieldConst(7899075212455453622), field.NewFieldConst(14276489152002439614)}, {field.NewFieldConst(2403019844704266911), field.NewFieldConst(5922544710604013781)}, {field.NewFieldConst(9709471021111675830), field.NewFieldConst(5538539165068927028)}, {field.NewFieldConst(15700585567216041265), field.NewFieldConst(17893894492159337326)}, {field.NewFieldConst(8890003199638063977), field.NewFieldConst(17726621767321974437)}, {field.NewFieldConst(389239919653982052), field.NewFieldConst(3497778410650283061)}, {field.NewFieldConst(845227572644858827), field.NewFieldConst(7040344997713673855)}, {field.NewFieldConst(9861253052349275208), field.NewFieldConst(1880449137233040023)}, {field.NewFieldConst(9239454143759318515), field.NewFieldConst(7968256557482935820)}, {field.NewFieldConst(12576879243038758854), field.NewFieldConst(9784626207087825707)}, {field.NewFieldConst(14811673587164089973), field.NewFieldConst(10785522535030299714)}, {field.NewFieldConst(696437091186897361), field.NewFieldConst(13293602092569033065)}, {field.NewFieldConst(1240161179290551759), field.NewFieldConst(9542275505416038259)}, {field.NewFieldConst(5298553932515957396), field.NewFieldConst(14597738151157731445)}, {field.NewFieldConst(8472517818840783225), field.NewFieldConst(7685861056688910111)}, {field.NewFieldConst(10067665523858551777), field.NewFieldConst(13019870415534016025)}, {field.NewFieldConst(3030966178198674680), field.NewFieldConst(10107838846102885642)}, {field.NewFieldConst(6762889891370677550), field.NewFieldConst(16151528872832782368)}, {field.NewFieldConst(17207754552662723664), field.NewFieldConst(15168039969859158460)}, {field.NewFieldConst(9111161782199179468), field.NewFieldConst(8010960876261510099)}, {field.NewFieldConst(1212079098724692260), field.NewFieldConst(3976842077579916925)}, {field.NewFieldConst(8111924351272477885), field.NewFieldConst(1472738463707044435)}, {field.NewFieldConst(14549763060495382561), field.NewFieldConst(8148654488443197206)}, {field.NewFieldConst(9633247645878352168), field.NewFieldConst(4173826759172401145)}, {field.NewFieldConst(13429667484612728110), field.NewFieldConst(139708813783643870)}, {field.NewFieldConst(11164941208889426013), field.NewFieldConst(3615779386887825309)}, {field.NewFieldConst(15733773570058687441), field.NewFieldConst(11172582394325691371)}, {field.NewFieldConst(11237663549079845099), field.NewFieldConst(375954911737718734)}, {field.NewFieldConst(14815280969174152094), field.NewFieldConst(17903238907570421232)}, {field.NewFieldConst(12264332321023153985), field.NewFieldConst(4996015210046477989)}, {field.NewFieldConst(5733452693326962912), field.NewFieldConst(15445457134261228447)}, {field.NewFieldConst(11339891595047637420), field.NewFieldConst(762619178430884475)}, {field.NewFieldConst(10413672060220880988), field.NewFieldConst(2522708614237496949)}, {field.NewFieldConst(4759794002943168525), field.NewFieldConst(8366670758049431064)}, {field.NewFieldConst(11081128192182141387), field.NewFieldConst(5264843790841556843)}, {field.NewFieldConst(16467547707866820269), field.NewFieldConst(10395994280728082037)}, {field.NewFieldConst(7372902852922723938), field.NewFieldConst(6597057511414169148)}, {field.NewFieldConst(1246550990665510080), field.NewFieldConst(369146659419534786)}, {field.NewFieldConst(107137977263990694), field.NewFieldConst(13480217899797734610)}, {field.NewFieldConst(9352391006524927052), field.NewFieldConst(16474580549927501346)}, {field.NewFieldConst(11475195577527382963), field.NewFieldConst(16771481018793784004)}, {field.NewFieldConst(7763817490144412733), field.NewFieldConst(7847907679735875325)}, {field.NewFieldConst(6954934416977006194), field.NewFieldConst(1588175103882481774)}, {field.NewFieldConst(208699790124989138), field.NewFieldConst(104050776110144395)}, {field.NewFieldConst(1999712470949493845), field.NewFieldConst(14640293671425837284)}, {field.NewFieldConst(17489389210332023693), field.NewFieldConst(1485853484717956236)}, {field.NewFieldConst(13389678828109836153), field.NewFieldConst(12239927773742888217)}, {field.NewFieldConst(7279356606052782033), field.NewFieldConst(16889809967345118643)}, {field.NewFieldConst(5530632913824527303), field.NewFieldConst(6593916246324540830)}, {field.NewFieldConst(6517985275757881887), field.NewFieldConst(1094679265639341934)}, {field.NewFieldConst(16005022297334791008), field.NewFieldConst(2231375568117939019)}, {field.NewFieldConst(7801581545066110268), field.NewFieldConst(16195585011186011335)}, {field.NewFieldConst(2346311239309318787), field.NewFieldConst(10194252071441594046)}, {field.NewFieldConst(1333414916806612489), field.NewFieldConst(4078668601880487193)}, {field.NewFieldConst(17162202837341088150), field.NewFieldConst(3946492721743094611)}, {field.NewFieldConst(2372952988964786162), field.NewFieldConst(14459600129361968991)}, {field.NewFieldConst(15958985504784681452), field.NewFieldConst(18297567352909625870)}, {field.NewFieldConst(5468110010239944205), field.NewFieldConst(1297673223075459793)}, {field.NewFieldConst(5916958362061888790), field.NewFieldConst(12686064186569549334)}, {field.NewFieldConst(17141186363273294375), field.NewFieldConst(5330662447468959333)}, {field.NewFieldConst(9597329746711776008), field.NewFieldConst(13290917949843243492)}, {field.NewFieldConst(9061260430036409956), field.NewFieldConst(10642927510372211646)}, {field.NewFieldConst(9766392710518436993), field.NewFieldConst(1864738510099355769)}, } // ArithmeticExtensionGate { num_ops: 10 } var arithmeticExtensionGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(14556369430662721230), field.NewFieldConst(4131185000258568561)}, {field.NewFieldConst(16378466706564867046), field.NewFieldConst(1439052841211884527)}, {field.NewFieldConst(8231479592213172392), field.NewFieldConst(8409169031581010782)}, {field.NewFieldConst(5465959779370835700), field.NewFieldConst(17016702720873000919)}, {field.NewFieldConst(10611951970626560747), field.NewFieldConst(11015475306668399283)}, {field.NewFieldConst(6566683434087540889), field.NewFieldConst(7528162900166069532)}, {field.NewFieldConst(13167150559619768862), field.NewFieldConst(15618445283750881414)}, {field.NewFieldConst(14768578132422983729), field.NewFieldConst(13938407401080069149)}, {field.NewFieldConst(18415232841919605685), field.NewFieldConst(15088528771916927003)}, {field.NewFieldConst(1305736199568141897), field.NewFieldConst(16885250849392919438)}, {field.NewFieldConst(1425549592953864549), field.NewFieldConst(1074162823816629148)}, {field.NewFieldConst(12616210534513128803), field.NewFieldConst(8618852250387339753)}, {field.NewFieldConst(16775588216530426832), field.NewFieldConst(16358913853138883160)}, {field.NewFieldConst(236831045676808583), field.NewFieldConst(16231688985959438642)}, {field.NewFieldConst(264831195814170716), field.NewFieldConst(9852325877887114505)}, {field.NewFieldConst(14065541678187010167), field.NewFieldConst(5594602585697559035)}, {field.NewFieldConst(2354884863196165822), field.NewFieldConst(12715102096346587892)}, {field.NewFieldConst(5881791209743274427), field.NewFieldConst(1913490798645218291)}, {field.NewFieldConst(3621056055759314065), field.NewFieldConst(15076066883455218113)}, {field.NewFieldConst(15382741815013668685), field.NewFieldConst(5674166256062091576)}, } // MulExtensionGate { num_ops: 13 } var mulExtensionGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(14558272317822654580), field.NewFieldConst(833215892324477732)}, {field.NewFieldConst(9214806296346539012), field.NewFieldConst(7798842673847612486)}, {field.NewFieldConst(4933313819253472884), field.NewFieldConst(17115399133104593821)}, {field.NewFieldConst(6382294466663581729), field.NewFieldConst(8863722647290983592)}, {field.NewFieldConst(5274430631758054179), field.NewFieldConst(1761561038204031519)}, {field.NewFieldConst(6975818216493368257), field.NewFieldConst(3643153118790582585)}, {field.NewFieldConst(9382708770545050748), field.NewFieldConst(2040988809014144797)}, {field.NewFieldConst(7526300035416853327), field.NewFieldConst(8692405747344509879)}, {field.NewFieldConst(6092157877842311771), field.NewFieldConst(5767914690949635280)}, {field.NewFieldConst(3636879736078164520), field.NewFieldConst(454792903724498694)}, {field.NewFieldConst(5982213211108308130), field.NewFieldConst(3906161453783544349)}, {field.NewFieldConst(1353999567434327832), field.NewFieldConst(3912356165392315450)}, {field.NewFieldConst(3866250282554618990), field.NewFieldConst(14215790041865539111)}, {field.NewFieldConst(16972659905821970574), field.NewFieldConst(2550277288305104044)}, {field.NewFieldConst(6739526869755283609), field.NewFieldConst(4676222628249438354)}, {field.NewFieldConst(18314541579046409607), field.NewFieldConst(13871312232745645647)}, {field.NewFieldConst(13309435341537760906), field.NewFieldConst(10879629980202564460)}, {field.NewFieldConst(8149445702527176593), field.NewFieldConst(12079787385488004774)}, {field.NewFieldConst(141936326832390573), field.NewFieldConst(9852981409020916366)}, {field.NewFieldConst(1174277439708011834), field.NewFieldConst(11084240604056156653)}, {field.NewFieldConst(3890191667424476902), field.NewFieldConst(1428130379783403165)}, {field.NewFieldConst(18264002552181363059), field.NewFieldConst(17855293364353531924)}, {field.NewFieldConst(1657518282890904146), field.NewFieldConst(14874491364689193658)}, {field.NewFieldConst(9091236796792826297), field.NewFieldConst(18232800981045995203)}, {field.NewFieldConst(7965395014621568897), field.NewFieldConst(15643014489741966811)}, {field.NewFieldConst(14048129594584036134), field.NewFieldConst(8880723489474532129)}, } // 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 } var cosetInterpolationGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(4489474937116132272), field.NewFieldConst(17966585078409280607)}, {field.NewFieldConst(6284821823752419954), field.NewFieldConst(15732864946173560339)}, {field.NewFieldConst(12879723719779486283), field.NewFieldConst(983649133858104142)}, {field.NewFieldConst(17293136937393925432), field.NewFieldConst(4033193666483141970)}, {field.NewFieldConst(10809912963683055710), field.NewFieldConst(3166226310305151244)}, {field.NewFieldConst(13051854837169808452), field.NewFieldConst(12636844243964449888)}, {field.NewFieldConst(15180422697988222141), field.NewFieldConst(3172471974421734205)}, {field.NewFieldConst(7715327263429433235), field.NewFieldConst(14269461688353925342)}, {field.NewFieldConst(7348198793616724228), field.NewFieldConst(11426363269581761252)}, {field.NewFieldConst(6529761710182712179), field.NewFieldConst(15370899814178958348)}, {field.NewFieldConst(1312640305437468539), field.NewFieldConst(7416725026793550034)}, {field.NewFieldConst(7435934314089172319), field.NewFieldConst(8931511780309647479)}, } // PoseidonMdsGate(PhantomData)" var poseidonMdsGateExpectedConstraints = []field.QuadraticExtension{ {field.NewFieldConst(7821764612044984890), field.NewFieldConst(11645399715550800761)}, {field.NewFieldConst(7054686226368496581), field.NewFieldConst(3456599659382547499)}, {field.NewFieldConst(9932401212201586910), field.NewFieldConst(15935184283784595275)}, {field.NewFieldConst(14850232436396031573), field.NewFieldConst(10054869170615550942)}, {field.NewFieldConst(17859784214232634920), field.NewFieldConst(3141019307077014353)}, {field.NewFieldConst(1316926243065869924), field.NewFieldConst(5447399801288094074)}, {field.NewFieldConst(12198784876096903918), field.NewFieldConst(10976551553233951532)}, {field.NewFieldConst(3280500541526908156), field.NewFieldConst(1813330468204166522)}, {field.NewFieldConst(6788483962196012692), field.NewFieldConst(15983747071745976199)}, {field.NewFieldConst(3372073447943379816), field.NewFieldConst(9356836818900551936)}, {field.NewFieldConst(13834815153351545489), field.NewFieldConst(1073963211629459057)}, {field.NewFieldConst(15376716257200419051), field.NewFieldConst(16044430964768811142)}, {field.NewFieldConst(16752138206727891451), field.NewFieldConst(6303059651352280564)}, {field.NewFieldConst(17195959285241102556), field.NewFieldConst(10990140109461952122)}, {field.NewFieldConst(16812594260057394716), field.NewFieldConst(5841834090350584793)}, {field.NewFieldConst(17706037262140285164), field.NewFieldConst(8626184557677598926)}, {field.NewFieldConst(6826825357492466350), field.NewFieldConst(17865947929743097490)}, {field.NewFieldConst(13679887869755160737), field.NewFieldConst(16481628195512675795)}, {field.NewFieldConst(7881296289635150478), field.NewFieldConst(15368930380652981390)}, {field.NewFieldConst(12075171536836315078), field.NewFieldConst(12900345753644751245)}, {field.NewFieldConst(11461113822534614109), field.NewFieldConst(2937306395206947398)}, {field.NewFieldConst(18365572828001780476), field.NewFieldConst(4309067613742479326)}, {field.NewFieldConst(9460729461000852035), field.NewFieldConst(9232487430983842586)}, {field.NewFieldConst(9920817005263779727), field.NewFieldConst(16326126591726196229)}, } type TestGateCircuit struct { testGate gates.Gate ExpectedConstraints []field.QuadraticExtension } func (circuit *TestGateCircuit) Define(api frontend.API) error { commonCircuitData := utils.DeserializeCommonCircuitData("../../data/decode_block/common_circuit_data.json") numSelectors := commonCircuitData.SelectorsInfo.NumSelectors() fieldAPI := field.NewFieldAPI(api) qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI) vars := gates.NewEvaluationVars(localConstants[numSelectors:], localWires, publicInputsHash) constraints := circuit.testGate.EvalUnfiltered(api, qeAPI, *vars) if len(constraints) != len(circuit.ExpectedConstraints) { return errors.New("gate constraints length mismatch") } for i := 0; i < len(constraints); i++ { qeAPI.AssertIsEqual(constraints[i], circuit.ExpectedConstraints[i]) } return nil } func TestGates(t *testing.T) { assert := test.NewAssert(t) testCase := func(testGate gates.Gate, expectedConstraints []field.QuadraticExtension) { circuit := &TestGateCircuit{testGate: testGate, ExpectedConstraints: expectedConstraints} witness := &TestGateCircuit{testGate: testGate, ExpectedConstraints: expectedConstraints} err := test.IsSolved(circuit, witness, field.TEST_CURVE.ScalarField()) assert.NoError(err) } type gateTest struct { testGate gates.Gate expectedConstraints []field.QuadraticExtension } gateTests := []gateTest{ {gates.NewPublicInputGate(), publicInputGateExpectedConstraints}, {gates.NewBaseSumGate(63, 2), baseSumGateExpectedConstraints}, {gates.NewArithmeticGate(20), arithmeticGateExpectedConstraints}, {gates.NewRandomAccessGate(4, 4, 2), randomAccessGateExpectedConstraints}, {gates.NewPoseidonGate(), poseidonGateExpectedConstraints}, {gates.NewArithmeticExtensionGate(10), arithmeticExtensionGateExpectedConstraints}, {gates.NewMultiplicationExtensionGate(13), mulExtensionGateExpectedConstraints}, {gates.NewReducingExtensionGate(33), reducingExtensionGateExpectedConstraints}, {gates.NewReducingGate(44), reducingGateExpectedConstraints}, {gates.NewCosetInterpolationGate( 4, 6, []goldilocks.Element{ goldilocks.NewElement(17293822565076172801), goldilocks.NewElement(18374686475376656385), goldilocks.NewElement(18446744069413535745), goldilocks.NewElement(281474976645120), goldilocks.NewElement(17592186044416), goldilocks.NewElement(18446744069414584577), goldilocks.NewElement(18446744000695107601), goldilocks.NewElement(18446744065119617025), goldilocks.NewElement(1152921504338411520), goldilocks.NewElement(72057594037927936), goldilocks.NewElement(18446744069415632897), goldilocks.NewElement(18446462594437939201), goldilocks.NewElement(18446726477228539905), goldilocks.NewElement(18446744069414584065), goldilocks.NewElement(68719476720), goldilocks.NewElement(4294967296), }, ), cosetInterpolationGateExpectedConstraints}, {&gates.PoseidonMdsGate{}, poseidonMdsGateExpectedConstraints}, } for _, test := range gateTests { testCase( test.testGate, test.expectedConstraints, ) } }