noir-lang / noir

Noir is a domain specific language for zero knowledge proofs
https://noir-lang.org
Apache License 2.0
888 stars 198 forks source link

Reuse intermediate variables when transforming ACIR to be barretenberg-compatible. #3017

Closed TomAFrench closed 1 year ago

TomAFrench commented 1 year ago

Problem

We've got a user in Discord who has implemented Hydra in Noir: https://github.com/TaceoLabs/noir-hydra

fn main(plains: [Field; 8], key: [Field; 4], iv: [Field; 4]) -> pub [Field; 8] {
    bn254::enc::encrypt(plains, key, iv)
}

This program results in a circuit size of ~6639 constraints, while they feel that hydra should be more efficient. Here's a snippet of the ACIR for this program.

Compiled ACIR for main (unoptimized):
current witness index : 217
public parameters indices : []
return value indices : [210, 211, 212, 213, 214, 215, 216, 217]
EXPR [ (3, _9) (2, _10) (1, _11) (1, _12) (3, _13) (2, _14) (1, _15) (1, _16) (-1, _17) 0 ]
EXPR [ (1, _17, _17) (-1, _18) 0 ]
EXPR [ (1, _18, _18) (-1, _19) 0 ]
EXPR [ (1, _9) (3, _10) (2, _11) (1, _12) (1, _13) (3, _14) (2, _15) (1, _16) (-1, _20) 0 ]
EXPR [ (1, _20, _20) (-1, _21) 0 ]
EXPR [ (1, _21, _21) (-1, _22) 0 ]
EXPR [ (1, _9) (1, _10) (3, _11) (2, _12) (1, _13) (1, _14) (3, _15) (2, _16) (-1, _23) 0 ]
EXPR [ (1, _23, _23) (-1, _24) 0 ]
EXPR [ (1, _24, _24) (-1, _25) 0 ]
EXPR [ (2, _9) (1, _10) (1, _11) (3, _12) (2, _13) (1, _14) (1, _15) (3, _16) (-1, _26) 0 ]
EXPR [ (1, _26, _26) (-1, _27) 0 ]
EXPR [ (1, _27, _27) (-1, _28) 0 ]
EXPR [ (3, _17, _19) (2, _20, _22) (1, _23, _25) (1, _26, _28) (-1, _29) 9829249396351551506003059735029694712008225916562717123713991668049001765123 ]
EXPR [ (1, _29, _29) (-1, _30) 0 ]
EXPR [ (1, _30, _30) (-1, _31) 0 ]
EXPR [ (1, _17, _19) (3, _20, _22) (2, _23, _25) (1, _26, _28) (-1, _32) 7398976501148264576244717142815297077704044360795240250797004996625316989735 ]
EXPR [ (1, _32, _32) (-1, _33) 0 ]
EXPR [ (1, _33, _33) (-1, _34) 0 ]
EXPR [ (1, _17, _19) (1, _20, _22) (3, _23, _25) (2, _26, _28) (-1, _35) 6818686142302019604561610153651736219524469845052498102557026203016869902445 ]
EXPR [ (1, _35, _35) (-1, _36) 0 ]
EXPR [ (1, _36, _36) (-1, _37) 0 ]
EXPR [ (2, _17, _19) (1, _20, _22) (1, _23, _25) (3, _26, _28) (-1, _38) -7134566489356078275519080106967430644181167395002515182661357474358036254316 ]
EXPR [ (1, _38, _38) (-1, _39) 0 ]
EXPR [ (1, _39, _39) (-1, _40) 0 ]
EXPR [ (1, _29, _31) (-1, _32, _34) (1, _35, _37) (-1, _38, _40) (-1, _41) -3807144913159711493082396430853939717124689038820792285702831466094414240036 ]
EXPR [ (1, _29, _31) (3, _32, _34) (-1, _35, _37) (-3, _38, _40) (1, _41, _41) (-1, _42) -1470371153526100223638443081087968120360307878829387568232242538000887043848 ]
EXPR [ (-6, _32, _34) (-3, _35, _37) (-5, _38, _40) (-2, _42, _42) (-1, _43) -7962052092218183321150747170524876763881915119308853670052054931094986953336 ]
EXPR [ (-8, _29, _31) (2, _32, _34) (-1, _35, _37) (-7, _38, _40) (-2, _42, _42) (1, _43, _43) (-1, _44) -2226210578911748399837187915050634511615001385319602895450675458444902027 ]
EXPR [ (-30, _29, _31) (-44, _32, _34) (-33, _35, _37) (-33, _38, _40) (-20, _42, _42) (-2, _44, _44) (-1, _45) -2440356621157082492569204214350581223420648942490155461955145720199991146051 ]
EXPR [ (-50, _29, _31) (-2⁴, _32, _34) (-15, _35, _37) (-31, _38, _40) (-2⁴, _42, _42) (-2, _44, _44) (1, _45, _45) (-1, _46) -2705943082630508367723545508015439680437707943378842263813761660823055848615 ]
EXPR [ (-312, _29, _31) (-328, _32, _34) (-259, _35, _37) (-249, _38, _40) (-164, _42, _42) (-20, _44, _44) (-2, _46, _46) (-1, _47) -8650003557413690840031342878542276583909692715027701743602603733452411712867 ]
EXPR [ (-2⁴×19, _29, _31) (-188, _32, _34) (-153, _35, _37) (-195, _38, _40) (-120, _42, _42) (-2⁴, _44, _44) (-2, _46, _46) (1, _47, _47) (-1, _48) -7071112988621355976127036628573220567599928643114543838385041249892696113298 ]
EXPR [ (-2614, _29, _31) (-2482, _32, _34) (-1979, _35, _37) (-1927, _38, _40) (-1286, _42, _42) (-164, _44, _44) (-20, _46, _46) (-2, _48, _48) (-1, _49) -8389873739166197479930652826658088229406359591579734368174134071106633948668 ]
EXPR [ (-2066, _29, _31) (-1610, _32, _34) (-1293, _35, _37) (-1401, _38, _40) (-910, _42, _42) (-120, _44, _44) (-2⁴, _46, _46) (-2, _48, _48) (1, _49, _49) (-1, _50) -3391025976020364044633588850244003622537350622743936549909751191687220840051 ]
EXPR [ (-2⁴×1294, _29, _31) (-18974, _32, _34) (-15163, _35, _37) (-14921, _38, _40) (-9966, _42, _42) (-1286, _44, _44) (-164, _46, _46) (-20, _48, _48) (-2, _50, _50) (-1, _51) 2685101096692821028386222693310811362735905103154616886272119501526142736398 ]
EXPR [ (-2⁴×943, _29, _31) (-12846, _32, _34) (-10289, _35, _37) (-10539, _38, _40) (-6966, _42, _42) (-910, _44, _44) (-120, _46, _46) (-2⁴, _48, _48) (-2, _50, _50) (1, _51, _51) (-1, _52) -2160682348603118341809123757051148869369276387657635019681499956947712941608 ]
EXPR [ (-161130, _29, _31) (-145788, _32, _34) (-116577, _35, _37) (-115309, _38, _40) (-76972, _42, _42) (-9966, _44, _44) (-1286, _46, _46) (-164, _48, _48) (-20, _50, _50) (-2, _52, _52) (-1, _53) 2⁴×419911144651712820769801826047690990225035183130348268130063765841442367929 ]
EXPR [ (-113878, _29, _31) (-2⁴×6266, _32, _34) (-80231, _35, _37) (-80555, _38, _40) (-53560, _42, _42) (-6966, _44, _44) (-910, _46, _46) (-120, _48, _48) (-2⁴, _50, _50) (-2, _52, _52) (1, _53, _53) (-1, _54) 9819218945077840343015540728341643472131437711547621110643381254786587557361 ]
EXPR [ (-1246596, _29, _31) (-1122628, _32, _34) (-897855, _35, _37) (-890025, _38, _40) (-2⁴×37117, _42, _42) (-76972, _44, _44) (-9966, _46, _46) (-1286, _48, _48) (-164, _50, _50) (-20, _52, _52) (-2, _54, _54) (-1, _55) 6549273024719990731078532289320053800450312554478581029266332780257409025889 ]
EXPR [ (-871012, _29, _31) (-2⁴×48530, _32, _34) (-621189, _35, _37) (-619211, _38, _40) (-412556, _42, _42) (-53560, _44, _44) (-6966, _46, _46) (-910, _48, _48) (-120, _50, _50) (-2⁴, _52, _52) (-2, _54, _54) (1, _55, _55) (-1, _56) -9092511442687937695168141398231955219897792741905458198255919721740851015108 ]
EXPR [ (-9624354, _29, _31) (-8652314, _32, _34) (-6920351, _35, _37) (-6865935, _38, _40) (-4580422, _42, _42) (-2⁴×37117, _44, _44) (-76972, _46, _46) (-9966, _48, _48) (-1286, _50, _50) (-164, _52, _52) (-20, _54, _54) (-2, _56, _56) (-1, _57) 5203477353854417165767544525423770600459259798468840262700445176276955539173 ]
EXPR [ (-6696182, _29, _31) (-5997298, _32, _34) (-4797297, _35, _37) (-4769433, _38, _40) (-3180030, _42, _42) (-412556, _44, _44) (-53560, _46, _46) (-6966, _48, _48) (-910, _50, _50) (-120, _52, _52) (-2⁴, _54, _54) (-2, _56, _56) (1, _57, _57) (-1, _58) -3287825370792204629830007366015811438571337669891461857481491013987228464673 ]
EXPR [ (-74249396, _29, _31) (-66707834, _32, _34) (-53355763, _35, _37) (-52953845, _38, _40) (-35323834, _42, _42) (-4580422, _44, _44) (-2⁴×37117, _46, _46) (-76972, _48, _48) (-9966, _50, _50) (-1286, _52, _52) (-164, _54, _54) (-20, _56, _56) (-2, _58, _58) (-1, _59) -9497887786702196229038931355833877491186218121858848249892642994688862841742 ]
EXPR [ (-51578140, _29, _31) (-46274818, _32, _34) (-37013985, _35, _37) (-36763383, _38, _40) (-24518618, _42, _42) (-3180030, _44, _44) (-412556, _46, _46) (-53560, _48, _48) (-6966, _50, _50) (-910, _52, _52) (-120, _54, _54) (-2⁴, _56, _56) (-2, _58, _58) (1, _59, _59) (-1, _60) -4697252636157691425577466898660748662281178310974463041681001086238812101149 ]
EXPR [ (-572659094, _29, _31) (-514372468, _32, _34) (-411419849, _35, _37) (-408372193, _38, _40) (-272403372, _42, _42) (-35323834, _44, _44) (-4580422, _46, _46) (-2⁴×37117, _48, _48) (-76972, _50, _50) (-9966, _52, _52) (-1286, _54, _54) (-164, _56, _56) (-20, _58, _58) (-2, _60, _60) (-1, _61) 2⁴×317918132709640553134487203499357874429316296101425846552439110270646216020 ]
EXPR [ (-397572122, _29, _31) (-356922024, _32, _34) (-285487447, _35, _37) (-283453359, _38, _40) (-189062136, _42, _42) (-24518618, _44, _44) (-3180030, _46, _46) (-412556, _48, _48) (-53560, _50, _50) (-6966, _52, _52) (-910, _54, _54) (-120, _56, _56) (-2⁴, _58, _58) (-2, _60, _60) (1, _61, _61) (-1, _62) -7404407674458272831119988284409762982218279417516381908818506681088040650972 ]
EXPR [ (-2⁴×276017178, _29, _31) (-3966429672, _32, _34) (-3172549227, _35, _37) (-3149197049, _38, _40) (-2100635828, _42, _42) (-272403372, _44, _44) (-35323834, _46, _46) (-4580422, _48, _48) (-2⁴×37117, _50, _50) (-76972, _52, _52) (-9966, _54, _54) (-1286, _56, _56) (-164, _58, _58) (-20, _60, _60) (-2, _62, _62) (-1, _63) 4517516177660053059977030638543393367309473571704600571090805185314442617307 ]
EXPR [ (-3065364584, _29, _31) (-2752597756, _32, _34) (-2201677153, _35, _37) (-2185702003, _38, _40) (-1457905928, _42, _42) (-189062136, _44, _44) (-24518618, _46, _46) (-3180030, _48, _48) (-412556, _50, _50) (-53560, _52, _52) (-6966, _54, _54) (-910, _56, _56) (-120, _58, _58) (-2⁴, _60, _60) (-2, _62, _62) (1, _63, _63) (-1, _64) 7786878767605881751745167925399124384446965682851699594391066718583900467033 ]
EXPR [ (-34056505038, _29, _31) (-30586494890, _32, _34) (-24464633643, _35, _37) (-24284985615, _38, _40) (-16198945598, _42, _42) (-2100635828, _44, _44) (-272403372, _46, _46) (-35323834, _48, _48) (-4580422, _50, _50) (-2⁴×37117, _52, _52) (-76972, _54, _54) (-9966, _56, _56) (-1286, _58, _58) (-164, _60, _60) (-20, _62, _62) (-2, _64, _64) (-1, _65) -8049417821867047809119083236510279803984308915620388326116678628855950047665 ]
EXPR [ (-23636947898, _29, _31) (-21227080114, _32, _34) (-16978530765, _35, _37) (-16854513985, _38, _40) (-11242438966, _42, _42) (-1457905928, _44, _44) (-189062136, _46, _46) (-24518618, _48, _48) (-3180030, _50, _50) (-412556, _52, _52) (-53560, _54, _54) (-6966, _56, _56) (-910, _58, _58) (-120, _60, _60) (-2⁴, _62, _62) (-2, _64, _64) (1, _65, _65) (-1, _66) 11748338180323960960124168439920632210164689502171888825500170702871081133677 ]
EXPR [ (-262626274152, _29, _31) (-235864515646, _32, _34) (-188656493755, _35, _37) (-187272386865, _38, _40) (-124917095774, _42, _42) (-16198945598, _44, _44) (-2100635828, _46, _46) (-272403372, _48, _48) (-35323834, _50, _50) (-4580422, _52, _52) (-2⁴×37117, _54, _54) (-76972, _56, _56) (-9966, _58, _58) (-1286, _60, _60) (-164, _62, _62) (-20, _64, _64) (-2, _66, _66) (-1, _67) -6182025517817373381563025664611149117398125538310308689286535440289277240509 ]
EXPR [ (-182270602312, _29, _31) (-163692832142, _32, _34) (-130929986817, _35, _37) (-129971283987, _38, _40) (-86694957894, _42, _42) (-11242438966, _44, _44) (-1457905928, _46, _46) (-189062136, _48, _48) (-24518618, _50, _50) (-3180030, _52, _52) (-412556, _54, _54) (-53560, _56, _56) (-6966, _58, _58) (-910, _60, _60) (-120, _62, _62) (-2⁴, _64, _64) (-2, _66, _66) (1, _67, _67) (-1, _68) 10075062638344219278308790287262896708378332500247087209719411193941329743306 ]
EXPR [ (-2025228777298, _29, _31) (-1818848812708, _32, _34) (-1454808412745, _35, _37) (-1444138514989, _38, _40) (-963289216820, _42, _42) (-124917095774, _44, _44) (-16198945598, _46, _46) (-2100635828, _48, _48) (-272403372, _50, _50) (-35323834, _52, _52) (-4580422, _54, _54) (-2⁴×37117, _56, _56) (-76972, _58, _58) (-9966, _60, _60) (-1286, _62, _62) (-164, _64, _64) (-20, _66, _66) (-2, _68, _68) (-1, _69) 9949667940522891941338302912087583411161655184204908978901894082071630830747 ]
EXPR [ (-1405554790766, _29, _31) (-1262310125240, _32, _34) (-1009660541871, _35, _37) (-1002260846715, _38, _40) (-2⁴×41783806291, _42, _42) (-86694957894, _44, _44) (-11242438966, _46, _46) (-1457905928, _48, _48) (-189062136, _50, _50) (-24518618, _52, _52) (-3180030, _54, _54) (-412556, _56, _56) (-53560, _58, _58) (-6966, _60, _60) (-910, _62, _62) (-120, _64, _64) (-2⁴, _66, _66) (-2, _68, _68) (1, _69, _69) (-1, _70) -7059038647103903014283562630313685114015638747896401610476004868668591704142 ]
EXPR [ (-15617416813228, _29, _31) (-14025908425364, _32, _34) (-11218640247415, _35, _37) (-11136370257305, _38, _40) (-2⁴×464270854851, _42, _42) (-963289216820, _44, _44) (-124917095774, _46, _46) (-16198945598, _48, _48) (-2100635828, _50, _50) (-272403372, _52, _52) (-35323834, _54, _54) (-4580422, _56, _56) (-2⁴×37117, _58, _58) (-76972, _60, _60) (-9966, _62, _62) (-1286, _64, _64) (-164, _66, _66) (-20, _68, _68) (-2, _70, _70) (-1, _71) 2128384735689954671217929247494105658913044392139908062617120554690375648351 ]
EXPR [ (-10838798067484, _29, _31) (-2⁴×608389030227, _32, _34) (-7785932291261, _35, _37) (-7728850872843, _38, _40) (-5155400816460, _42, _42) (-2⁴×41783806291, _44, _44) (-86694957894, _46, _46) (-11242438966, _48, _48) (-1457905928, _50, _50) (-189062136, _52, _52) (-24518618, _54, _54) (-3180030, _56, _56) (-412556, _58, _58) (-53560, _60, _60) (-6966, _62, _62) (-910, _64, _64) (-120, _66, _66) (-2⁴, _68, _68) (-2, _70, _70) (1, _71, _71) (-1, _72) 3818133694342764374782916002630027544272228445597115798783372652930022059167 ]
EXPR [ (-120432586711482, _29, _31) (-108159718398402, _32, _34) (-86511686331471, _35, _37) (-85877296433239, _38, _40) (-57283041124942, _42, _42) (-2⁴×464270854851, _44, _44) (-963289216820, _46, _46) (-124917095774, _48, _48) (-16198945598, _50, _50) (-2100635828, _52, _52) (-272403372, _54, _54) (-35323834, _56, _56) (-4580422, _58, _58) (-2⁴×37117, _60, _60) (-76972, _62, _62) (-9966, _64, _64) (-1286, _66, _66) (-164, _68, _68) (-20, _70, _70) (-2, _72, _72) (-1, _73) 7056788181589267443040721219531176124381797148428193799652048693581886362926 ]
EXPR [ (-83582485943518, _29, _31) (-75064783660778, _32, _34) (-60040663490033, _35, _37) (-59600429493473, _38, _40) (-39755480369686, _42, _42) (-5155400816460, _44, _44) (-2⁴×41783806291, _46, _46) (-86694957894, _48, _48) (-11242438966, _50, _50) (-1457905928, _52, _52) (-189062136, _54, _54) (-24518618, _56, _56) (-3180030, _58, _58) (-412556, _60, _60) (-53560, _62, _62) (-6966, _64, _64) (-910, _66, _66) (-120, _68, _68) (-2⁴, _70, _70) (-2, _72, _72) (1, _73, _73) (-1, _74) -5889085223537024412752499495115130872860384073292513087237876613186733038122 ]
EXPR [ (-928706995803804, _29, _31) (-834065490349738, _32, _34) (-667128332014563, _35, _37) (-662236364696205, _38, _40) (-441733883266330, _42, _42) (-57283041124942, _44, _44) (-2⁴×464270854851, _46, _46) (-963289216820, _48, _48) (-124917095774, _50, _50) (-16198945598, _52, _52) (-2100635828, _54, _54) (-272403372, _56, _56) (-35323834, _58, _58) (-4580422, _60, _60) (-2⁴×37117, _62, _62) (-76972, _64, _64) (-9966, _66, _66) (-1286, _68, _68) (-164, _70, _70) (-20, _72, _72) (-2, _74, _74) (-1, _75) -4483218243443218668651794428296641909883535799820053789483510662859525661405 ]
EXPR [ (-644539806075604, _29, _31) (-578856566983250, _32, _34) (-462999159773121, _35, _37) (-459604171424111, _38, _40) (-306571386322298, _42, _42) (-39755480369686, _44, _44) (-5155400816460, _46, _46) (-2⁴×41783806291, _48, _48) (-86694957894, _50, _50) (-11242438966, _52, _52) (-1457905928, _54, _54) (-189062136, _56, _56) (-24518618, _58, _58) (-3180030, _60, _60) (-412556, _62, _62) (-53560, _64, _64) (-6966, _66, _66) (-910, _68, _68) (-120, _70, _70) (-2⁴, _72, _72) (-2, _74, _74) (1, _75, _75) (-1, _76) -9336050668225070281462293575904184727197576118013420370339862951434961720857 ]
EXPR [ (-7161654717308766, _29, _31) (-6431833270768460, _32, _34) (-5144509946967185, _35, _37) (-5106786144641697, _38, _40) (-3406397725669444, _42, _42) (-441733883266330, _44, _44) (-57283041124942, _46, _46) (-2⁴×464270854851, _48, _48) (-963289216820, _50, _50) (-124917095774, _52, _52) (-16198945598, _54, _54) (-2100635828, _56, _56) (-272403372, _58, _58) (-35323834, _60, _60) (-4580422, _62, _62) (-2⁴×37117, _64, _64) (-76972, _66, _66) (-9966, _68, _68) (-1286, _70, _70) (-164, _72, _72) (-20, _74, _74) (-2, _76, _76) (-1, _77) -5316577943386010999748284674311428092703806984219956324037945121842160053817 ]
EXPR [ (-4970319604130450, _29, _31) (-2⁴×278988083018797, _32, _34) (-3570383534381055, _35, _37) (-3544202888105727, _38, _40) (-2⁴×147756387097482, _42, _42) (-306571386322298, _44, _44) (-39755480369686, _46, _46) (-5155400816460, _48, _48) (-2⁴×41783806291, _50, _50) (-86694957894, _52, _52) (-11242438966, _54, _54) (-1457905928, _56, _56) (-189062136, _58, _58) (-24518618, _60, _60) (-3180030, _62, _62) (-412556, _64, _64) (-53560, _66, _66) (-6966, _68, _68) (-910, _70, _70) (-120, _72, _72) (-2⁴, _74, _74) (-2, _76, _76) (1, _77, _77) (-1, _78) -1649120162571933797514042479557409263632686232416938907182254265192364746871 ]
EXPR [ (-55226564169526472, _29, _31) (-49598599189635560, _32, _34) (-39671502099140755, _35, _37) (-39380598504050489, _38, _40) (-26268180566050468, _42, _42) (-3406397725669444, _44, _44) (-441733883266330, _46, _46) (-57283041124942, _48, _48) (-2⁴×464270854851, _50, _50) (-963289216820, _52, _52) (-124917095774, _54, _54) (-16198945598, _56, _56) (-2100635828, _58, _58) (-272403372, _60, _60) (-35323834, _62, _62) (-4580422, _64, _64) (-2⁴×37117, _66, _66) (-76972, _68, _68) (-9966, _70, _70) (-1286, _72, _72) (-164, _74, _74) (-20, _76, _76) (-2, _78, _78) (-1, _79) 8657024614643039222146289618310007681208512440207296777267880286272994964103 ]
EXPR [ (-2⁴×2395515285519838, _29, _31) (-34422331705460956, _32, _34) (-27532745467747689, _35, _37) (-27330854097216099, _38, _40) (-18230596548391736, _42, _42) (-2⁴×147756387097482, _44, _44) (-306571386322298, _46, _46) (-39755480369686, _48, _48) (-5155400816460, _50, _50) (-2⁴×41783806291, _52, _52) (-86694957894, _54, _54) (-11242438966, _56, _56) (-1457905928, _58, _58) (-189062136, _60, _60) (-24518618, _62, _62) (-3180030, _64, _64) (-412556, _66, _66) (-53560, _68, _68) (-6966, _70, _70) (-910, _72, _72) (-120, _74, _74) (-2⁴, _76, _76) (-2, _78, _78) (1, _79, _79) (-1, _80) -6828345584228826965108278003135506063267190484534545584149523665765816037364 ]
EXPR [ (-425875509346647974, _29, _31) (-382475874935884930, _32, _34) (-305923810915132283, _35, _37) (-303680531599728247, _38, _40) (-202565103828199062, _42, _42) (-26268180566050468, _44, _44) (-3406397725669444, _46, _46) (-441733883266330, _48, _48) (-57283041124942, _50, _50) (-2⁴×464270854851, _52, _52) (-963289216820, _54, _54) (-124917095774, _56, _56) (-16198945598, _58, _58) (-2100635828, _60, _60) (-272403372, _62, _62) (-35323834, _64, _64) (-4580422, _66, _66) (-2⁴×37117, _68, _68) (-76972, _70, _70) (-9966, _72, _72) (-1286, _74, _74) (-164, _76, _76) (-20, _78, _78) (-2, _80, _80) (-1, _81) 2487761358455561853789485607078876667665519056953793813884344093161835279435 ]
EXPR [ (-295565376186381218, _29, _31) (-265445231129631546, _32, _34) (-212316703023126445, _35, _37) (-210759829206226857, _38, _40) (-140583877077909438, _42, _42) (-18230596548391736, _44, _44) (-2⁴×147756387097482, _46, _46) (-306571386322298, _48, _48) (-39755480369686, _50, _50) (-5155400816460, _52, _52) (-2⁴×41783806291, _54, _54) (-86694957894, _56, _56) (-11242438966, _58, _58) (-1457905928, _60, _60) (-189062136, _62, _62) (-24518618, _64, _64) (-3180030, _66, _66) (-412556, _68, _68) (-53560, _70, _70) (-6966, _72, _72) (-910, _74, _74) (-120, _76, _76) (-2⁴, _78, _78) (-2, _80, _80) (1, _81, _81) (-1, _82) 9967483151661670164679027604624448122304683887505479921451958869196802158518 ]
EXPR [ (-2⁴×205256690461050459, _29, _31) (-2949434009286055806, _32, _34) (-2359108512189216315, _35, _37) (-2341809637577493209, _38, _40) (-1562065600918510382, _42, _42) (-202565103828199062, _44, _44) (-26268180566050468, _46, _46) (-3406397725669444, _48, _48) (-441733883266330, _50, _50) (-57283041124942, _52, _52) (-2⁴×464270854851, _54, _54) (-963289216820, _56, _56) (-124917095774, _58, _58) (-16198945598, _60, _60) (-2100635828, _62, _62) (-272403372, _64, _64) (-35323834, _66, _66) (-4580422, _68, _68) (-2⁴×37117, _70, _70) (-76972, _72, _72) (-9966, _74, _74) (-1286, _76, _76) (-164, _78, _78) (-20, _80, _80) (-2, _82, _82) (-1, _83) 2012300680609586599613887929213820918113741671922822906886890496579457761260 ]
EXPR [ (-2⁴×142451887842626630, _29, _31) (-2046960992238242638, _32, _34) (-1637264331710890321, _35, _37) (-1625258605620568891, _38, _40) (-1084102019293103990, _42, _42) (-140583877077909438, _44, _44) (-18230596548391736, _46, _46) (-2⁴×147756387097482, _48, _48) (-306571386322298, _50, _50) (-39755480369686, _52, _52) (-5155400816460, _54, _54) (-2⁴×41783806291, _56, _56) (-86694957894, _58, _58) (-11242438966, _60, _60) (-1457905928, _62, _62) (-189062136, _64, _64) (-24518618, _66, _66) (-3180030, _68, _68) (-412556, _70, _70) (-53560, _72, _72) (-6966, _74, _74) (-910, _76, _76) (-120, _78, _78) (-2⁴, _80, _80) (-2, _82, _82) (1, _83, _83) (-1, _84) 6243066067844123042449644573168419146540970135575090820968105474839291672988 ]
EXPR [ (-25325145125186372922, _29, _31) (-22744339062984429548, _32, _34) (-18192088285745679633, _35, _37) (-18058689327842142861, _38, _40) (-12045751685965517852, _42, _42) (-1562065600918510382, _44, _44) (-202565103828199062, _46, _46) (-26268180566050468, _48, _48) (-3406397725669444, _50, _50) (-441733883266330, _52, _52) (-57283041124942, _54, _54) (-2⁴×464270854851, _56, _56) (-963289216820, _58, _58) (-124917095774, _60, _60) (-16198945598, _62, _62) (-2100635828, _64, _64) (-272403372, _66, _66) (-35323834, _68, _68) (-4580422, _70, _70) (-2⁴×37117, _72, _72) (-76972, _74, _74) (-9966, _76, _76) (-1286, _78, _78) (-164, _80, _80) (-20, _82, _82) (-2, _84, _84) (-1, _85) -4243602880044528816748760960830972150742701619326634619822678264519201316135 ]
EXPR [ (-17576112675295273094, _29, _31) (-2⁴×986561633551166971, _32, _34) (-12625641071484803991, _35, _37) (-12533059785608797867, _38, _40) (-8359971381315363784, _42, _42) (-1084102019293103990, _44, _44) (-140583877077909438, _46, _46) (-18230596548391736, _48, _48) (-2⁴×147756387097482, _50, _50) (-306571386322298, _52, _52) (-39755480369686, _54, _54) (-5155400816460, _56, _56) (-2⁴×41783806291, _58, _58) (-86694957894, _60, _60) (-11242438966, _62, _62) (-1457905928, _64, _64) (-189062136, _66, _66) (-24518618, _68, _68) (-3180030, _70, _70) (-412556, _72, _72) (-53560, _74, _74) (-6966, _76, _76) (-910, _78, _78) (-120, _80, _80) (-2⁴, _82, _82) (-2, _84, _84) (1, _85, _85) (-1, _86) 8573683741522886576502033414175319235920579998214426697653565684320429703022 ]
EXPR [ (-195292956635437961172, _29, _31) (-175391264207175344260, _32, _34) (-140286923889960157615, _35, _37) (-139258227879719068809, _38, _40) (-2⁴×5805619398324040463, _42, _42) (-12045751685965517852, _44, _44) (-1562065600918510382, _46, _46) (-202565103828199062, _48, _48) (-26268180566050468, _50, _50) (-3406397725669444, _52, _52) (-441733883266330, _54, _54) (-57283041124942, _56, _56) (-2⁴×464270854851, _58, _58) (-963289216820, _60, _60) (-124917095774, _62, _62) (-16198945598, _64, _64) (-2100635828, _66, _66) (-272403372, _68, _68) (-35323834, _70, _70) (-4580422, _72, _72) (-2⁴×37117, _74, _74) (-76972, _76, _76) (-9966, _78, _78) (-1286, _80, _80) (-164, _82, _82) (-20, _84, _84) (-2, _86, _86) (-1, _87) 8687692542460369194340818583648057705264723270279056579524353902999812217226 ]
EXPR [ (-135536874066793926484, _29, _31) (-2⁴×7607796022306327970, _32, _34) (-97361683904921362677, _35, _37) (-96647750179601645259, _38, _40) (-64467292072602597420, _42, _42) (-8359971381315363784, _44, _44) (-1084102019293103990, _46, _46) (-140583877077909438, _48, _48) (-18230596548391736, _50, _50) (-2⁴×147756387097482, _52, _52) (-306571386322298, _54, _54) (-39755480369686, _56, _56) (-5155400816460, _58, _58) (-2⁴×41783806291, _60, _60) (-86694957894, _62, _62) (-11242438966, _64, _64) (-1457905928, _66, _66) (-189062136, _68, _68) (-24518618, _70, _70) (-3180030, _72, _72) (-412556, _74, _74) (-53560, _76, _76) (-6966, _78, _78) (-910, _80, _80) (-120, _82, _82) (-2⁴, _84, _84) (-2, _86, _86) (1, _87, _87) (-1, _88) 11179278284139562218210268644216930869629677159503721356356360494848933909473 ]
EXPR [ (-1505986983039101170834, _29, _31) (-1352516574731003388490, _32, _34) (-1081812088178997536159, _35, _37) (-1073879376204982548415, _38, _40) (-716313574593440663414, _42, _42) (-2⁴×5805619398324040463, _44, _44) (-12045751685965517852, _46, _46) (-1562065600918510382, _48, _48) (-202565103828199062, _50, _50) (-26268180566050468, _52, _52) (-3406397725669444, _54, _54) (-441733883266330, _56, _56) (-57283041124942, _58, _58) (-2⁴×464270854851, _60, _60) (-963289216820, _62, _62) (-124917095774, _64, _64) (-16198945598, _66, _66) (-2100635828, _68, _68) (-272403372, _70, _70) (-35323834, _72, _72) (-4580422, _74, _74) (-2⁴×37117, _76, _76) (-76972, _78, _78) (-9966, _80, _80) (-1286, _82, _82) (-164, _84, _84) (-20, _86, _86) (-2, _88, _88) (-1, _89) 7349860353397609405405007630132229019057777118124299761951280111138896253256 ]
EXPR [ (-1045182435012929735942, _29, _31) (-938671171943933885954, _32, _34) (-750797320801204430289, _35, _37) (-745291874198794056585, _38, _40) (-497134685993837444110, _42, _42) (-64467292072602597420, _44, _44) (-8359971381315363784, _46, _46) (-1084102019293103990, _48, _48) (-140583877077909438, _50, _50) (-18230596548391736, _52, _52) (-2⁴×147756387097482, _54, _54) (-306571386322298, _56, _56) (-39755480369686, _58, _58) (-5155400816460, _60, _60) (-2⁴×41783806291, _62, _62) (-86694957894, _64, _64) (-11242438966, _66, _66) (-1457905928, _68, _68) (-189062136, _70, _70) (-24518618, _72, _72) (-3180030, _74, _74) (-412556, _76, _76) (-53560, _78, _78) (-6966, _80, _80) (-910, _82, _82) (-120, _84, _84) (-2⁴, _86, _86) (-2, _88, _88) (1, _89, _89) (-1, _90) 9415820901546980669524432698380618983758325884549223756106524979133386267929 ]
EXPR [ (-11613305630432791503556, _29, _31) (-10429830090311399398778, _32, _34) (-8342312752522582725523, _35, _37) (-8281140239671792519589, _38, _40) (-5523798387562652306778, _42, _42) (-716313574593440663414, _44, _44) (-2⁴×5805619398324040463, _46, _46) (-12045751685965517852, _48, _48) (-1562065600918510382, _50, _50) (-202565103828199062, _52, _52) (-26268180566050468, _54, _54) (-3406397725669444, _56, _56) (-441733883266330, _58, _58) (-57283041124942, _60, _60) (-2⁴×464270854851, _62, _62) (-963289216820, _64, _64) (-124917095774, _66, _66) (-16198945598, _68, _68) (-2100635828, _70, _70) (-272403372, _72, _72) (-35323834, _74, _74) (-4580422, _76, _76) (-2⁴×37117, _78, _78) (-76972, _80, _80) (-9966, _82, _82) (-1286, _84, _84) (-164, _86, _86) (-20, _88, _88) (-2, _90, _90) (-1, _91) 7058067932686177317994606686561554629720490233454373896941774622570566023950 ]
EXPR [ (-8059845929386470736588, _29, _31) (-7238492317167159587970, _32, _34) (-5789717209576087760993, _35, _37) (-5747262370462255646055, _38, _40) (-3833616832370281961658, _42, _42) (-497134685993837444110, _44, _44) (-64467292072602597420, _46, _46) (-8359971381315363784, _48, _48) (-1084102019293103990, _50, _50) (-140583877077909438, _52, _52) (-18230596548391736, _54, _54) (-2⁴×147756387097482, _56, _56) (-306571386322298, _58, _58) (-39755480369686, _60, _60) (-5155400816460, _62, _62) (-2⁴×41783806291, _64, _64) (-86694957894, _66, _66) (-11242438966, _68, _68) (-1457905928, _70, _70) (-189062136, _72, _72) (-24518618, _74, _74) (-3180030, _76, _76) (-412556, _78, _78) (-53560, _80, _80) (-6966, _82, _82) (-910, _84, _84) (-120, _86, _86) (-2⁴, _88, _88) (-2, _90, _90) (1, _91, _91) (-1, _92) 10731261524053905085340589411957208102811493470878173437628752765235021122406 ]
EXPR [ (-89555135057779457132070, _29, _31) (-80428852220346210186180, _32, _34) (-64331118890649147690489, _35, _37) (-63859391648450755492417, _38, _40) (-42596356831032224357308, _42, _42) (-5523798387562652306778, _44, _44) (-716313574593440663414, _46, _46) (-2⁴×5805619398324040463, _48, _48) (-12045751685965517852, _50, _50) (-1562065600918510382, _52, _52) (-202565103828199062, _54, _54) (-26268180566050468, _56, _56) (-3406397725669444, _58, _58) (-441733883266330, _60, _60) (-57283041124942, _62, _62) (-2⁴×464270854851, _64, _64) (-963289216820, _66, _66) (-124917095774, _68, _68) (-16198945598, _70, _70) (-2100635828, _72, _72) (-272403372, _74, _74) (-35323834, _76, _76) (-4580422, _78, _78) (-2⁴×37117, _80, _80) (-76972, _82, _82) (-9966, _84, _84) (-1286, _86, _86) (-164, _88, _88) (-20, _90, _90) (-2, _92, _92) (-1, _93) 6229905585480769767502506942121757712104652283539853769240381822130815338312 ]
EXPR [ (-62152897173957487942282, _29, _31) (-55819090422001775012696, _32, _34) (-44646969876858280596359, _35, _37) (-44319582568304678518127, _38, _40) (-29562648577303174581352, _42, _42) (-3833616832370281961658, _44, _44) (-497134685993837444110, _46, _46) (-64467292072602597420, _48, _48) (-8359971381315363784, _50, _50) (-1084102019293103990, _52, _52) (-140583877077909438, _54, _54) (-18230596548391736, _56, _56) (-2⁴×147756387097482, _58, _58) (-306571386322298, _60, _60) (-39755480369686, _62, _62) (-5155400816460, _64, _64) (-2⁴×41783806291, _66, _66) (-86694957894, _68, _68) (-11242438966, _70, _70) (-1457905928, _72, _72) (-189062136, _74, _74) (-24518618, _76, _76) (-3180030, _78, _78) (-412556, _80, _80) (-53560, _82, _82) (-6966, _84, _84) (-910, _86, _86) (-120, _88, _88) (-2⁴, _90, _90) (-2, _92, _92) (1, _93, _93) (-1, _94) 2001723778104617272151741291071414648084947489835580798615295711243115115434 ]
EXPR [ (-2⁴×43162356558609604660983, _29, _31) (-620221059548418479269768, _32, _34) (-496084596743906316935163, _35, _37) (-492446907511043684758713, _38, _40) (-328478609820160307934196, _42, _42) (-42596356831032224357308, _44, _44) (-5523798387562652306778, _46, _46) (-716313574593440663414, _48, _48) (-2⁴×5805619398324040463, _50, _50) (-12045751685965517852, _52, _52) (-1562065600918510382, _54, _54) (-202565103828199062, _56, _56) (-26268180566050468, _58, _58) (-3406397725669444, _60, _60) (-441733883266330, _62, _62) (-57283041124942, _64, _64) (-2⁴×464270854851, _66, _66) (-963289216820, _68, _68) (-124917095774, _70, _70) (-16198945598, _72, _72) (-2100635828, _74, _74) (-272403372, _76, _76) (-35323834, _78, _78) (-4580422, _80, _80) (-2⁴×37117, _82, _82) (-76972, _84, _84) (-9966, _86, _86) (-1286, _88, _88) (-164, _90, _90) (-20, _92, _92) (-2, _94, _94) (-1, _95) 9701438429937828860962843486062228118887294925116734111838964085063731749813 ]
EXPR [ (-479287403393506339523416, _29, _31) (-430444727847082590782876, _32, _34) (-344291758474272246138417, _35, _37) (-341767135801600649802899, _38, _40) (-227970146502351689463944, _42, _42) (-29562648577303174581352, _44, _44) (-3833616832370281961658, _46, _46) (-497134685993837444110, _48, _48) (-64467292072602597420, _50, _50) (-8359971381315363784, _52, _52) (-1084102019293103990, _54, _54) (-140583877077909438, _56, _56) (-18230596548391736, _58, _58) (-2⁴×147756387097482, _60, _60) (-306571386322298, _62, _62) (-39755480369686, _64, _64) (-5155400816460, _66, _66) (-2⁴×41783806291, _68, _68) (-86694957894, _70, _70) (-11242438966, _72, _72) (-1457905928, _74, _74) (-189062136, _76, _76) (-24518618, _78, _78) (-3180030, _80, _80) (-412556, _82, _82) (-53560, _84, _84) (-6966, _86, _86) (-910, _88, _88) (-120, _90, _90) (-2⁴, _92, _92) (-2, _94, _94) (1, _95, _95) (-1, _96) 1751916131360139984563511594809129975083822447286573921915798822937989305579 ]
EXPR [ (-5325492388073506567967934, _29, _31) (-4782788167290871596224570, _32, _34) (-3825519147978974994920747, _35, _37) (-3797467380393751470191679, _38, _40) (-2533038154819586375614990, _42, _42) (-328478609820160307934196, _44, _44) (-42596356831032224357308, _46, _46) (-5523798387562652306778, _48, _48) (-716313574593440663414, _50, _50) (-2⁴×5805619398324040463, _52, _52) (-12045751685965517852, _54, _54) (-1562065600918510382, _56, _56) (-202565103828199062, _58, _58) (-26268180566050468, _60, _60) (-3406397725669444, _62, _62) (-441733883266330, _64, _64) (-57283041124942, _66, _66) (-2⁴×464270854851, _68, _68) (-963289216820, _70, _70) (-124917095774, _72, _72) (-16198945598, _74, _74) (-2100635828, _76, _76) (-272403372, _78, _78) (-35323834, _80, _80) (-4580422, _82, _82) (-2⁴×37117, _84, _84) (-76972, _86, _86) (-9966, _88, _88) (-1286, _90, _90) (-164, _92, _92) (-20, _94, _94) (-2, _96, _96) (-1, _97) -1020558014313515747991241107861193710680467014992566387697005187041390256844 ]
EXPR [ (-3695988851680197011377610, _29, _31) (-3319342223769756248142562, _32, _34) (-2654980064258647606516269, _35, _37) (-2635511625917284094750769, _38, _40) (-1757974680803697851541030, _42, _42) (-227970146502351689463944, _44, _44) (-29562648577303174581352, _46, _46) (-3833616832370281961658, _48, _48) (-497134685993837444110, _50, _50) (-64467292072602597420, _52, _52) (-8359971381315363784, _54, _54) (-1084102019293103990, _56, _56) (-140583877077909438, _58, _58) (-18230596548391736, _60, _60) (-2⁴×147756387097482, _62, _62) (-306571386322298, _64, _64) (-39755480369686, _66, _66) (-5155400816460, _68, _68) (-2⁴×41783806291, _70, _70) (-86694957894, _72, _72) (-11242438966, _74, _74) (-1457905928, _76, _76) (-189062136, _78, _78) (-24518618, _80, _80) (-3180030, _82, _82) (-412556, _84, _84) (-53560, _86, _86) (-6966, _88, _88) (-910, _90, _90) (-120, _92, _92) (-2⁴, _94, _94) (-2, _96, _96) (1, _97, _97) (-1, _98) -4882048477916676283776370440332398451150638245804007221743845509247128152770 ]
EXPR [ (-41067134994224760795121592, _29, _31) (-36882112113143302166009054, _32, _34) (-29500203891878125983094843, _35, _37) (-29283884790813018986758337, _38, _40) (-19533333684294172561569118, _42, _42) (-2533038154819586375614990, _44, _44) (-328478609820160307934196, _46, _46) (-42596356831032224357308, _48, _48) (-5523798387562652306778, _50, _50) (-716313574593440663414, _52, _52) (-2⁴×5805619398324040463, _54, _54) (-12045751685965517852, _56, _56) (-1562065600918510382, _58, _58) (-202565103828199062, _60, _60) (-26268180566050468, _62, _62) (-3406397725669444, _64, _64) (-441733883266330, _66, _66) (-57283041124942, _68, _68) (-2⁴×464270854851, _70, _70) (-963289216820, _72, _72) (-124917095774, _74, _74) (-16198945598, _76, _76) (-2100635828, _78, _78) (-272403372, _80, _80) (-35323834, _82, _82) (-4580422, _84, _84) (-2⁴×37117, _86, _86) (-76972, _88, _88) (-9966, _90, _90) (-1286, _92, _92) (-164, _94, _94) (-20, _96, _96) (-2, _98, _98) (-1, _99) -2252435681292549507238937339034976389731168425446743401444203100805644020796 ]
EXPR [ (-28501340730193081022769976, _29, _31) (-25596858517893222734879854, _32, _34) (-20473679570004453166577313, _35, _37) (-20323550168349731694042915, _38, _40) (-13556489855205784088324294, _42, _42) (-1757974680803697851541030, _44, _44) (-227970146502351689463944, _46, _46) (-29562648577303174581352, _48, _48) (-3833616832370281961658, _50, _50) (-497134685993837444110, _52, _52) (-64467292072602597420, _54, _54) (-8359971381315363784, _56, _56) (-1084102019293103990, _58, _58) (-140583877077909438, _60, _60) (-18230596548391736, _62, _62) (-2⁴×147756387097482, _64, _64) (-306571386322298, _66, _66) (-39755480369686, _68, _68) (-5155400816460, _70, _70) (-2⁴×41783806291, _72, _72) (-86694957894, _74, _74) (-11242438966, _76, _76) (-1457905928, _78, _78) (-189062136, _80, _80) (-24518618, _82, _82) (-3180030, _84, _84) (-412556, _86, _86) (-53560, _88, _88) (-6966, _90, _90) (-910, _92, _92) (-120, _94, _94) (-2⁴, _96, _96) (-2, _98, _98) (1, _99, _99) (-1, _100) 2⁴×98343781461172805950060971468817811816851861344081352946899260827741187242 ]
EXPR [ (-316686130358531739903027746, _29, _31) (-284413640401184564168975188, _32, _34) (-227488608996349410128438585, _35, _37) (-225820480478358730513512205, _38, _40) (-150629837176346349244850532, _42, _42) (-19533333684294172561569118, _44, _44) (-2533038154819586375614990, _46, _46) (-328478609820160307934196, _48, _48) (-42596356831032224357308, _50, _50) (-5523798387562652306778, _52, _52) (-716313574593440663414, _54, _54) (-2⁴×5805619398324040463, _56, _56) (-12045751685965517852, _58, _58) (-1562065600918510382, _60, _60) (-202565103828199062, _62, _62) (-26268180566050468, _64, _64) (-3406397725669444, _66, _66) (-441733883266330, _68, _68) (-57283041124942, _70, _70) (-2⁴×464270854851, _72, _72) (-963289216820, _74, _74) (-124917095774, _76, _76) (-16198945598, _78, _78) (-2100635828, _80, _80) (-272403372, _82, _82) (-35323834, _84, _84) (-4580422, _86, _86) (-2⁴×37117, _88, _88) (-76972, _90, _90) (-9966, _92, _92) (-1286, _94, _94) (-164, _96, _96) (-20, _98, _98) (-2, _100, _100) (-1, _101) 6993477730293382982942194241175191750277430968862352397137494738453536752158 ]
EXPR [ (-219785950666674514824191774, _29, _31) (-197388254001832323276549768, _32, _34) (-157881243922608367080783775, _35, _37) (-156723532305394303918056891, _38, _40) (-2⁸×408358806303855752845749, _42, _42) (-13556489855205784088324294, _44, _44) (-1757974680803697851541030, _46, _46) (-227970146502351689463944, _48, _48) (-29562648577303174581352, _50, _50) (-3833616832370281961658, _52, _52) (-497134685993837444110, _54, _54) (-64467292072602597420, _56, _56) (-8359971381315363784, _58, _58) (-1084102019293103990, _60, _60) (-140583877077909438, _62, _62) (-18230596548391736, _64, _64) (-2⁴×147756387097482, _66, _66) (-306571386322298, _68, _68) (-39755480369686, _70, _70) (-5155400816460, _72, _72) (-2⁴×41783806291, _74, _74) (-86694957894, _76, _76) (-11242438966, _78, _78) (-1457905928, _80, _80) (-189062136, _82, _82) (-24518618, _84, _84) (-3180030, _86, _86) (-412556, _88, _88) (-53560, _90, _90) (-6966, _92, _92) (-910, _94, _94) (-120, _96, _96) (-2⁴, _98, _98) (-2, _100, _100) (1, _101, _101) (-1, _102) -3689478869443031605469705553478557850049660009211258614316791869596830895066 ]
EXPR [ (-2442101334206567176944133884, _29, _31) (-2193234449212510207589726484, _32, _34) (-1754261340456276106283559783, _35, _37) (-1741397692544897691654098681, _38, _40) (-2⁴×72598168003752242700638561, _42, _42) (-150629837176346349244850532, _44, _44) (-19533333684294172561569118, _46, _46) (-2533038154819586375614990, _48, _48) (-328478609820160307934196, _50, _50) (-42596356831032224357308, _52, _52) (-5523798387562652306778, _54, _54) (-716313574593440663414, _56, _56) (-2⁴×5805619398324040463, _58, _58) (-12045751685965517852, _60, _60) (-1562065600918510382, _62, _62) (-202565103828199062, _64, _64) (-26268180566050468, _66, _66) (-3406397725669444, _68, _68) (-441733883266330, _70, _70) (-57283041124942, _72, _72) (-2⁴×464270854851, _74, _74) (-963289216820, _76, _76) (-124917095774, _78, _78) (-16198945598, _80, _80) (-2100635828, _82, _82) (-272403372, _84, _84) (-35323834, _86, _86) (-4580422, _88, _88) (-2⁴×37117, _90, _90) (-76972, _92, _92) (-9966, _94, _94) (-1286, _96, _96) (-164, _98, _98) (-20, _100, _100) (-2, _102, _102) (-1, _103) -1360808809429160770936957747917031184800601753258480132007334384330183063489 ]
EXPR [ (-1694862868654862744854408460, _29, _31) (-2⁴×95134044453744227791854079, _32, _34) (-1217489367131740333632615085, _35, _37) (-1208561760855002314080457099, _38, _40) (-806151243985930433891020844, _42, _42) (-2⁸×408358806303855752845749, _44, _44) (-13556489855205784088324294, _46, _46) (-1757974680803697851541030, _48, _48) (-227970146502351689463944, _50, _50) (-29562648577303174581352, _52, _52) (-3833616832370281961658, _54, _54) (-497134685993837444110, _56, _56) (-64467292072602597420, _58, _58) (-8359971381315363784, _60, _60) (-1084102019293103990, _62, _62) (-140583877077909438, _64, _64) (-18230596548391736, _66, _66) (-2⁴×147756387097482, _68, _68) (-306571386322298, _70, _70) (-39755480369686, _72, _72) (-5155400816460, _74, _74) (-2⁴×41783806291, _76, _76) (-86694957894, _78, _78) (-11242438966, _80, _80) (-1457905928, _82, _82) (-189062136, _84, _84) (-24518618, _86, _86) (-3180030, _88, _88) (-412556, _90, _90) (-53560, _92, _92) (-6966, _94, _94) (-910, _96, _96) (-120, _98, _98) (-2⁴, _100, _100) (-2, _102, _102) (1, _103, _103) (-1, _104) 2869721806862054632786048573450901131555669063952721850906161929416894976719 ]
EXPR [ (-18832081214864318834395425450, _29, _31) (-16912962903001045894814978738, _32, _34) (-13527854709722891426402360079, _35, _37) (-13428657653977539427288626375, _38, _40) (-8957365211652256511843055806, _42, _42) (-2⁴×72598168003752242700638561, _44, _44) (-150629837176346349244850532, _46, _46) (-19533333684294172561569118, _48, _48) (-2533038154819586375614990, _50, _50) (-328478609820160307934196, _52, _52) (-42596356831032224357308, _54, _54) (-5523798387562652306778, _56, _56) (-716313574593440663414, _58, _58) (-2⁴×5805619398324040463, _60, _60) (-12045751685965517852, _62, _62) (-1562065600918510382, _64, _64) (-202565103828199062, _66, _66) (-26268180566050468, _68, _68) (-3406397725669444, _70, _70) (-441733883266330, _72, _72) (-57283041124942, _74, _74) (-2⁴×464270854851, _76, _76) (-963289216820, _78, _78) (-124917095774, _80, _80) (-16198945598, _82, _82) (-2100635828, _84, _84) (-272403372, _86, _86) (-35323834, _88, _88) (-4580422, _90, _90) (-2⁴×37117, _92, _92) (-76972, _94, _94) (-9966, _96, _96) (-1286, _98, _98) (-164, _100, _100) (-20, _102, _102) (-2, _104, _104) (-1, _105) 6967337088505220120092604788487760486281633720218220329876889705381472078390 ]
EXPR [ (-13069807850922055368928928366, _29, _31) (-11737904738722308288443668282, _32, _34) (-9388577909895870579443815569, _35, _37) (-9319733343904457259909008401, _38, _40) (-6216574834777813070960774374, _42, _42) (-806151243985930433891020844, _44, _44) (-2⁸×408358806303855752845749, _46, _46) (-13556489855205784088324294, _48, _48) (-1757974680803697851541030, _50, _50) (-227970146502351689463944, _52, _52) (-29562648577303174581352, _54, _54) (-3833616832370281961658, _56, _56) (-497134685993837444110, _58, _58) (-64467292072602597420, _60, _60) (-8359971381315363784, _62, _62) (-1084102019293103990, _64, _64) (-140583877077909438, _66, _66) (-18230596548391736, _68, _68) (-2⁴×147756387097482, _70, _70) (-306571386322298, _72, _72) (-39755480369686, _74, _74) (-5155400816460, _76, _76) (-2⁴×41783806291, _78, _78) (-86694957894, _80, _80) (-11242438966, _82, _82) (-1457905928, _84, _84) (-189062136, _86, _86) (-24518618, _88, _88) (-3180030, _90, _90) (-412556, _92, _92) (-53560, _94, _94) (-6966, _96, _96) (-910, _98, _98) (-120, _100, _100) (-2⁴, _102, _102) (-2, _104, _104) (1, _105, _105) (-1, _106) 1542693570123275667017400058493541276811459924384031864262272733295889087721 ]
EXPR [ (-145222181371297686448117424940, _29, _31) (-130423044495311949799371209962, _32, _34) (-104319036637822882286414981251, _35, _37) (-103554085984915296076477391805, _38, _40) (-69074049784192544944340143994, _42, _42) (-8957365211652256511843055806, _44, _44) (-2⁴×72598168003752242700638561, _46, _46) (-150629837176346349244850532, _48, _48) (-19533333684294172561569118, _50, _50) (-2533038154819586375614990, _52, _52) (-328478609820160307934196, _54, _54) (-42596356831032224357308, _56, _56) (-5523798387562652306778, _58, _58) (-716313574593440663414, _60, _60) (-2⁴×5805619398324040463, _62, _62) (-12045751685965517852, _64, _64) (-1562065600918510382, _66, _66) (-202565103828199062, _68, _68) (-26268180566050468, _70, _70) (-3406397725669444, _72, _72) (-441733883266330, _74, _74) (-57283041124942, _76, _76) (-2⁴×464270854851, _78, _78) (-963289216820, _80, _80) (-124917095774, _82, _82) (-16198945598, _84, _84) (-2100635828, _86, _86) (-272403372, _88, _88) (-35323834, _90, _90) (-4580422, _92, _92) (-2⁴×37117, _94, _94) (-76972, _96, _96) (-9966, _98, _98) (-1286, _100, _100) (-164, _102, _102) (-20, _104, _104) (-2, _106, _106) (-1, _107) 1722940589415916028541831053527783930464029518134009369407181027213194293756 ]
EXPR [ (-100786842652120231522793343748, _29, _31) (-90515971731276288583906288274, _32, _34) (-72399314154045677090519811393, _35, _37) (-71868424448610456863951321439, _38, _40) (-47938650426578950580167252122, _42, _42) (-6216574834777813070960774374, _44, _44) (-806151243985930433891020844, _46, _46) (-2⁸×408358806303855752845749, _48, _48) (-13556489855205784088324294, _50, _50) (-1757974680803697851541030, _52, _52) (-227970146502351689463944, _54, _54) (-29562648577303174581352, _56, _56) (-3833616832370281961658, _58, _58) (-497134685993837444110, _60, _60) (-64467292072602597420, _62, _62) (-8359971381315363784, _64, _64) (-1084102019293103990, _66, _66) (-140583877077909438, _68, _68) (-18230596548391736, _70, _70) (-2⁴×147756387097482, _72, _72) (-306571386322298, _74, _74) (-39755480369686, _76, _76) (-5155400816460, _78, _78) (-2⁴×41783806291, _80, _80) (-86694957894, _82, _82) (-11242438966, _84, _84) (-1457905928, _86, _86) (-189062136, _88, _88) (-24518618, _90, _90) (-3180030, _92, _92) (-412556, _94, _94) (-53560, _96, _96) (-6966, _98, _98) (-910, _100, _100) (-120, _102, _102) (-2⁴, _104, _104) (-2, _106, _106) (1, _107, _107) (-1, _108) 3250877871718633132413304860829995489379445158246793110588576692371498403587 ]
EXPR [ (-1119869956040319413078122870510, _29, _31) (-1005747522358009114657672140508, _32, _34) (-804448424273948505467081337473, _35, _37) (-798549564706113517943509670977, _38, _40) (-532659352482627221592340859924, _42, _42) (-69074049784192544944340143994, _44, _44) (-8957365211652256511843055806, _46, _46) (-2⁴×72598168003752242700638561, _48, _48) (-150629837176346349244850532, _50, _50) (-19533333684294172561569118, _52, _52) (-2533038154819586375614990, _54, _54) (-328478609820160307934196, _56, _56) (-42596356831032224357308, _58, _58) (-5523798387562652306778, _60, _60) (-716313574593440663414, _62, _62) (-2⁴×5805619398324040463, _64, _64) (-12045751685965517852, _66, _66) (-1562065600918510382, _68, _68) (-202565103828199062, _70, _70) (-26268180566050468, _72, _72) (-3406397725669444, _74, _74) (-441733883266330, _76, _76) (-57283041124942, _78, _78) (-2⁴×464270854851, _80, _80) (-963289216820, _82, _82) (-124917095774, _84, _84) (-16198945598, _86, _86) (-2100635828, _88, _88) (-272403372, _90, _90) (-35323834, _92, _92) (-4580422, _94, _94) (-2⁴×37117, _96, _96) (-76972, _98, _98) (-9966, _100, _100) (-1286, _102, _102) (-164, _104, _104) (-20, _106, _106) (-2, _108, _108) (-1, _109) -2⁴×215991929633770111794709406882354748166013515484981322531307803219298412289 ]
EXPR [ (-777210175363591214208963975938, _29, _31) (-2⁴×43625445303222572037385386308, _32, _34) (-558301879185689711859133850223, _35, _37) (-554207963053351648029510799743, _38, _40) (-2⁴×23104706629055301131212275061, _42, _42) (-47938650426578950580167252122, _44, _44) (-6216574834777813070960774374, _46, _46) (-806151243985930433891020844, _48, _48) (-2⁸×408358806303855752845749, _50, _50) (-13556489855205784088324294, _52, _52) (-1757974680803697851541030, _54, _54) (-227970146502351689463944, _56, _56) (-29562648577303174581352, _58, _58) (-3833616832370281961658, _60, _60) (-497134685993837444110, _62, _62) (-64467292072602597420, _64, _64) (-8359971381315363784, _66, _66) (-1084102019293103990, _68, _68) (-140583877077909438, _70, _70) (-18230596548391736, _72, _72) (-2⁴×147756387097482, _74, _74) (-306571386322298, _76, _76) (-39755480369686, _78, _78) (-5155400816460, _80, _80) (-2⁴×41783806291, _82, _82) (-86694957894, _84, _84) (-11242438966, _86, _86) (-1457905928, _88, _88) (-189062136, _90, _90) (-24518618, _92, _92) (-3180030, _94, _94) (-412556, _96, _96) (-53560, _98, _98) (-6966, _100, _100) (-910, _102, _102) (-120, _104, _104) (-2⁴, _106, _106) (-2, _108, _108) (1, _109, _109) (-1, _110) 9893783321294753179823458643856551327230513073027145332379624650932997937118 ]
EXPR [ (-8635793145368691215007901250968, _29, _31) (-7755746560306952739520639772360, _32, _34) (-6203443668326667333630741757219, _35, _37) (-6157955055343864231780256728313, _38, _40) (-4107562632763739359991362786980, _42, _42) (-532659352482627221592340859924, _44, _44) (-69074049784192544944340143994, _46, _46) (-8957365211652256511843055806, _48, _48) (-2⁴×72598168003752242700638561, _50, _50) (-150629837176346349244850532, _52, _52) (-19533333684294172561569118, _54, _54) (-2533038154819586375614990, _56, _56) (-328478609820160307934196, _58, _58) (-42596356831032224357308, _60, _60) (-5523798387562652306778, _62, _62) (-716313574593440663414, _64, _64) (-2⁴×5805619398324040463, _66, _66) (-12045751685965517852, _68, _68) (-1562065600918510382, _70, _70) (-202565103828199062, _72, _72) (-26268180566050468, _74, _74) (-3406397725669444, _76, _76) (-441733883266330, _78, _78) (-57283041124942, _80, _80) (-2⁴×464270854851, _82, _82) (-963289216820, _84, _84) (-124917095774, _86, _86) (-16198945598, _88, _88) (-2100635828, _90, _90) (-272403372, _92, _92) (-35323834, _94, _94) (-4580422, _96, _96) (-2⁴×37117, _98, _98) (-76972, _100, _100) (-9966, _102, _102) (-1286, _104, _104) (-164, _106, _106) (-20, _108, _108) (-2, _110, _110) (-1, _111) 10993752326725183471346143072458973823899093340537753913113127046146818202004 ]
EXPR [ (-2⁴×374587372216389749560123287949, _29, _31) (-5382629573816874084439727374140, _32, _34) (-4305303053549062676214291715385, _35, _37) (-4273733126449317609669676410243, _38, _40) (-2850723387039641480469381158136, _42, _42) (-2⁴×23104706629055301131212275061, _44, _44) (-47938650426578950580167252122, _46, _46) (-6216574834777813070960774374, _48, _48) (-806151243985930433891020844, _50, _50) (-2⁸×408358806303855752845749, _52, _52) (-13556489855205784088324294, _54, _54) (-1757974680803697851541030, _56, _56) (-227970146502351689463944, _58, _58) (-29562648577303174581352, _60, _60) (-3833616832370281961658, _62, _62) (-497134685993837444110, _64, _64) (-64467292072602597420, _66, _66) (-8359971381315363784, _68, _68) (-1084102019293103990, _70, _70) (-140583877077909438, _72, _72) (-18230596548391736, _74, _74) (-2⁴×147756387097482, _76, _76) (-306571386322298, _78, _78) (-39755480369686, _80, _80) (-5155400816460, _82, _82) (-2⁴×41783806291, _84, _84) (-86694957894, _86, _86) (-11242438966, _88, _88) (-1457905928, _90, _90) (-189062136, _92, _92) (-24518618, _94, _94) (-3180030, _96, _96) (-412556, _98, _98) (-53560, _100, _100) (-6966, _102, _102) (-910, _104, _104) (-120, _106, _106) (-2⁴, _108, _108) (-2, _110, _110) (1, _111, _111) (-1, _112) -8210947081615051748087511839928671760750566286217260792680963897165187447748 ]
EXPR [ (-66594270921678078618935491165974, _29, _31) (-59807857708349810347045433818578, _32, _34) (-47837390421685090722563194969275, _35, _37) (-47486608395548626367071267302631, _38, _40) (-31675161063894515150802198179494, _42, _42) (-4107562632763739359991362786980, _44, _44) (-532659352482627221592340859924, _46, _46) (-69074049784192544944340143994, _48, _48) (-8957365211652256511843055806, _50, _50) (-2⁴×72598168003752242700638561, _52, _52) (-150629837176346349244850532, _54, _54) (-19533333684294172561569118, _56, _56) (-2533038154819586375614990, _58, _58) (-328478609820160307934196, _60, _60) (-42596356831032224357308, _62, _62) (-5523798387562652306778, _64, _64) (-716313574593440663414, _66, _66) (-2⁴×5805619398324040463, _68, _68) (-12045751685965517852, _70, _70) (-1562065600918510382, _72, _72) (-202565103828199062, _74, _74) (-26268180566050468, _76, _76) (-3406397725669444, _78, _78) (-441733883266330, _80, _80) (-57283041124942, _82, _82) (-2⁴×464270854851, _84, _84) (-963289216820, _86, _86) (-124917095774, _88, _88) (-16198945598, _90, _90) (-2100635828, _92, _92) (-272403372, _94, _94) (-35323834, _96, _96) (-4580422, _98, _98) (-2⁴×37117, _100, _100) (-76972, _102, _102) (-9966, _104, _104) (-1286, _106, _106) (-164, _108, _108) (-20, _110, _110) (-2, _112, _112) (-1, _113) -214062495258492540600919920668682413403876309935909590765751840691006619350 ]
EXPR [ (-46217638666059336373963553109298, _29, _31) (-41507744115204153323451611600810, _32, _34) (-33200021482882994898528634166477, _35, _37) (-32956572358654473978867050446937, _38, _40) (-21983139517542994082115835617646, _42, _42) (-2850723387039641480469381158136, _44, _44) (-2⁴×23104706629055301131212275061, _46, _46) (-47938650426578950580167252122, _48, _48) (-6216574834777813070960774374, _50, _50) (-806151243985930433891020844, _52, _52) (-2⁸×408358806303855752845749, _54, _54) (-13556489855205784088324294, _56, _56) (-1757974680803697851541030, _58, _58) (-227970146502351689463944, _60, _60) (-29562648577303174581352, _62, _62) (-3833616832370281961658, _64, _64) (-497134685993837444110, _66, _66) (-64467292072602597420, _68, _68) (-8359971381315363784, _70, _70) (-1084102019293103990, _72, _72) (-140583877077909438, _74, _74) (-18230596548391736, _76, _76) (-2⁴×147756387097482, _78, _78) (-306571386322298, _80, _80) (-39755480369686, _82, _82) (-5155400816460, _84, _84) (-2⁴×41783806291, _86, _86) (-86694957894, _88, _88) (-11242438966, _90, _90) (-1457905928, _92, _92) (-189062136, _94, _94) (-24518618, _96, _96) (-3180030, _98, _98) (-412556, _100, _100) (-53560, _102, _102) (-6966, _104, _104) (-910, _106, _106) (-120, _108, _108) (-2⁴, _110, _110) (-2, _112, _112) (1, _113, _113) (-1, _114) -8885734488762173582609760114419985763762382591616330037770232979949086030229 ]
EXPR [ (-2⁴×32096045239690888622903823017880, _29, _31) (-461203807505624726362760930330974, _32, _34) (-368894447134394989207690018632507, _35, _37) (-366189417858014772826767676231785, _38, _40) (-244260628047584100909097113354478, _42, _42) (-31675161063894515150802198179494, _44, _44) (-4107562632763739359991362786980, _46, _46) (-532659352482627221592340859924, _48, _48) (-69074049784192544944340143994, _50, _50) (-8957365211652256511843055806, _52, _52) (-2⁴×72598168003752242700638561, _54, _54) (-150629837176346349244850532, _56, _56) (-19533333684294172561569118, _58, _58) (-2533038154819586375614990, _60, _60) (-328478609820160307934196, _62, _62) (-42596356831032224357308, _64, _64) (-5523798387562652306778, _66, _66) (-716313574593440663414, _68, _68) (-2⁴×5805619398324040463, _70, _70) (-12045751685965517852, _72, _72) (-1562065600918510382, _74, _74) (-202565103828199062, _76, _76) (-26268180566050468, _78, _78) (-3406397725669444, _80, _80) (-441733883266330, _82, _82) (-57283041124942, _84, _84) (-2⁴×464270854851, _86, _86) (-963289216820, _88, _88) (-124917095774, _90, _90) (-16198945598, _92, _92) (-2100635828, _94, _94) (-272403372, _96, _96) (-35323834, _98, _98) (-4580422, _100, _100) (-2⁴×37117, _102, _102) (-76972, _104, _104) (-9966, _106, _106) (-1286, _108, _108) (-164, _110, _110) (-20, _112, _112) (-2, _114, _114) (-1, _115) 6074361744107198610616092681499380787884537524683011512050790901164644819736 ]

Something that jumps out is that we have a lot of repeated quadratic terms in this program so if we weren't reusing intermediate variables across opcodes then we're going to be creating a lot of unnecessary constraints.

I added a quick test to check that we're doing this and we don't seem to be .

Happy Case

We should reuse intermediate variables across different opcodes

Alternatives Considered

No response

Additional Context

No response

Would you like to submit a PR for this Issue?

No

Support Needs

No response

TomAFrench commented 1 year ago

Looking at the transformed ACIR however, it does seem that we reuse the witness generated for the product of witnesses 29 and 31 which is a bit strange.