You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

807 lines
62 KiB

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(1164933405384298079), field.NewFieldConst(7438400583921661370)},
{field.NewFieldConst(13151230530771189075), field.NewFieldConst(13023721207846057894)},
{field.NewFieldConst(3881971040049882570), field.NewFieldConst(16581297326342691797)},
{field.NewFieldConst(5184944824742294361), field.NewFieldConst(4925002013441838394)},
{field.NewFieldConst(13156856690013129271), field.NewFieldConst(11795766134230417198)},
}
var localWires = []field.QuadraticExtension{
{field.NewFieldConst(10289971018233574142), field.NewFieldConst(4567684908222573778)},
{field.NewFieldConst(11564178579868812087), field.NewFieldConst(4510091545046358953)},
{field.NewFieldConst(2427374067806073277), field.NewFieldConst(6911441533263492425)},
{field.NewFieldConst(7693977127287585254), field.NewFieldConst(9885192257977663560)},
{field.NewFieldConst(4829743769894031521), field.NewFieldConst(1070322096310857911)},
{field.NewFieldConst(841614584488095356), field.NewFieldConst(3266720090708573245)},
{field.NewFieldConst(9335841732020668562), field.NewFieldConst(7959135654284183511)},
{field.NewFieldConst(16824107175117300959), field.NewFieldConst(14823581113270528881)},
{field.NewFieldConst(4989727169526686805), field.NewFieldConst(6246956987038299573)},
{field.NewFieldConst(17410065909497815114), field.NewFieldConst(226319705525892670)},
{field.NewFieldConst(4568933895769710275), field.NewFieldConst(6430695446169305195)},
{field.NewFieldConst(8067075753959020505), field.NewFieldConst(6018662820882606998)},
{field.NewFieldConst(9927277077277524164), field.NewFieldConst(12530942893897967446)},
{field.NewFieldConst(404931240594605346), field.NewFieldConst(13956134990453188947)},
{field.NewFieldConst(12279755093013597997), field.NewFieldConst(13891866662848929655)},
{field.NewFieldConst(3995291408937855383), field.NewFieldConst(7649506537726031013)},
{field.NewFieldConst(1975344541433284175), field.NewFieldConst(11787783246524974192)},
{field.NewFieldConst(9352725388265956899), field.NewFieldConst(1878641993746760905)},
{field.NewFieldConst(4386025806925594020), field.NewFieldConst(7199468962263347888)},
{field.NewFieldConst(457758515510439949), field.NewFieldConst(8295940174808817473)},
{field.NewFieldConst(3721711968672629644), field.NewFieldConst(13268744315779792869)},
{field.NewFieldConst(14873968601320376905), field.NewFieldConst(14469960382794471278)},
{field.NewFieldConst(16643239035786323413), field.NewFieldConst(14266572255541493756)},
{field.NewFieldConst(9756649839930289884), field.NewFieldConst(14084246204123262540)},
{field.NewFieldConst(805087434192149117), field.NewFieldConst(5551650411462295908)},
{field.NewFieldConst(3121050229008788536), field.NewFieldConst(315617444959225213)},
{field.NewFieldConst(18164560008695666572), field.NewFieldConst(6915918288299894752)},
{field.NewFieldConst(17656666988744688487), field.NewFieldConst(9787463123892858839)},
{field.NewFieldConst(9992120570629943241), field.NewFieldConst(18182369503102252267)},
{field.NewFieldConst(15220763248754170044), field.NewFieldConst(1854765527825350374)},
{field.NewFieldConst(15616805521198580886), field.NewFieldConst(8948185005335797211)},
{field.NewFieldConst(5104021995850318050), field.NewFieldConst(10884053699840350390)},
{field.NewFieldConst(14387430073456386871), field.NewFieldConst(3987323970221931246)},
{field.NewFieldConst(9295222033249226038), field.NewFieldConst(14533816739722288989)},
{field.NewFieldConst(3054662272834320691), field.NewFieldConst(5799349468053737645)},
{field.NewFieldConst(15410493100888282738), field.NewFieldConst(9030544573372043855)},
{field.NewFieldConst(11448080360124361095), field.NewFieldConst(13429854637967689056)},
{field.NewFieldConst(4779070979822400436), field.NewFieldConst(5404234368643419051)},
{field.NewFieldConst(11659320767511898018), field.NewFieldConst(13702970547443564662)},
{field.NewFieldConst(16340059712300851313), field.NewFieldConst(20171293486753699)},
{field.NewFieldConst(1475826372470535678), field.NewFieldConst(1253469117109386509)},
{field.NewFieldConst(7562163184139742598), field.NewFieldConst(14347739950500988111)},
{field.NewFieldConst(15976520527988523610), field.NewFieldConst(17889280665602982933)},
{field.NewFieldConst(8598539842276402160), field.NewFieldConst(2411306720494404310)},
{field.NewFieldConst(15713704960139943242), field.NewFieldConst(16396602336341678687)},
{field.NewFieldConst(7189190822731370344), field.NewFieldConst(5963822095937242833)},
{field.NewFieldConst(5977752474999875040), field.NewFieldConst(5328103649776423975)},
{field.NewFieldConst(12531991299101111394), field.NewFieldConst(3159886804356965397)},
{field.NewFieldConst(16883082502877021850), field.NewFieldConst(4442238822519720348)},
{field.NewFieldConst(4348679245531311390), field.NewFieldConst(6663472094175428592)},
{field.NewFieldConst(7628612474113215133), field.NewFieldConst(9324555027165483004)},
{field.NewFieldConst(1900695998785588032), field.NewFieldConst(12588745891116448183)},
{field.NewFieldConst(2202928383842031597), field.NewFieldConst(2024867731300461655)},
{field.NewFieldConst(9288136643086730543), field.NewFieldConst(4131544415785473139)},
{field.NewFieldConst(14704106408467038509), field.NewFieldConst(8573856691828273)},
{field.NewFieldConst(10154176515490297025), field.NewFieldConst(9220235036944332858)},
{field.NewFieldConst(11339644645342271702), field.NewFieldConst(2591119884720569491)},
{field.NewFieldConst(12952838693708363443), field.NewFieldConst(7634778748701478612)},
{field.NewFieldConst(4151157005304656172), field.NewFieldConst(16778323503511515227)},
{field.NewFieldConst(6326750425597671757), field.NewFieldConst(2556963653256638700)},
{field.NewFieldConst(10167058989235599247), field.NewFieldConst(8755493046703376087)},
{field.NewFieldConst(9610925836484089978), field.NewFieldConst(15994816336634155710)},
{field.NewFieldConst(4153283843312210367), field.NewFieldConst(14936117891656525941)},
{field.NewFieldConst(2708678512120193106), field.NewFieldConst(13963185898630435716)},
{field.NewFieldConst(6555777227864205496), field.NewFieldConst(796547906377203466)},
{field.NewFieldConst(9137905566620576524), field.NewFieldConst(5424975077133394401)},
{field.NewFieldConst(10344710254569827655), field.NewFieldConst(5782463375043965385)},
{field.NewFieldConst(5971898539021849982), field.NewFieldConst(8119512366912747083)},
{field.NewFieldConst(10858355567899666102), field.NewFieldConst(18000616751093068478)},
{field.NewFieldConst(16920330711313364238), field.NewFieldConst(8697067496869918100)},
{field.NewFieldConst(7000103501288736536), field.NewFieldConst(10889037926963847627)},
{field.NewFieldConst(2293930382336564785), field.NewFieldConst(1991911172589808532)},
{field.NewFieldConst(16325792322333215740), field.NewFieldConst(10408910622457883954)},
{field.NewFieldConst(7503118294246863546), field.NewFieldConst(3698311130768729720)},
{field.NewFieldConst(8086040183115185263), field.NewFieldConst(5047183760990874466)},
{field.NewFieldConst(9862182807054696027), field.NewFieldConst(1177341139111149965)},
{field.NewFieldConst(16001172854107018622), field.NewFieldConst(10666261425617835543)},
{field.NewFieldConst(5580184714347609844), field.NewFieldConst(12694115766192868759)},
{field.NewFieldConst(18281558831138544975), field.NewFieldConst(3361626347282823513)},
{field.NewFieldConst(3031997905089686532), field.NewFieldConst(15324883672435732043)},
{field.NewFieldConst(450952121891526527), field.NewFieldConst(3760645720813651878)},
{field.NewFieldConst(12802993704800176346), field.NewFieldConst(5762382859373230998)},
{field.NewFieldConst(3276893202573968613), field.NewFieldConst(1800240087286854287)},
{field.NewFieldConst(5921423446901282771), field.NewFieldConst(1701259673949139858)},
{field.NewFieldConst(9599792256793291230), field.NewFieldConst(14953029539933413769)},
{field.NewFieldConst(6924230983683680937), field.NewFieldConst(11341266871925411757)},
{field.NewFieldConst(7369845262101528427), field.NewFieldConst(14511942995651504957)},
{field.NewFieldConst(3575537879709813183), field.NewFieldConst(8500642062708926725)},
{field.NewFieldConst(4175897998808440429), field.NewFieldConst(3374384071922541929)},
{field.NewFieldConst(12757283027846003446), field.NewFieldConst(17905830097386863938)},
{field.NewFieldConst(6320876143845688240), field.NewFieldConst(11931531275984972701)},
{field.NewFieldConst(18217933064159243751), field.NewFieldConst(10071176713368801471)},
{field.NewFieldConst(4777714881679002884), field.NewFieldConst(11864655235286620829)},
{field.NewFieldConst(5051586433049660820), field.NewFieldConst(9706334979530647226)},
{field.NewFieldConst(10142518025690185130), field.NewFieldConst(11625111857426302867)},
{field.NewFieldConst(12942439955200094763), field.NewFieldConst(12974281474830386034)},
{field.NewFieldConst(12714064210006754841), field.NewFieldConst(10541770037347437502)},
{field.NewFieldConst(10048643184275048639), field.NewFieldConst(3986690477062097502)},
{field.NewFieldConst(1705165528883143091), field.NewFieldConst(15274852618321664478)},
{field.NewFieldConst(7505339430009963451), field.NewFieldConst(15833594687115464439)},
{field.NewFieldConst(14969085142351848679), field.NewFieldConst(1313378114647584372)},
{field.NewFieldConst(13860248504174697653), field.NewFieldConst(11813005399232850289)},
{field.NewFieldConst(251943684565772115), field.NewFieldConst(7573719044708266257)},
{field.NewFieldConst(3106490314923518751), field.NewFieldConst(6708785325259176544)},
{field.NewFieldConst(16356137633407478618), field.NewFieldConst(10204772059332988569)},
{field.NewFieldConst(6854820980459043959), field.NewFieldConst(15547517301904265885)},
{field.NewFieldConst(11272546272005349344), field.NewFieldConst(13048057766361438654)},
{field.NewFieldConst(1292326010164513793), field.NewFieldConst(3884499312974286465)},
{field.NewFieldConst(13766861546348177296), field.NewFieldConst(16189793227494584882)},
{field.NewFieldConst(17409073821234659314), field.NewFieldConst(9981103842753464857)},
{field.NewFieldConst(9704863891305672730), field.NewFieldConst(6734589298170331622)},
{field.NewFieldConst(12730115352516859625), field.NewFieldConst(7184752625986384624)},
{field.NewFieldConst(11668345947294231238), field.NewFieldConst(16115042113565080691)},
{field.NewFieldConst(14062084624592649794), field.NewFieldConst(2756332865729973692)},
{field.NewFieldConst(3748768277402965633), field.NewFieldConst(16866814743891506413)},
{field.NewFieldConst(10432481590948249422), field.NewFieldConst(16082227217718892532)},
{field.NewFieldConst(491495918184990934), field.NewFieldConst(6356796615401236136)},
{field.NewFieldConst(17901902629808882123), field.NewFieldConst(13514738065473981771)},
{field.NewFieldConst(12660442011781098101), field.NewFieldConst(6869178288883388452)},
{field.NewFieldConst(4393627135520874514), field.NewFieldConst(18356603129965580261)},
{field.NewFieldConst(677707009508889751), field.NewFieldConst(12680875774839515608)},
{field.NewFieldConst(10378933644525583340), field.NewFieldConst(13309450528739048419)},
{field.NewFieldConst(17340442394158194152), field.NewFieldConst(2264038306172498436)},
{field.NewFieldConst(3370239755875426470), field.NewFieldConst(16608802578078035004)},
{field.NewFieldConst(10934853199725686361), field.NewFieldConst(16013313141655891901)},
{field.NewFieldConst(13594205540632772459), field.NewFieldConst(2004743885124905326)},
{field.NewFieldConst(2746704624744404227), field.NewFieldConst(16776409524391586509)},
{field.NewFieldConst(3958873682280414366), field.NewFieldConst(1600073271711289868)},
{field.NewFieldConst(2428249869256780385), field.NewFieldConst(4540186883415041033)},
{field.NewFieldConst(11471613891518396403), field.NewFieldConst(12378090703999608437)},
{field.NewFieldConst(2473054093631985558), field.NewFieldConst(6016173170699559864)},
{field.NewFieldConst(5753078745189531749), field.NewFieldConst(7917608537613216175)},
{field.NewFieldConst(8855440271433298214), field.NewFieldConst(16093723431433530090)},
{field.NewFieldConst(18386320557740714138), field.NewFieldConst(8240697133069742104)},
{field.NewFieldConst(15199992048380262587), field.NewFieldConst(2301519535136472331)},
{field.NewFieldConst(5102771513133979026), field.NewFieldConst(12570336536575987923)},
}
var publicInputsHash = poseidon.Hash{field.ZERO_F, field.ZERO_F, field.ZERO_F, field.ZERO_F}
var publicInputGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(10289971018233574142), field.NewFieldConst(4567684908222573778)},
{field.NewFieldConst(11564178579868812087), field.NewFieldConst(4510091545046358953)},
{field.NewFieldConst(2427374067806073277), field.NewFieldConst(6911441533263492425)},
{field.NewFieldConst(7693977127287585254), field.NewFieldConst(9885192257977663560)},
}
// BaseSumGate { num_limbs: 63 }), (Base: 2)
var baseSumGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(11424008506420489027), field.NewFieldConst(2915141729320103909)},
{field.NewFieldConst(990850510351998129), field.NewFieldConst(10775195787959069600)},
{field.NewFieldConst(6614688617813304624), field.NewFieldConst(11090441606706959264)},
{field.NewFieldConst(17750388994193092499), field.NewFieldConst(9822716613211085052)},
{field.NewFieldConst(15668686535963465292), field.NewFieldConst(5860790519230132950)},
{field.NewFieldConst(9301693563861638036), field.NewFieldConst(5759072521542705927)},
{field.NewFieldConst(1463677617048504116), field.NewFieldConst(657088188145156737)},
{field.NewFieldConst(11221326157331101168), field.NewFieldConst(3258353713560294154)},
{field.NewFieldConst(6298170343528505052), field.NewFieldConst(1515404430931450244)},
{field.NewFieldConst(10609142393996097059), field.NewFieldConst(5676353771077187085)},
{field.NewFieldConst(15377741222281320), field.NewFieldConst(17210062473996670458)},
{field.NewFieldConst(16623098697475668629), field.NewFieldConst(16010660943931470875)},
{field.NewFieldConst(13742463434921610007), field.NewFieldConst(11069510319782271171)},
{field.NewFieldConst(14872905802739821087), field.NewFieldConst(16577474870939262513)},
{field.NewFieldConst(15699671366929256655), field.NewFieldConst(15598194197245819873)},
{field.NewFieldConst(10679123900573339697), field.NewFieldConst(10228522398312889861)},
{field.NewFieldConst(8872281223292031801), field.NewFieldConst(1329834573379055460)},
{field.NewFieldConst(2535224613123191755), field.NewFieldConst(12786291812393663221)},
{field.NewFieldConst(17788228910394641125), field.NewFieldConst(5545904820430114370)},
{field.NewFieldConst(10489817294122939391), field.NewFieldConst(14636352222428121923)},
{field.NewFieldConst(10852238020744398528), field.NewFieldConst(2312796082809010853)},
{field.NewFieldConst(5067875522341132442), field.NewFieldConst(2107737958122288286)},
{field.NewFieldConst(17283146688878926257), field.NewFieldConst(8456549639899437925)},
{field.NewFieldConst(10637171512256553781), field.NewFieldConst(6390530901963054085)},
{field.NewFieldConst(7586090218847390134), field.NewFieldConst(13687926314033375459)},
{field.NewFieldConst(9523662200490053374), field.NewFieldConst(13361040406642218763)},
{field.NewFieldConst(634822311162237689), field.NewFieldConst(9630483174624222223)},
{field.NewFieldConst(15242934013445465604), field.NewFieldConst(1135488709061427932)},
{field.NewFieldConst(10311174951052257420), field.NewFieldConst(524968500387403585)},
{field.NewFieldConst(6646751050961926593), field.NewFieldConst(8684017064299024213)},
{field.NewFieldConst(16629184374162391253), field.NewFieldConst(13745216788879851113)},
{field.NewFieldConst(15725765914323741961), field.NewFieldConst(4607182206571650287)},
{field.NewFieldConst(4905637093691966606), field.NewFieldConst(218562275165442331)},
{field.NewFieldConst(15526612325511973871), field.NewFieldConst(5770955229659050735)},
{field.NewFieldConst(9591223869277908917), field.NewFieldConst(1518900007157334701)},
{field.NewFieldConst(14713177841944866109), field.NewFieldConst(16661134545564989407)},
{field.NewFieldConst(4236602876840371235), field.NewFieldConst(12185730046300426061)},
{field.NewFieldConst(14844502873470690827), field.NewFieldConst(5567680392033564858)},
{field.NewFieldConst(5550472614893629959), field.NewFieldConst(17955875404530787722)},
{field.NewFieldConst(9965647340229188622), field.NewFieldConst(12067752288619191155)},
{field.NewFieldConst(15624184226617424434), field.NewFieldConst(13522086059807517857)},
{field.NewFieldConst(6001948917737119729), field.NewFieldConst(10555349705067997421)},
{field.NewFieldConst(7967852853408273634), field.NewFieldConst(16393445105337145265)},
{field.NewFieldConst(13601491066758079307), field.NewFieldConst(11390709918813075818)},
{field.NewFieldConst(5704706916270196865), field.NewFieldConst(17007264058732032659)},
{field.NewFieldConst(18354610167186324196), field.NewFieldConst(16917152819910011122)},
{field.NewFieldConst(6026824824087688959), field.NewFieldConst(11547555659280958524)},
{field.NewFieldConst(15645938871784252821), field.NewFieldConst(12381341093764170444)},
{field.NewFieldConst(1202470274460413029), field.NewFieldConst(3583599940021118482)},
{field.NewFieldConst(5248479930891455774), field.NewFieldConst(2393692482194449448)},
{field.NewFieldConst(13386434971986911647), field.NewFieldConst(12326376082602154018)},
{field.NewFieldConst(11327299405009394635), field.NewFieldConst(7538844592867989882)},
{field.NewFieldConst(7984839537656677309), field.NewFieldConst(6441274039505923023)},
{field.NewFieldConst(3942932013374375924), field.NewFieldConst(6548354659360045418)},
{field.NewFieldConst(10139699962065730425), field.NewFieldConst(16908585391181627242)},
{field.NewFieldConst(18094104343668325187), field.NewFieldConst(8370083050741645827)},
{field.NewFieldConst(12131340922292526267), field.NewFieldConst(17299488555769517106)},
{field.NewFieldConst(11470330746430670818), field.NewFieldConst(15960507373360402879)},
{field.NewFieldConst(386512699105836065), field.NewFieldConst(8986007306829996238)},
{field.NewFieldConst(1834598616243509000), field.NewFieldConst(14626792908408543748)},
{field.NewFieldConst(17890037858181404101), field.NewFieldConst(17018218424290394313)},
{field.NewFieldConst(11758664078194540174), field.NewFieldConst(16603941107284246147)},
{field.NewFieldConst(14022184733842887279), field.NewFieldConst(13741139908708752348)},
{field.NewFieldConst(4836630213324422487), field.NewFieldConst(222498232493222193)},
}
// ArithmeticGate { num_ops: 20 }
var arithmeticGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(12119614175182896132), field.NewFieldConst(9100747776469133669)},
{field.NewFieldConst(1435113994507051493), field.NewFieldConst(16937897191584383857)},
{field.NewFieldConst(51616472710099652), field.NewFieldConst(4146295929435411488)},
{field.NewFieldConst(92237181388579392), field.NewFieldConst(12824787281527009080)},
{field.NewFieldConst(11063958613047368831), field.NewFieldConst(516751095582253219)},
{field.NewFieldConst(8881502495740733965), field.NewFieldConst(5405782271334426100)},
{field.NewFieldConst(9646745645960524278), field.NewFieldConst(6323317609176095073)},
{field.NewFieldConst(10334354202446659881), field.NewFieldConst(17865166204439996809)},
{field.NewFieldConst(9511789862027881130), field.NewFieldConst(17897392861017078901)},
{field.NewFieldConst(4686618214331097217), field.NewFieldConst(7102232698145277151)},
{field.NewFieldConst(5140381642477065044), field.NewFieldConst(15554316144351441473)},
{field.NewFieldConst(14252043934312871974), field.NewFieldConst(1198292921407928539)},
{field.NewFieldConst(13289413398237564138), field.NewFieldConst(15704998539419457452)},
{field.NewFieldConst(4800979510155331538), field.NewFieldConst(14057404157182035427)},
{field.NewFieldConst(17908028924715246889), field.NewFieldConst(8716376706845369224)},
{field.NewFieldConst(3226678693544038862), field.NewFieldConst(5577680088492344738)},
{field.NewFieldConst(10987852156126930017), field.NewFieldConst(16323667584216755558)},
{field.NewFieldConst(5135981108938961064), field.NewFieldConst(6684115991562770960)},
{field.NewFieldConst(8519638889718596339), field.NewFieldConst(7662028578892995756)},
{field.NewFieldConst(7747323897933750795), field.NewFieldConst(6872730347313691927)},
}
// RandomAccessGate { bits: 4, num_copies: 4, num_extra_constants: 2, _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
var randomAccessGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(2891299230460455680), field.NewFieldConst(12638923114586787038)},
{field.NewFieldConst(10369791235277272383), field.NewFieldConst(11178254747952182382)},
{field.NewFieldConst(2609100974341658152), field.NewFieldConst(7141157629969452340)},
{field.NewFieldConst(10885639242129231953), field.NewFieldConst(10224819739496777877)},
{field.NewFieldConst(15486139493712450489), field.NewFieldConst(17924944477102802615)},
{field.NewFieldConst(5969758517166950176), field.NewFieldConst(4139464862931677318)},
{field.NewFieldConst(7251510967440451429), field.NewFieldConst(11634060506931912043)},
{field.NewFieldConst(581371472896562405), field.NewFieldConst(1340263685452848185)},
{field.NewFieldConst(11876289968532354241), field.NewFieldConst(39606365246086104)},
{field.NewFieldConst(17037991399414168046), field.NewFieldConst(9356315359108087151)},
{field.NewFieldConst(13506822543872334969), field.NewFieldConst(14166594210473057923)},
{field.NewFieldConst(530968584207084639), field.NewFieldConst(12346975065647187607)},
{field.NewFieldConst(8780439534301283756), field.NewFieldConst(14250307971393105395)},
{field.NewFieldConst(5955166439403627952), field.NewFieldConst(427818832806268253)},
{field.NewFieldConst(10383473532295208089), field.NewFieldConst(10834018170496866410)},
{field.NewFieldConst(17770159895239813531), field.NewFieldConst(3803908573438301448)},
{field.NewFieldConst(5230956285821863871), field.NewFieldConst(13187949446452303832)},
{field.NewFieldConst(4082775007574051589), field.NewFieldConst(17608951079871259588)},
{field.NewFieldConst(15832332042406144153), field.NewFieldConst(9112933169473505864)},
{field.NewFieldConst(17289713569232165217), field.NewFieldConst(764355564171754371)},
{field.NewFieldConst(11875388597093781742), field.NewFieldConst(17390337221018798452)},
{field.NewFieldConst(14723779398624676305), field.NewFieldConst(4351422752569601515)},
{field.NewFieldConst(7898206414568399642), field.NewFieldConst(3781389637016766144)},
{field.NewFieldConst(10959059343195760030), field.NewFieldConst(17524903422154932359)},
{field.NewFieldConst(7305896571823662942), field.NewFieldConst(12962835460398538761)},
{field.NewFieldConst(5653738395766265725), field.NewFieldConst(8097455003461687478)},
}
// PoseidonGate(PhantomData<plonky2_field::goldilocks_field::GoldilocksField>)<WIDTH=12>
var poseidonGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(7586090218847390134), field.NewFieldConst(13687926314033375459)},
{field.NewFieldConst(10774680496478357997), field.NewFieldConst(14419929234728022600)},
{field.NewFieldConst(983485807903636414), field.NewFieldConst(3028876395437704592)},
{field.NewFieldConst(5873163034459252869), field.NewFieldConst(11720300428168955402)},
{field.NewFieldConst(16261775977438390033), field.NewFieldConst(15598817592005081227)},
{field.NewFieldConst(3308439339359285309), field.NewFieldConst(16350160944703138332)},
{field.NewFieldConst(2477915029208949035), field.NewFieldConst(10909058342937234971)},
{field.NewFieldConst(2006101431747008114), field.NewFieldConst(1317396811566929515)},
{field.NewFieldConst(5743380333218483835), field.NewFieldConst(9864892326580372485)},
{field.NewFieldConst(4343047746155696133), field.NewFieldConst(2452956674303649004)},
{field.NewFieldConst(18237771591472199486), field.NewFieldConst(9201720967486340889)},
{field.NewFieldConst(7997743545022954538), field.NewFieldConst(5790905224346459337)},
{field.NewFieldConst(7270313259765139533), field.NewFieldConst(13664497978956485388)},
{field.NewFieldConst(11627392666242516567), field.NewFieldConst(6707531853885096654)},
{field.NewFieldConst(14108041676779390728), field.NewFieldConst(13890317640467961363)},
{field.NewFieldConst(10461937206408578346), field.NewFieldConst(16929842020525911045)},
{field.NewFieldConst(14163490001894639417), field.NewFieldConst(6486250350832733344)},
{field.NewFieldConst(6025822272051423893), field.NewFieldConst(6875599327185319749)},
{field.NewFieldConst(11800406778761598568), field.NewFieldConst(13445736562420900345)},
{field.NewFieldConst(8721632296347252438), field.NewFieldConst(15861696011210243831)},
{field.NewFieldConst(13862698645551446166), field.NewFieldConst(10895802231885823011)},
{field.NewFieldConst(9467131299943023152), field.NewFieldConst(508610840287781764)},
{field.NewFieldConst(10369576299876905473), field.NewFieldConst(1319089684709412204)},
{field.NewFieldConst(17202741125808968481), field.NewFieldConst(4132975454251812345)},
{field.NewFieldConst(4939406044782203142), field.NewFieldConst(18100435685377738067)},
{field.NewFieldConst(2662601992953696766), field.NewFieldConst(5356898997486457355)},
{field.NewFieldConst(12240740991568526347), field.NewFieldConst(14183052793978601368)},
{field.NewFieldConst(17267799754824241908), field.NewFieldConst(15067892579134674951)},
{field.NewFieldConst(3885637219153712510), field.NewFieldConst(2045928245539296545)},
{field.NewFieldConst(7614199998298216925), field.NewFieldConst(13135807303144108264)},
{field.NewFieldConst(12232208765790877245), field.NewFieldConst(6790391920585566719)},
{field.NewFieldConst(14027621788671850076), field.NewFieldConst(8244116705079721069)},
{field.NewFieldConst(18361849947075265980), field.NewFieldConst(636640170174188211)},
{field.NewFieldConst(15400723839777269850), field.NewFieldConst(7187627113110641974)},
{field.NewFieldConst(11208418886499216060), field.NewFieldConst(1068905181682993370)},
{field.NewFieldConst(8741978871712571992), field.NewFieldConst(11893984108008599655)},
{field.NewFieldConst(5904231306484990036), field.NewFieldConst(10974042651195177783)},
{field.NewFieldConst(12306264278608747297), field.NewFieldConst(6054935933756948006)},
{field.NewFieldConst(4439661353730067518), field.NewFieldConst(13536513851562309841)},
{field.NewFieldConst(13020734370698999772), field.NewFieldConst(163773705062531020)},
{field.NewFieldConst(10365756846699668634), field.NewFieldConst(5245413619357449)},
{field.NewFieldConst(15929862436085820709), field.NewFieldConst(10957910821863876318)},
{field.NewFieldConst(977018799724983158), field.NewFieldConst(15040949766668867994)},
{field.NewFieldConst(2993125862244950582), field.NewFieldConst(13234404554976574543)},
{field.NewFieldConst(14122201262568632993), field.NewFieldConst(93763383340088526)},
{field.NewFieldConst(8975477202804925208), field.NewFieldConst(1040893022864763499)},
{field.NewFieldConst(7725813871064262870), field.NewFieldConst(14455479145922718826)},
{field.NewFieldConst(1073062170185630790), field.NewFieldConst(16407856079088655345)},
{field.NewFieldConst(17737117878818849535), field.NewFieldConst(1900599912944642061)},
{field.NewFieldConst(12256168642879070567), field.NewFieldConst(8539769760609459864)},
{field.NewFieldConst(15141228232285134803), field.NewFieldConst(897120225935075003)},
{field.NewFieldConst(3388596123376728329), field.NewFieldConst(5128230734992475590)},
{field.NewFieldConst(8733319491992764673), field.NewFieldConst(1928863683866117576)},
{field.NewFieldConst(5203485787146767490), field.NewFieldConst(12954094447445057610)},
{field.NewFieldConst(5201734155949618873), field.NewFieldConst(3995115267673262244)},
{field.NewFieldConst(8666839426855174616), field.NewFieldConst(3659748522909014185)},
{field.NewFieldConst(9240426493517714121), field.NewFieldConst(12895319645103780590)},
{field.NewFieldConst(10104523192405168095), field.NewFieldConst(8335084014759232790)},
{field.NewFieldConst(12471660706832322357), field.NewFieldConst(16692471091408210242)},
{field.NewFieldConst(7713567301004647325), field.NewFieldConst(2346765742178693341)},
{field.NewFieldConst(5087966313974874861), field.NewFieldConst(17995538175842083522)},
{field.NewFieldConst(1103485120645095922), field.NewFieldConst(17358959631107792889)},
{field.NewFieldConst(16443030134912318512), field.NewFieldConst(4694929981527462915)},
{field.NewFieldConst(5229836547906072694), field.NewFieldConst(10529861755371621018)},
{field.NewFieldConst(17706463046886551260), field.NewFieldConst(7014625543777947259)},
{field.NewFieldConst(17494246083650429806), field.NewFieldConst(10059232320812188522)},
{field.NewFieldConst(6009623857477500128), field.NewFieldConst(9041821915077023327)},
{field.NewFieldConst(15414837134646072506), field.NewFieldConst(17735866267331281406)},
{field.NewFieldConst(9582418254228040565), field.NewFieldConst(9475780400052940525)},
{field.NewFieldConst(3850010214259020229), field.NewFieldConst(2344916032711572881)},
{field.NewFieldConst(3276478492985700631), field.NewFieldConst(9347511148183965796)},
{field.NewFieldConst(4260955157349956538), field.NewFieldConst(3737557221553060525)},
{field.NewFieldConst(1814028760671441115), field.NewFieldConst(1709540851509897224)},
{field.NewFieldConst(304220870213251471), field.NewFieldConst(18339319635968408171)},
{field.NewFieldConst(6309601903165399081), field.NewFieldConst(4611660338915358676)},
{field.NewFieldConst(5440836432197140901), field.NewFieldConst(835184832962669050)},
{field.NewFieldConst(4132483007111889331), field.NewFieldConst(17679464861654166329)},
{field.NewFieldConst(12071698679631585615), field.NewFieldConst(3526806430507304767)},
{field.NewFieldConst(16570124099871162516), field.NewFieldConst(16394949299416922104)},
{field.NewFieldConst(11779301434103087470), field.NewFieldConst(9928702854994401626)},
{field.NewFieldConst(486097273023099818), field.NewFieldConst(1666631222233964241)},
{field.NewFieldConst(13426511095962901265), field.NewFieldConst(16977352762229561063)},
{field.NewFieldConst(7848259968166982335), field.NewFieldConst(8923641610835432771)},
{field.NewFieldConst(6717523783985825261), field.NewFieldConst(8442698012198213832)},
{field.NewFieldConst(16551829854897630528), field.NewFieldConst(1207332518477764340)},
{field.NewFieldConst(9552262459546034571), field.NewFieldConst(4701791517562735608)},
{field.NewFieldConst(6527201331407091692), field.NewFieldConst(10762913938781033944)},
{field.NewFieldConst(11212416663128404375), field.NewFieldConst(6847749339754298086)},
{field.NewFieldConst(10791247438031342492), field.NewFieldConst(3448715099533950037)},
{field.NewFieldConst(1719220253088662156), field.NewFieldConst(15702968714187742357)},
{field.NewFieldConst(14008817631758138024), field.NewFieldConst(17297897981954620228)},
{field.NewFieldConst(7768014097976613936), field.NewFieldConst(15806402621409309279)},
{field.NewFieldConst(3886721256453659755), field.NewFieldConst(16395869594056206627)},
{field.NewFieldConst(13997073954856864246), field.NewFieldConst(1233051863712529371)},
{field.NewFieldConst(11334349192463912274), field.NewFieldConst(5454820034730801470)},
{field.NewFieldConst(7648426950649263998), field.NewFieldConst(9412547620105462810)},
{field.NewFieldConst(2869115266070242006), field.NewFieldConst(9873001547032180059)},
{field.NewFieldConst(11864269740491424738), field.NewFieldConst(3771973823544233765)},
{field.NewFieldConst(9374340554044631499), field.NewFieldConst(11414175937704649426)},
{field.NewFieldConst(8970748854700874383), field.NewFieldConst(2703579039677419011)},
{field.NewFieldConst(3743841601176432106), field.NewFieldConst(11043980835019875782)},
{field.NewFieldConst(1654705359096618107), field.NewFieldConst(4374088811382131752)},
{field.NewFieldConst(10209435051454821145), field.NewFieldConst(4087979231575661143)},
{field.NewFieldConst(9566392584670645438), field.NewFieldConst(5102479111558561813)},
{field.NewFieldConst(4542214823227660682), field.NewFieldConst(16447152846983873546)},
{field.NewFieldConst(3619667706484141693), field.NewFieldConst(3976495805371636999)},
{field.NewFieldConst(14677559952589127978), field.NewFieldConst(1506330427474903904)},
{field.NewFieldConst(9618330319963013853), field.NewFieldConst(7774314641304317232)},
{field.NewFieldConst(15136595569611237026), field.NewFieldConst(6241976546079100101)},
{field.NewFieldConst(6190131967820348937), field.NewFieldConst(8898314655028146727)},
{field.NewFieldConst(10664902807329902141), field.NewFieldConst(399679411582475270)},
{field.NewFieldConst(4620231951016842028), field.NewFieldConst(14227502135369964656)},
{field.NewFieldConst(14442830168084065060), field.NewFieldConst(18194643570654368962)},
{field.NewFieldConst(6026772169794354979), field.NewFieldConst(15538586941211648185)},
{field.NewFieldConst(3305763071851691617), field.NewFieldConst(7414963068017211970)},
{field.NewFieldConst(2348819716102409971), field.NewFieldConst(3414253607649082297)},
{field.NewFieldConst(5561613987159516190), field.NewFieldConst(18108137586585031915)},
{field.NewFieldConst(11622858756456645517), field.NewFieldConst(5481788959889711288)},
{field.NewFieldConst(14329441999576805903), field.NewFieldConst(7316385947805485474)},
{field.NewFieldConst(6619906970666076294), field.NewFieldConst(11606453814479815487)},
{field.NewFieldConst(273184393202580706), field.NewFieldConst(15538333835729971074)},
{field.NewFieldConst(16891566794426605557), field.NewFieldConst(432853148035369520)},
{field.NewFieldConst(3134481789780853760), field.NewFieldConst(10023938129020275945)},
}
var reducingExtensionGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(12512260201049243975), field.NewFieldConst(5104620179714279781)},
{field.NewFieldConst(13013016297591764071), field.NewFieldConst(3905565448987160512)},
{field.NewFieldConst(18168316387479509651), field.NewFieldConst(15285510648877030958)},
{field.NewFieldConst(2704136035168106924), field.NewFieldConst(17701154289967205509)},
{field.NewFieldConst(6350634844525158810), field.NewFieldConst(6841530668953763541)},
{field.NewFieldConst(14558428225759052231), field.NewFieldConst(6228114011555775975)},
{field.NewFieldConst(11984059988070020226), field.NewFieldConst(6404501976404464308)},
{field.NewFieldConst(7499833675686066082), field.NewFieldConst(13203954482927844021)},
{field.NewFieldConst(53729277296365862), field.NewFieldConst(11604944835579274791)},
{field.NewFieldConst(649276793194856338), field.NewFieldConst(15769159485820654298)},
{field.NewFieldConst(7220059241713171194), field.NewFieldConst(7593947467996717503)},
{field.NewFieldConst(11725388872832717991), field.NewFieldConst(2472966042937251891)},
{field.NewFieldConst(17103067711705259268), field.NewFieldConst(12741737218458998807)},
{field.NewFieldConst(2053029714235535081), field.NewFieldConst(5621084618445985853)},
{field.NewFieldConst(394074652594148954), field.NewFieldConst(14480160107167739683)},
{field.NewFieldConst(16319639492172307693), field.NewFieldConst(18262596047016856354)},
{field.NewFieldConst(7349401242823131130), field.NewFieldConst(16637643780538375248)},
{field.NewFieldConst(2968776512542894745), field.NewFieldConst(7967382686110631950)},
{field.NewFieldConst(4131567287142440211), field.NewFieldConst(16488573781037653146)},
{field.NewFieldConst(3210618110340609396), field.NewFieldConst(15575562053796139855)},
{field.NewFieldConst(866179987510198517), field.NewFieldConst(1621207644178469397)},
{field.NewFieldConst(13787839347867512750), field.NewFieldConst(5082451965770365331)},
{field.NewFieldConst(16727747831341625951), field.NewFieldConst(17003066965000183599)},
{field.NewFieldConst(5844378810576570680), field.NewFieldConst(7917389141334353441)},
{field.NewFieldConst(2806785896842529320), field.NewFieldConst(2418902247526900913)},
{field.NewFieldConst(16911660151499877134), field.NewFieldConst(12021165187528883860)},
{field.NewFieldConst(17281860563566587308), field.NewFieldConst(907492056629373413)},
{field.NewFieldConst(2149753706739034128), field.NewFieldConst(12371022473774589200)},
{field.NewFieldConst(7841056796552151745), field.NewFieldConst(3143088841967149638)},
{field.NewFieldConst(11915031067231681577), field.NewFieldConst(18108223564563708813)},
{field.NewFieldConst(2094314575212662773), field.NewFieldConst(188561272841399737)},
{field.NewFieldConst(16712479120741377751), field.NewFieldConst(13153292267876520211)},
{field.NewFieldConst(11528911604171979726), field.NewFieldConst(889050185568489714)},
{field.NewFieldConst(13117878881472895975), field.NewFieldConst(2608864599443833112)},
{field.NewFieldConst(310976139454954605), field.NewFieldConst(271726012479588385)},
{field.NewFieldConst(4724981023605656141), field.NewFieldConst(7786903198345013664)},
{field.NewFieldConst(7358470379588594806), field.NewFieldConst(5500290420069122896)},
{field.NewFieldConst(11249736961064437940), field.NewFieldConst(7500992311029866319)},
{field.NewFieldConst(16247982877846154545), field.NewFieldConst(18437922661172982146)},
{field.NewFieldConst(14828806288276948771), field.NewFieldConst(161861918745757497)},
{field.NewFieldConst(12207866405175784678), field.NewFieldConst(17882395070256177480)},
{field.NewFieldConst(1862300191557939305), field.NewFieldConst(12946149812989300425)},
{field.NewFieldConst(113183958399514852), field.NewFieldConst(6003153612730483196)},
{field.NewFieldConst(17112839880895845290), field.NewFieldConst(3628345828628316007)},
{field.NewFieldConst(8779978792406228661), field.NewFieldConst(11992923889396921201)},
{field.NewFieldConst(6179077038148294340), field.NewFieldConst(11713998999910876710)},
{field.NewFieldConst(13454002959297605186), field.NewFieldConst(2204743745696912515)},
{field.NewFieldConst(15623020893752344305), field.NewFieldConst(13749522681861530980)},
{field.NewFieldConst(6206230970377487041), field.NewFieldConst(16389331421791613953)},
{field.NewFieldConst(2425462828014799977), field.NewFieldConst(1558769431852532736)},
{field.NewFieldConst(2327926263345738065), field.NewFieldConst(8779034796068602190)},
{field.NewFieldConst(14563770135458078041), field.NewFieldConst(6494115966350812505)},
{field.NewFieldConst(8082502921781233722), field.NewFieldConst(7935499582140944140)},
{field.NewFieldConst(14539277379887693704), field.NewFieldConst(5161629331161118775)},
{field.NewFieldConst(13736527598285458228), field.NewFieldConst(7309962536813433388)},
{field.NewFieldConst(13933813405709515396), field.NewFieldConst(17798686485131016236)},
{field.NewFieldConst(8897530535975229493), field.NewFieldConst(14404791097089986313)},
{field.NewFieldConst(18088311324021484864), field.NewFieldConst(11991882587468162630)},
{field.NewFieldConst(8956488301372897339), field.NewFieldConst(8045253716620738816)},
{field.NewFieldConst(16016384501418916541), field.NewFieldConst(3181272893128323084)},
{field.NewFieldConst(2517080075900745791), field.NewFieldConst(18241855168616334247)},
{field.NewFieldConst(17868385271737172979), field.NewFieldConst(3149251797904840387)},
{field.NewFieldConst(16240211689398081741), field.NewFieldConst(12595579002758809850)},
{field.NewFieldConst(15129425055871583477), field.NewFieldConst(16556688233744925655)},
{field.NewFieldConst(12118068802024437752), field.NewFieldConst(1415394251822514067)},
{field.NewFieldConst(9998982344935417389), field.NewFieldConst(1388414311221312252)},
}
// ReducingGate { num_coeffs: 44 }
var reducingGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(2762695979854660261), field.NewFieldConst(6188975775006680731)},
{field.NewFieldConst(1791331417935738626), field.NewFieldConst(17085037714198081810)},
{field.NewFieldConst(2937679508710033736), field.NewFieldConst(5129621779087684534)},
{field.NewFieldConst(481168721643876637), field.NewFieldConst(7141872137498120988)},
{field.NewFieldConst(17254181100047942156), field.NewFieldConst(17775174281554210440)},
{field.NewFieldConst(5198890470471443302), field.NewFieldConst(14888425516661975457)},
{field.NewFieldConst(13028786198899252632), field.NewFieldConst(10937447292538980197)},
{field.NewFieldConst(2265158031754703100), field.NewFieldConst(12577502307628934155)},
{field.NewFieldConst(15551968276096003032), field.NewFieldConst(15292448269321193280)},
{field.NewFieldConst(17365969756658867370), field.NewFieldConst(17369305944822545977)},
{field.NewFieldConst(7080686817257839256), field.NewFieldConst(593963095520237279)},
{field.NewFieldConst(9676311908112124362), field.NewFieldConst(15674622921902422959)},
{field.NewFieldConst(11251136116732324348), field.NewFieldConst(18440217803596221468)},
{field.NewFieldConst(3735056268905622852), field.NewFieldConst(13863980656029437128)},
{field.NewFieldConst(8027041826265159623), field.NewFieldConst(11754189465873578671)},
{field.NewFieldConst(17583392801264300641), field.NewFieldConst(6466906893845676112)},
{field.NewFieldConst(10453982665201242303), field.NewFieldConst(10957427537661178463)},
{field.NewFieldConst(8008073576872573103), field.NewFieldConst(15936946455243860971)},
{field.NewFieldConst(10779255795330506743), field.NewFieldConst(1425676337306283564)},
{field.NewFieldConst(13500038741878953694), field.NewFieldConst(5693690628820948906)},
{field.NewFieldConst(6987584139748553407), field.NewFieldConst(4433192799815624764)},
{field.NewFieldConst(3618013197373611562), field.NewFieldConst(15641412670596115335)},
{field.NewFieldConst(4523765518023087797), field.NewFieldConst(5497960888090896635)},
{field.NewFieldConst(8750545727419259671), field.NewFieldConst(17422860419602722677)},
{field.NewFieldConst(17564615024878416866), field.NewFieldConst(16238022624102079273)},
{field.NewFieldConst(3740814195084876131), field.NewFieldConst(17474834584441312839)},
{field.NewFieldConst(2239459464265888484), field.NewFieldConst(8706775397593275819)},
{field.NewFieldConst(6491352471800031726), field.NewFieldConst(209451190673168977)},
{field.NewFieldConst(5778494879465125706), field.NewFieldConst(7142303398286289731)},
{field.NewFieldConst(7094902435091460736), field.NewFieldConst(17694563561889239395)},
{field.NewFieldConst(2647942785603144770), field.NewFieldConst(12183038555524816414)},
{field.NewFieldConst(15100729453671585276), field.NewFieldConst(8119652948094623285)},
{field.NewFieldConst(3441209666651626111), field.NewFieldConst(10072736477013237067)},
{field.NewFieldConst(2372663484566761092), field.NewFieldConst(594324049190490986)},
{field.NewFieldConst(4026947675295370811), field.NewFieldConst(1179770390904329138)},
{field.NewFieldConst(1595271198725095132), field.NewFieldConst(15771888513051752701)},
{field.NewFieldConst(15924194187528252748), field.NewFieldConst(6763066202850242722)},
{field.NewFieldConst(1445670890851930788), field.NewFieldConst(3792635664222385076)},
{field.NewFieldConst(12273956505460180574), field.NewFieldConst(2686688969956106705)},
{field.NewFieldConst(11658870742027189182), field.NewFieldConst(12329880551401953731)},
{field.NewFieldConst(3044295792231373345), field.NewFieldConst(17852841657875251990)},
{field.NewFieldConst(89567881331820860), field.NewFieldConst(15259944608836914642)},
{field.NewFieldConst(358286967559220432), field.NewFieldConst(4492752479771433484)},
{field.NewFieldConst(14577916428537408584), field.NewFieldConst(13741732911292090813)},
{field.NewFieldConst(16727747831341625951), field.NewFieldConst(17003066965000183599)},
{field.NewFieldConst(9070359631236984957), field.NewFieldConst(6062623613509003067)},
{field.NewFieldConst(2410743624398118478), field.NewFieldConst(13772226839431038397)},
{field.NewFieldConst(11807638155649559084), field.NewFieldConst(1137111487688533470)},
{field.NewFieldConst(64491941894197002), field.NewFieldConst(5868353091743239378)},
{field.NewFieldConst(11301275742904392411), field.NewFieldConst(16283949803466884532)},
{field.NewFieldConst(9890416519568149104), field.NewFieldConst(8227793073753762383)},
{field.NewFieldConst(14951282035757983160), field.NewFieldConst(9077678991191664958)},
{field.NewFieldConst(5033664288544688549), field.NewFieldConst(9192774674510226248)},
{field.NewFieldConst(11933408140918977315), field.NewFieldConst(7749057899233101160)},
{field.NewFieldConst(9164812869909307746), field.NewFieldConst(1719896377847214041)},
{field.NewFieldConst(15224563238586628983), field.NewFieldConst(2588693305957079413)},
{field.NewFieldConst(1889812039818739618), field.NewFieldConst(4817606363423939521)},
{field.NewFieldConst(15609561908880497864), field.NewFieldConst(11885907317258609874)},
{field.NewFieldConst(6792442952488353934), field.NewFieldConst(15088298397252768139)},
{field.NewFieldConst(2651197118788035780), field.NewFieldConst(5089685590535462009)},
{field.NewFieldConst(11982358277830572398), field.NewFieldConst(15471174962798992515)},
{field.NewFieldConst(7639615465545578427), field.NewFieldConst(12644783892223098985)},
{field.NewFieldConst(11009184909998310074), field.NewFieldConst(17958525789123172556)},
{field.NewFieldConst(7777052961871412232), field.NewFieldConst(9786263008632335028)},
{field.NewFieldConst(13336166292448975341), field.NewFieldConst(15263885337654327510)},
{field.NewFieldConst(12764160635364533900), field.NewFieldConst(15411617803867471736)},
{field.NewFieldConst(17491426030593864841), field.NewFieldConst(2688540155718191896)},
{field.NewFieldConst(4278381039362706308), field.NewFieldConst(17571997178209012848)},
{field.NewFieldConst(12726900947926109267), field.NewFieldConst(1433345131505837369)},
{field.NewFieldConst(6334884250665613762), field.NewFieldConst(9617978266076057841)},
{field.NewFieldConst(17511031815464775451), field.NewFieldConst(12281753446186189470)},
{field.NewFieldConst(10718030381939087273), field.NewFieldConst(10785278464322784199)},
{field.NewFieldConst(6964802145991989973), field.NewFieldConst(5630451507536431311)},
{field.NewFieldConst(1610931441749714598), field.NewFieldConst(17306081287063918214)},
{field.NewFieldConst(12529885758752979710), field.NewFieldConst(12015226868538417544)},
{field.NewFieldConst(8212526954290021947), field.NewFieldConst(2604665677904480075)},
{field.NewFieldConst(836429499775217902), field.NewFieldConst(14951071826451735988)},
{field.NewFieldConst(4322887569225425418), field.NewFieldConst(1803870148496860526)},
{field.NewFieldConst(11933437515394389470), field.NewFieldConst(5432495301370703205)},
{field.NewFieldConst(15379632811901291758), field.NewFieldConst(16475440758252311235)},
{field.NewFieldConst(8378463548508566883), field.NewFieldConst(12576809460019959325)},
{field.NewFieldConst(6878478934798340017), field.NewFieldConst(16203041885409513004)},
{field.NewFieldConst(4704361120432029530), field.NewFieldConst(15619278597929334259)},
{field.NewFieldConst(11896486732715322997), field.NewFieldConst(13476483500406677625)},
{field.NewFieldConst(3818194554960853168), field.NewFieldConst(17483945143600046041)},
{field.NewFieldConst(16655838413972803560), field.NewFieldConst(7859620736875007555)},
{field.NewFieldConst(9466644546267012606), field.NewFieldConst(15636572488448679353)},
{field.NewFieldConst(7705051962598852604), field.NewFieldConst(17843247208046088041)},
}
// ArithmeticExtensionGate { num_ops: 10 }
var arithmeticExtensionGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(18152046378789398239), field.NewFieldConst(835198655627980634)},
{field.NewFieldConst(14941458349516937745), field.NewFieldConst(195899842055585620)},
{field.NewFieldConst(11444294347859626222), field.NewFieldConst(7618743177769594838)},
{field.NewFieldConst(6847392923782354441), field.NewFieldConst(3129968840755754688)},
{field.NewFieldConst(11707145384221145922), field.NewFieldConst(286105987739288036)},
{field.NewFieldConst(2582465953258947981), field.NewFieldConst(9032385332294381140)},
{field.NewFieldConst(13238521192691745149), field.NewFieldConst(9704746731861618809)},
{field.NewFieldConst(1830772271680123935), field.NewFieldConst(2037318884130759975)},
{field.NewFieldConst(5532751095564029866), field.NewFieldConst(11560707807043359130)},
{field.NewFieldConst(4749576916935014495), field.NewFieldConst(2144864975020203842)},
{field.NewFieldConst(18162899505828592791), field.NewFieldConst(13853020020051211390)},
{field.NewFieldConst(16196741394015376387), field.NewFieldConst(16087121152637055080)},
{field.NewFieldConst(15478783842112089677), field.NewFieldConst(8151788319455760610)},
{field.NewFieldConst(4962260057365923941), field.NewFieldConst(12155107209004037964)},
{field.NewFieldConst(18192514584072489162), field.NewFieldConst(2336293494478946065)},
{field.NewFieldConst(3747540982963754880), field.NewFieldConst(5650114101530259911)},
{field.NewFieldConst(17757207146926514655), field.NewFieldConst(13461601821205159205)},
{field.NewFieldConst(17921720474545785568), field.NewFieldConst(4718996085070502683)},
{field.NewFieldConst(4443998758263224376), field.NewFieldConst(13890461367328975727)},
{field.NewFieldConst(13990958094457190244), field.NewFieldConst(3783673559976842909)},
}
// MulExtensionGate { num_ops: 13 }
var mulExtensionGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(7181113876231745794), field.NewFieldConst(7868884260109104825)},
{field.NewFieldConst(14067639069854412134), field.NewFieldConst(2094238260641413106)},
{field.NewFieldConst(3160167686452082144), field.NewFieldConst(15508587061137009544)},
{field.NewFieldConst(2701966180261760724), field.NewFieldConst(49742798193009777)},
{field.NewFieldConst(16965594259972472645), field.NewFieldConst(15119035756932709035)},
{field.NewFieldConst(8587305003975146248), field.NewFieldConst(11788991692426475292)},
{field.NewFieldConst(13134841191650990099), field.NewFieldConst(12468857767882216027)},
{field.NewFieldConst(5079312787147663415), field.NewFieldConst(315076378722635206)},
{field.NewFieldConst(4656603487897834248), field.NewFieldConst(4455086801173740459)},
{field.NewFieldConst(3630077482584148572), field.NewFieldConst(3283664780554963370)},
{field.NewFieldConst(1781217475359761081), field.NewFieldConst(17627776820166298232)},
{field.NewFieldConst(5917159494270473360), field.NewFieldConst(6025450051539258087)},
{field.NewFieldConst(6450855110748081528), field.NewFieldConst(7446684637376438458)},
{field.NewFieldConst(8607810652222212781), field.NewFieldConst(7298919685405344815)},
{field.NewFieldConst(13906434081686233303), field.NewFieldConst(13101189135710264580)},
{field.NewFieldConst(6489826249831576523), field.NewFieldConst(11224737887667008267)},
{field.NewFieldConst(3580221348553931303), field.NewFieldConst(4662435202527050543)},
{field.NewFieldConst(7286527320055156837), field.NewFieldConst(15670292738296412147)},
{field.NewFieldConst(2095892346123668330), field.NewFieldConst(5572639395382198548)},
{field.NewFieldConst(11836511250144945185), field.NewFieldConst(6212767141717037414)},
{field.NewFieldConst(12781535798978127236), field.NewFieldConst(14467390350363203888)},
{field.NewFieldConst(2635017860820288214), field.NewFieldConst(6092079726747224779)},
{field.NewFieldConst(18057143820634196774), field.NewFieldConst(16137749920970128474)},
{field.NewFieldConst(16754543715625171524), field.NewFieldConst(15674433195919785024)},
{field.NewFieldConst(2135423350522303111), field.NewFieldConst(32407260862438164)},
{field.NewFieldConst(14956506296276270245), field.NewFieldConst(1145919757338314609)},
}
// ExponentiationGate { num_power_bits: 67, _phantom: PhantomData<plonky2_field::goldilocks_field::GoldilocksField> }<D=2>
var exponentiationGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(11917134172330913896), field.NewFieldConst(17387498340632768165)},
{field.NewFieldConst(1312379412936626785), field.NewFieldConst(8487972230502205858)},
{field.NewFieldConst(1034346392193469803), field.NewFieldConst(10387255969849204765)},
{field.NewFieldConst(8975374558919785259), field.NewFieldConst(8379061308496297909)},
{field.NewFieldConst(5137354887085653470), field.NewFieldConst(18342299770587131344)},
{field.NewFieldConst(11284168756796657450), field.NewFieldConst(13822895496426653701)},
{field.NewFieldConst(235168160386175185), field.NewFieldConst(17356178727442490793)},
{field.NewFieldConst(11012326969983488833), field.NewFieldConst(13315935561725076264)},
{field.NewFieldConst(11064160789252923988), field.NewFieldConst(243775009899162201)},
{field.NewFieldConst(17368303548433332975), field.NewFieldConst(15625080509274199608)},
{field.NewFieldConst(5849122830228985352), field.NewFieldConst(5103229940930953650)},
{field.NewFieldConst(14713362802405597126), field.NewFieldConst(8157398625845036781)},
{field.NewFieldConst(16495373179302807753), field.NewFieldConst(4597863041430416411)},
{field.NewFieldConst(3274329863393011112), field.NewFieldConst(8955190641874111502)},
{field.NewFieldConst(4704531612240997322), field.NewFieldConst(2253948388369651634)},
{field.NewFieldConst(13333514818352143222), field.NewFieldConst(4999457874559250243)},
{field.NewFieldConst(2284463506187861590), field.NewFieldConst(13765412523042072026)},
{field.NewFieldConst(16636340184626646426), field.NewFieldConst(3174763529046637372)},
{field.NewFieldConst(5336400619848923540), field.NewFieldConst(10513883740898299385)},
{field.NewFieldConst(14200134528033869480), field.NewFieldConst(11039588311485209657)},
{field.NewFieldConst(18377155443679293884), field.NewFieldConst(13521764320839726823)},
{field.NewFieldConst(242773453939591946), field.NewFieldConst(6326451192242543829)},
{field.NewFieldConst(1296949085249594883), field.NewFieldConst(7990211688523987915)},
{field.NewFieldConst(5510982641888481009), field.NewFieldConst(10552089306004766754)},
{field.NewFieldConst(10914255593671877946), field.NewFieldConst(18175495064507840841)},
{field.NewFieldConst(7575617967752753230), field.NewFieldConst(9665518441862148402)},
{field.NewFieldConst(14351249981525100362), field.NewFieldConst(5763278800672952095)},
{field.NewFieldConst(16319397571073742470), field.NewFieldConst(1318308384414985616)},
{field.NewFieldConst(12030088917335470405), field.NewFieldConst(6668172884819717021)},
{field.NewFieldConst(17509060699703766693), field.NewFieldConst(1489607021074587548)},
{field.NewFieldConst(1096695845774334385), field.NewFieldConst(6122861634465429123)},
{field.NewFieldConst(13460252757128783693), field.NewFieldConst(17777045084091738197)},
{field.NewFieldConst(14557885155010631641), field.NewFieldConst(4298885986874834349)},
{field.NewFieldConst(3635088766034344822), field.NewFieldConst(8827496887313967507)},
{field.NewFieldConst(6550916348715580989), field.NewFieldConst(4180030543088252998)},
{field.NewFieldConst(16051569484464055768), field.NewFieldConst(2121040925634405127)},
{field.NewFieldConst(1788913367411914907), field.NewFieldConst(10745316805250218547)},
{field.NewFieldConst(4832917661842853637), field.NewFieldConst(1148465658973892394)},
{field.NewFieldConst(9162757057100424164), field.NewFieldConst(7814738929773741429)},
{field.NewFieldConst(13840071942242698046), field.NewFieldConst(12500211120922811757)},
{field.NewFieldConst(10699948139249128560), field.NewFieldConst(4891144553679573560)},
{field.NewFieldConst(14602444997841482522), field.NewFieldConst(17017251371157941125)},
{field.NewFieldConst(586839629673374241), field.NewFieldConst(3363863469002405744)},
{field.NewFieldConst(9011045001648305113), field.NewFieldConst(7085187243048562102)},
{field.NewFieldConst(13032999395920684322), field.NewFieldConst(6189400872664562846)},
{field.NewFieldConst(8971070287177655421), field.NewFieldConst(12582676780734324056)},
{field.NewFieldConst(558400378011382278), field.NewFieldConst(6298195151594790629)},
{field.NewFieldConst(17192073729541567806), field.NewFieldConst(5497805500866221538)},
{field.NewFieldConst(5728605922884243514), field.NewFieldConst(18070340533610014206)},
{field.NewFieldConst(15473455953886985277), field.NewFieldConst(11635823818659992567)},
{field.NewFieldConst(7477545430207969908), field.NewFieldConst(2742755471302540300)},
{field.NewFieldConst(12407179232895419141), field.NewFieldConst(17302315821428133291)},
{field.NewFieldConst(12858531909631903407), field.NewFieldConst(14746185565916474858)},
{field.NewFieldConst(12872867896453911017), field.NewFieldConst(6563250576201773751)},
{field.NewFieldConst(3384183107205264844), field.NewFieldConst(11512795156033923138)},
{field.NewFieldConst(8430135350637925522), field.NewFieldConst(10199901650713033996)},
{field.NewFieldConst(11167364659650598214), field.NewFieldConst(447394121422751322)},
{field.NewFieldConst(4931438368828291722), field.NewFieldConst(16717867949669373753)},
{field.NewFieldConst(5151270559741115914), field.NewFieldConst(45949586886299827)},
{field.NewFieldConst(11159644559144981603), field.NewFieldConst(2120703503452727949)},
{field.NewFieldConst(8830601119784247875), field.NewFieldConst(8542262650554393830)},
{field.NewFieldConst(6142186624494698182), field.NewFieldConst(7120939306807396235)},
{field.NewFieldConst(11716893898091265261), field.NewFieldConst(4311673012489504666)},
{field.NewFieldConst(2133003157459487893), field.NewFieldConst(1909522153859214178)},
{field.NewFieldConst(427412581044646901), field.NewFieldConst(15454912207372224939)},
{field.NewFieldConst(1842301960762096227), field.NewFieldConst(12476329615991638721)},
{field.NewFieldConst(696538585954127499), field.NewFieldConst(2702122491633241201)},
{field.NewFieldConst(5755584054765687076), field.NewFieldConst(5430280214517080555)},
}
// 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>
var cosetInterpolationGateExpectedConstraints = []field.QuadraticExtension{
{field.NewFieldConst(13782516617623808439), field.NewFieldConst(15116825128522139629)},
{field.NewFieldConst(10605488313706531843), field.NewFieldConst(16124703860676816956)},
{field.NewFieldConst(2725554495824998780), field.NewFieldConst(13477621298303015045)},
{field.NewFieldConst(2936187345854242438), field.NewFieldConst(5827982872566017395)},
{field.NewFieldConst(11223822863576777799), field.NewFieldConst(2143123911507599653)},
{field.NewFieldConst(4839015650475288776), field.NewFieldConst(745790217755162273)},
{field.NewFieldConst(2205634412980832213), field.NewFieldConst(15767892564871259137)},
{field.NewFieldConst(9091626478775122653), field.NewFieldConst(9730482292097571809)},
{field.NewFieldConst(10636787321971723634), field.NewFieldConst(14666593583448965088)},
{field.NewFieldConst(7179924177530514890), field.NewFieldConst(10610536358289043895)},
{field.NewFieldConst(15067680125330943902), field.NewFieldConst(17960901266185771082)},
{field.NewFieldConst(5184847499291037169), field.NewFieldConst(16061742535733361053)},
}
type TestGateCircuit struct {
testGate gates.Gate
ExpectedConstraints []field.QuadraticExtension
}
func (circuit *TestGateCircuit) Define(api frontend.API) error {
commonCircuitData := utils.DeserializeCommonCircuitData("../../data/recursive_step/common_circuit_data.json")
numSelectors := commonCircuitData.SelectorsInfo.NumSelectors()
fieldAPI := field.NewFieldAPI(api)
qeAPI := field.NewQuadraticExtensionAPI(api, fieldAPI, commonCircuitData.DegreeBits)
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.NewArithmeticGate(20), arithmeticGateExpectedConstraints},
{gates.NewBaseSumGate(63, 2), baseSumGateExpectedConstraints},
{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.NewExponentiationGate(67), exponentiationGateExpectedConstraints},
{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},
}
for _, test := range gateTests {
testCase(
test.testGate,
test.expectedConstraints,
)
}
}