diff --git a/src/test/issue_7132.smt2 b/src/test/issue_7132.smt2 new file mode 100644 index 0000000000..05d4eab4db --- /dev/null +++ b/src/test/issue_7132.smt2 @@ -0,0 +1,729 @@ +; +(set-info :status unknown) +(set-logic ABV) +(declare-fun sp0 () (_ BitVec 32)) +(declare-fun r0 () (_ BitVec 32)) +(declare-fun id.m6 () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun rc () (_ BitVec 32)) +(declare-fun la1 () (_ BitVec 32)) +(declare-fun dl3e () (_ BitVec 32)) +(declare-fun dl3b () (_ BitVec 32)) +(declare-fun dl1e () (_ BitVec 32)) +(declare-fun dl1b () (_ BitVec 32)) +(declare-fun sp3 () (_ BitVec 32)) +(declare-fun sp2 () (_ BitVec 32)) +(declare-fun r43 () (_ BitVec 32)) +(declare-fun r42v () (_ BitVec 32)) +(declare-fun r44 () (_ BitVec 32)) +(declare-fun r42 () (_ BitVec 32)) +(declare-fun sp08 () (_ BitVec 32)) +(declare-fun r402 () (_ BitVec 32)) +(declare-fun r403 () (_ BitVec 32)) +(declare-fun i () (_ BitVec 32)) +(declare-fun l3 () (_ BitVec 32)) +(declare-fun r1 () (_ BitVec 32)) +(declare-fun a () (_ BitVec 32)) +(declare-fun b () (_ BitVec 32)) +(declare-fun id.ma () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun l1b () (_ BitVec 32)) +(declare-fun l1ia () Bool) +(declare-fun la01 () (_ BitVec 32)) +(declare-fun se () (_ BitVec 32)) +(declare-fun stack_begin () (_ BitVec 32)) +(declare-fun rodata.size () (_ BitVec 32)) +(declare-fun ssz () (_ BitVec 32)) +(declare-fun l1=/_end () (_ BitVec 32)) +(declare-fun l1=/_begin () (_ BitVec 32)) +(declare-fun l0e () (_ BitVec 32)) +(declare-fun l0=/_begin () (_ BitVec 32)) +(declare-fun re () (_ BitVec 32)) +(declare-fun rodata_begin () (_ BitVec 32)) +(declare-fun la0 () (_ BitVec 32)) +(declare-fun la3 () (_ BitVec 32)) +(declare-fun ma.LEA () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun la14 () (_ BitVec 32)) +(declare-fun la2e () (_ BitVec 32)) +(declare-fun l2b () (_ BitVec 32)) +(declare-fun l2ia () Bool) +(declare-fun l3e () (_ BitVec 32)) +(declare-fun l3ia () Bool) +(declare-fun d4 () (_ BitVec 32)) +(declare-fun m.Lfc.1%d=/ () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun d2ia () Bool) +(declare-fun d2ls () (_ BitVec 32)) +(declare-fun l2ls () (_ BitVec 32)) +(declare-fun d1ia () Bool) +(declare-fun d3b () (_ BitVec 32)) +(declare-fun l3b () (_ BitVec 32)) +(declare-fun d3ls () (_ BitVec 32)) +(declare-fun dl2 () (_ BitVec 32)) +(declare-fun m.Lfc.1=/ () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun m.Lfc.0=/ () (Array (_ BitVec 32) (_ BitVec 8))) +(declare-fun d1b4 () (_ BitVec 32)) +(declare-fun l3ls () (_ BitVec 32)) +(declare-fun m.Lfc.3%d=/ () (Array (_ BitVec 32) (_ BitVec 8))) +(assert + (let ((?x432 (bvadd sp0 (_ bv4294967292 32)))) + (let ((r0x4 (bvmul (_ bv4 32) r0))) + (let ((?x824 (bvadd (bvadd sp0 r0x4) (_ bv4294965236 32)))) + (let ((?x693 (bvadd ?x824 (_ bv3 32)))) + (let ((?x834 (bvadd ?x824 (_ bv2 32)))) + (let ((?x328 (bvadd ?x824 (_ bv1 32)))) + (let ((?x222 (bvadd ?x824 (_ bv0 32)))) + (let ((?x5 (bvadd sp0 (_ bv4294967283 32)))) + (let (($x541 (= dl3e ?x5))) + (let ((?x890 (bvadd sp0 (_ bv4294965235 32)))) + (let (($x682 (= dl1e ?x890))) + (let ((?x1152 (bvadd sp0 (_ bv4294964980 32)))) + (let (($x852 (= dl1b ?x1152))) + (let ((?x375 (bvadd sp0 (_ bv4294964964 32)))) + (let (($x653 (= sp3 ?x375))) + (let ((?x373 (bvadd sp0 (_ bv4294967288 32)))) + (let (($x1049 (= sp2 ?x373))) + (let (($x1081 (= r44 ?x375))) + (let (($x986 (= r42 ?x373))) + (let (($x339 (= sp08 ?x432))) + (let (($x120 (= r402 ?x432))) + (let (($x995 (= r403 sp0))) + (let (($x449 (= i r0))) + (let ((?x1055 (bvadd la1 (_ bv4294967280 32)))) + (let (($x271 (= ?x1055 r44))) + (let (($x764 (= a r1))) + (let ((?x1128 (bvadd la1 (_ bv2316 32)))) + (let (($x599 (= ?x1128 sp0))) + (let ((?x288 (bvadd sp0 (_ bv8 32)))) + (let ((?x913 (select id.m6 ?x288))) + (let ((?x1072 (bvadd ?x288 (_ bv1 32)))) + (let ((?x15 (select id.m6 ?x1072))) + (let ((?x1008 (bvadd ?x288 (_ bv2 32)))) + (let ((?x1218 (select id.m6 ?x1008))) + (let ((?x782 (bvadd ?x288 (_ bv3 32)))) + (let ((?x421 (select id.m6 ?x782))) + (let ((?x530 (concat ?x421 (concat ?x1218 (concat ?x15 ?x913))))) + (let (($x287 (= b ?x530))) + (let ((?x1227 (bvadd sp0 (_ bv4 32)))) + (let ((?x363 (select id.m6 ?x1227))) + (let ((?x207 (bvadd ?x1227 (_ bv1 32)))) + (let ((?x1217 (select id.m6 ?x207))) + (let ((?x1073 (bvadd ?x1227 (_ bv2 32)))) + (let ((?x127 (select id.m6 ?x1073))) + (let ((?x356 (bvadd ?x1227 (_ bv3 32)))) + (let ((?x38 (select id.m6 ?x356))) + (let ((?x713 (concat ?x38 (concat ?x127 (concat ?x1217 ?x363))))) + (let (($x567 (= a ?x713))) + (let (($x1265 (= ?x1055 sp3))) + (let ((?x233 (select id.m6 sp0))) + (let ((?x338 (bvadd sp0 (_ bv1 32)))) + (let ((?x171 (select id.m6 ?x338))) + (let ((?x1232 (bvadd sp0 (_ bv2 32)))) + (let ((?x1079 (select id.m6 ?x1232))) + (let ((?x1070 (bvadd sp0 (_ bv3 32)))) + (let ((?x291 (select id.m6 ?x1070))) + (let ((?x245 (concat ?x291 (concat ?x1079 (concat ?x171 ?x233))))) + (let (($x1014 (= rc ?x245))) + (let ((?x620 ((_ extract 3 0) la1))) + (let (($x234 (= (_ bv0 4) ?x620))) + (let (($x618 (= (select id.ma (bvadd ?x288 (_ bv0 32))) (_ bv5 8)))) + (let (($x1279 (and (and $x618 (= (select id.ma ?x1072) (_ bv5 8))) (= (select id.ma ?x1008) (_ bv5 8))))) + (let (($x838 (and $x1279 (= (select id.ma ?x782) (_ bv5 8))))) + (let (($x471 (and (bvule ?x288 (bvsub (bvadd ?x288 (_ bv4 32)) (_ bv1 32))) $x838))) + (let (($x524 (= $x471 true))) + (let (($x774 (= (select id.ma (bvadd ?x373 (_ bv0 32))) (_ bv7 8)))) + (let (($x987 (and $x774 (= (select id.ma (bvadd ?x373 (_ bv1 32))) (_ bv7 8))))) + (let (($x1262 (and $x987 (= (select id.ma (bvadd ?x373 (_ bv2 32))) (_ bv7 8))))) + (let (($x1254 (and $x1262 (= (select id.ma (bvadd ?x373 (_ bv3 32))) (_ bv7 8))))) + (let (($x1272 (and (bvule ?x373 (bvsub (bvadd ?x373 (_ bv4 32)) (_ bv1 32))) $x1254))) + (let (($x938 (= $x1272 true))) + (let (($x1310 (= (select id.ma (bvadd ?x432 (_ bv0 32))) (_ bv7 8)))) + (let (($x1056 (and $x1310 (= (select id.ma (bvadd ?x432 (_ bv1 32))) (_ bv7 8))))) + (let (($x561 (and $x1056 (= (select id.ma (bvadd ?x432 (_ bv2 32))) (_ bv7 8))))) + (let (($x724 (and $x561 (= (select id.ma (bvadd ?x432 (_ bv3 32))) (_ bv7 8))))) + (let (($x343 (and (bvule ?x432 (bvsub (bvadd ?x432 (_ bv4 32)) (_ bv1 32))) $x724))) + (let (($x513 (= $x343 true))) + (let (($x1086 (= la1 l1b))) + (let (($x1327 (or l1ia $x1086))) + (let (($x168 (= $x1327 true))) + (let (($x50 (= (select id.ma (bvadd sp0 (_ bv0 32))) (_ bv7 8)))) + (let (($x123 (and $x50 (= (select id.ma ?x338) (_ bv7 8))))) + (let (($x485 (and (and $x123 (= (select id.ma ?x1232) (_ bv7 8))) (= (select id.ma ?x1070) (_ bv7 8))))) + (let (($x1166 (and (bvule sp0 (bvsub ?x1227 (_ bv1 32))) $x485))) + (let (($x277 (= $x1166 true))) + (let ((?x590 (select id.ma (bvadd (bvadd sp0 (_ bv0 32)) (_ bv0 32))))) + (let (($x809 (or (= ?x590 (_ bv2 8)) (= ?x590 (_ bv3 8))))) + (let (($x857 (or (or $x809 (= ?x590 (_ bv4 8))) (= ?x590 (_ bv5 8))))) + (let (($x663 (and (distinct (_ bv1 32) (_ bv0 32)) true))) + (let (($x78 (and (and $x663 (bvule sp0 (bvsub ?x338 (_ bv1 32)))) (or $x857 (= ?x590 (_ bv7 8)))))) + (let (($x623 (= $x78 true))) + (let (($x454 (bvsge r0 (_ bv0 32)))) + (let (($x806 (= $x454 true))) + (let (($x462 (bvsle r0 (_ bv255 32)))) + (let (($x57 (= $x462 true))) + (let (($x1246 (= sp3 ?x1055))) + (let (($x555 (or l1ia $x1246))) + (let (($x167 (= $x555 true))) + (let (($x146 (= la01 ?x288))) + (let (($x499 (= $x146 true))) + (let (($x646 (bvule r44 sp0))) + (let (($x825 (= $x646 true))) + (let (($x1127 (forall ((rsm-bounded-var! (_ BitVec 32)) )(let ((?x500 (select id.ma rsm-bounded-var!))) + (let (($x1133 (= ?x500 (_ bv7 8)))) + (let (($x802 (= ?x500 (_ bv5 8)))) + (let (($x671 (or (or (or (= ?x500 (_ bv2 8)) (= ?x500 (_ bv3 8))) (= ?x500 (_ bv4 8))) $x802))) + (let (($x836 (and (bvule stack_begin rsm-bounded-var!) (bvule rsm-bounded-var! se)))) + (= $x836 (or $x671 $x1133)))))))) + )) + (let (($x808 (forall ((icm-bounded-var! (_ BitVec 32)) )(let ((?x500 (select id.ma icm-bounded-var!))) + (let (($x802 (= ?x500 (_ bv5 8)))) + (let (($x1044 (bvule icm-bounded-var! l1=/_end))) + (let (($x236 (bvule l1=/_begin icm-bounded-var!))) + (= (and $x236 $x1044) $x802)))))) + )) + (let (($x927 (forall ((icm-bounded-var! (_ BitVec 32)) )(let ((?x500 (select id.ma icm-bounded-var!))) + (let (($x578 (= ?x500 (_ bv4 8)))) + (let (($x1151 (bvule icm-bounded-var! l0e))) + (let (($x31 (bvule l0=/_begin icm-bounded-var!))) + (= (and $x31 $x1151) $x578)))))) + )) + (let ((?x823 (bvadd (bvadd (_ bv4294967295 32) stack_begin) ssz))) + (let (($x173 (= se ?x823))) + (let ((?x193 (bvadd (_ bv3 32) l1=/_begin))) + (let (($x320 (= l1=/_end ?x193))) + (let (($x634 (bvule stack_begin se))) + (let (($x199 (bvule l1=/_begin l1=/_end))) + (let ((?x447 (bvadd l0=/_begin (_ bv3 32)))) + (let (($x521 (= l0e ?x447))) + (let (($x242 (bvule l0=/_begin l0e))) + (let (($x1201 (and (and (and (and (and (and $x242 $x521) $x199) $x634) $x320) $x173) $x927))) + (let (($x133 (and $x1201 $x808))) + (let (($x132 (and $x133 (not (= (_ bv0 32) ssz))))) + (let (($x1336 (forall ((icm-bounded-var! (_ BitVec 32)) )(let (($x593 (and (bvule rodata_begin icm-bounded-var!) (bvule icm-bounded-var! re)))) + (= $x593 (= (select id.ma icm-bounded-var!) (_ bv8 8))))) + )) + (let ((?x919 (bvadd (bvadd (_ bv4294967295 32) rodata_begin) rodata.size))) + (let (($x125 (= re ?x919))) + (let (($x576 (bvule rodata_begin re))) + (let (($x305 (and (and (and $x576 $x125) $x1336) $x132))) + (let (($x738 (and $x305 (not (= (_ bv0 32) rodata.size))))) + (let ((?x692 (bvadd (_ bv1 32) se))) + (let ((?x1176 (bvand (_ bv4294963200 32) ?x692))) + (let (($x1129 (= ?x692 ?x1176))) + (let ((?x1302 (bvand stack_begin (_ bv4294963200 32)))) + (let (($x661 (= stack_begin ?x1302))) + (let ((?x1113 (bvand la01 (_ bv3 32)))) + (let (($x275 (= (_ bv0 32) ?x1113))) + (let ((?x1247 (bvand la0 (_ bv3 32)))) + (let (($x231 (= (_ bv0 32) ?x1247))) + (let (($x349 (bvuge l1=/_end l0=/_begin))) + (let (($x143 (bvuge l0e l1=/_begin))) + (let (($x951 (and $x143 $x349))) + (let (($x860 (not $x951))) + (let (($x1011 (and $x860 $x860))) + (let (($x1039 (bvuge re stack_begin))) + (let (($x1101 (bvuge se rodata_begin))) + (let (($x1282 (and $x1101 $x1039))) + (let (($x1239 (not $x1282))) + (let (($x56 (and $x1239 $x1239))) + (let (($x1068 (= (bvand ?x1227 (_ bv4294967280 32)) ?x1227))) + (let ((?x180 (bvadd sp0 (_ bv11 32)))) + (let (($x30 (bvule ?x180 se))) + (let (($x252 (bvule sp0 ?x180))) + (let (($x1250 (bvule stack_begin sp0))) + (let (($x147 (= la01 l1=/_begin))) + (let (($x1131 (= la0 l0=/_begin))) + (let (($x387 (and (and (and (and (and (and $x1131 $x147) $x1250) $x252) $x30) $x1068) $x56))) + (let (($x1061 (and (and (and (and (and (and $x387 $x1011) $x231) $x275) $x661) $x1129) $x738))) + (let (($x1076 (and $x1061 $x1127))) + (let (($x254 (= (select id.ma (bvadd (_ bv0 32) (_ bv0 32))) (_ bv6 8)))) + (let (($x249 (and (and $x663 (bvule (_ bv0 32) (bvsub (bvadd (_ bv0 32) (_ bv1 32)) (_ bv1 32)))) $x254))) + (let (($x1001 (and $x249 $x1076))) + (let (($x968 (= $x1001 true))) + (let (($x508 (= la0 ?x1227))) + (let (($x895 (= $x508 true))) + (let (($x335 (bvule r0 (_ bv255 32)))) + (let (($x1194 (= $x335 true))) + (let (($x881 (= (select id.ma (bvadd ?x1227 (_ bv0 32))) (_ bv4 8)))) + (let (($x197 (and (and $x881 (= (select id.ma ?x207) (_ bv4 8))) (= (select id.ma ?x1073) (_ bv4 8))))) + (let (($x945 (and $x197 (= (select id.ma ?x356) (_ bv4 8))))) + (let (($x490 (and (bvule ?x1227 (bvsub (bvadd ?x1227 (_ bv4 32)) (_ bv1 32))) $x945))) + (let (($x1050 (= $x490 true))) + (let (($x6 (= (_ bv255 32) r0))) + (let (($x223 (bvult r402 sp0))) + (let (($x849 (= $x223 true))) + (let (($x398 (bvult sp08 sp0))) + (let (($x240 (= $x398 true))) + (let (($x701 (bvule sp08 sp0))) + (let (($x1307 (= $x701 true))) + (let (($x122 (bvult r42 sp0))) + (let (($x477 (= $x122 true))) + (let (($x1171 (bvule r42 sp0))) + (let (($x677 (= $x1171 true))) + (let (($x647 (bvult r44 sp0))) + (let (($x731 (= $x647 true))) + (let (($x280 (bvule r42v sp0))) + (let (($x887 (= $x280 true))) + (let (($x514 (bvult r43 sp0))) + (let (($x510 (bvule r43 sp0))) + (let (($x1219 (= $x510 true))) + (let (($x1013 (bvult sp2 sp0))) + (let (($x588 (= $x1013 true))) + (let (($x1162 (bvule sp2 sp0))) + (let (($x531 (= $x1162 true))) + (let (($x843 (bvult sp3 sp0))) + (let (($x1341 (= $x843 true))) + (let (($x1110 (bvule sp3 sp0))) + (let (($x841 (= $x1110 true))) + (let (($x248 (bvult dl1b sp0))) + (let (($x788 (= $x248 true))) + (let (($x758 (bvule dl1b sp0))) + (let (($x227 (= $x758 true))) + (let (($x417 (bvult dl1e sp0))) + (let (($x289 (= $x417 true))) + (let (($x75 (bvule dl1e sp0))) + (let (($x84 (= $x75 true))) + (let (($x632 (bvult dl3b sp0))) + (let (($x410 (= $x632 true))) + (let (($x1216 (bvule dl3b sp0))) + (let (($x835 (= $x1216 true))) + (let (($x94 (bvult dl3e sp0))) + (let (($x976 (= $x94 true))) + (let (($x585 (bvule dl3e sp0))) + (let (($x1276 (= $x585 true))) + (let ((?x1083 (bvmul (_ bv4294967292 32) i))) + (let (($x910 (= la3 ?x1083))) + (let (($x212 (not $x910))) + (let (($x558 (= $x212 true))) + (let (($x551 (bvsle i (_ bv255 32)))) + (let (($x129 (=> $x551 $x558))) + (let ((?x1120 (bvmul (_ bv4 32) i))) + (let ((?x1146 (bvadd la3 ?x1120))) + (let ((?x365 (bvsub ?x1146 ?x1120))) + (let (($x589 (bvsge ?x1120 (_ bv0 32)))) + (let (($x1023 (ite $x589 (bvuge ?x1146 ?x365) (bvult ?x1146 ?x365)))) + (let (($x1220 (= $x1023 true))) + (let (($x166 (=> $x551 $x1220))) + (let (($x73 (= (bvand ?x1146 (_ bv4294967292 32)) ?x1146))) + (let (($x1095 (= $x73 true))) + (let (($x877 (=> $x551 $x1095))) + (let ((?x828 (bvadd a ?x1120))) + (let (($x1118 (= (bvand ?x828 (_ bv4294967292 32)) ?x828))) + (let (($x557 (= $x1118 true))) + (let (($x304 (=> $x551 $x557))) + (let ((?x433 (bvsub la3 (_ bv0 32)))) + (let (($x112 (bvult la3 ?x433))) + (let (($x660 (bvuge la3 ?x433))) + (let (($x232 (ite (bvsge (_ bv0 32) (_ bv0 32)) $x660 $x112))) + (let (($x851 (= $x232 true))) + (let (($x318 (=> $x551 $x851))) + (let ((?x981 ((_ sign_extend 32) i))) + (let ((?x460 (bvmul (_ bv4 64) ?x981))) + (let ((?x148 ((_ extract 63 32) ?x460))) + (let (($x994 (= (_ bv0 32) ?x148))) + (let (($x791 (= $x994 true))) + (let (($x355 (=> $x551 $x791))) + (let (($x903 (bvslt i (_ bv0 32)))) + (let ((?x761 (ite $x903 (_ bv4294967295 32) (_ bv0 32)))) + (let (($x821 (= ?x148 ?x761))) + (let (($x361 (= $x821 true))) + (let (($x755 (=> $x551 $x361))) + (let (($x34 (ite $x589 (bvuge ?x828 (bvsub ?x828 ?x1120)) (bvult ?x828 (bvsub ?x828 ?x1120))))) + (let (($x579 (= $x34 true))) + (let (($x422 (=> $x551 $x579))) + (let (($x188 (= a ?x1083))) + (let (($x190 (not $x188))) + (let (($x1285 (= $x190 true))) + (let (($x332 (=> $x551 $x1285))) + (let (($x717 (forall ((icm-bounded-var! (_ BitVec 32)) )(let (($x526 (bvule icm-bounded-var! la14))) + (let (($x1337 (bvule l1b icm-bounded-var!))) + (= (and $x1337 $x526) (= (select ma.LEA icm-bounded-var!) (_ bv2 8)))))) + )) + (let (($x518 (xor l1ia $x717))) + (let (($x1139 (= $x518 true))) + (let (($x106 (forall ((icm-bounded-var! (_ BitVec 32)) )(let ((?x799 (select ma.LEA icm-bounded-var!))) + (let (($x1260 (= ?x799 (_ bv1 8)))) + (let (($x1206 (bvule icm-bounded-var! la2e))) + (let (($x520 (bvule l2b icm-bounded-var!))) + (= (and $x520 $x1206) $x1260)))))) + )) + (let (($x198 (xor l2ia $x106))) + (let (($x1062 (= $x198 true))) + (let (($x762 (= (_ bv256 32) d4))) + (let (($x1100 (bvule l1b la14))) + (let (($x1130 (or l1ia $x1100))) + (let (($x744 (= $x1130 true))) + (let (($x346 (forall ((mae-bounded-var! (_ BitVec 32)) )(let ((?x1098 (select id.m6 mae-bounded-var!))) + (let ((?x453 (select m.Lfc.1%d=/ mae-bounded-var!))) + (let ((?x459 (select ma.LEA (bvadd mae-bounded-var! (_ bv0 32))))) + (let (($x663 (and (distinct (_ bv1 32) (_ bv0 32)) true))) + (let (($x1290 (and $x663 (bvule mae-bounded-var! (bvsub (bvadd mae-bounded-var! (_ bv1 32)) (_ bv1 32)))))) + (=> (and $x1290 (= ?x459 (_ bv2 8))) (= ?x453 ?x1098)))))))) + )) + (let (($x1244 (and true $x346))) + (let (($x1242 (= $x1244 true))) + (let ((?x753 (select id.ma (bvadd (bvadd sp3 (_ bv0 32)) (_ bv0 32))))) + (let (($x409 (or (= ?x753 (_ bv2 8)) (= ?x753 (_ bv3 8))))) + (let (($x781 (or (or $x409 (= ?x753 (_ bv4 8))) (= ?x753 (_ bv5 8))))) + (let (($x278 (bvule sp3 (bvsub (bvadd sp3 (_ bv1 32)) (_ bv1 32))))) + (let (($x1210 (and (and $x663 $x278) (or $x781 (and true (= ?x753 (_ bv7 8))))))) + (let (($x149 (= $x1210 true))) + (let (($x619 (= la3 l2b))) + (let (($x458 (or l2ia $x619))) + (let (($x703 (= $x458 true))) + (let (($x830 (= l2ia d2ia))) + (let (($x1031 (= $x830 true))) + (let (($x540 (= l2ls d2ls))) + (let (($x1207 (or l2ia $x540))) + (let (($x935 (= $x1207 true))) + (let (($x1020 (= l1ia d1ia))) + (let (($x1168 (= $x1020 true))) + (let (($x1245 (forall ((maemvs-bounded-var! (_ BitVec 32)) )(let ((?x799 (select ma.LEA maemvs-bounded-var!))) + (let (($x1260 (= ?x799 (_ bv1 8)))) + (let (($x991 (or false $x1260))) + (let ((?x500 (select id.ma maemvs-bounded-var!))) + (let (($x1133 (= ?x500 (_ bv7 8)))) + (let (($x813 (and (=> (and (not $x991) (not $x1133)) (= ?x799 ?x500)) (=> $x991 (or $x1133 (= ?x500 (_ bv9 8))))))) + (and $x813 (=> $x1133 (or $x991 (= ?x799 (_ bv9 8)))))))))))) + )) + (let (($x875 (= $x1245 true))) + (let (($x954 (= l3b d3b))) + (let (($x492 (or l3ia $x954))) + (let (($x128 (= $x492 true))) + (let (($x244 (forall ((mia-bounded-var! (_ BitVec 32)) )(let ((?x799 (select ma.LEA mia-bounded-var!))) + (and (distinct ?x799 (_ bv3 8)) true))) + )) + (let (($x598 (= l3ia $x244))) + (let (($x1193 (= $x598 true))) + (let (($x464 (= (_ bv0 32) d3ls))) + (let (($x286 (not $x464))) + (let (($x587 (or l3ia $x286))) + (let (($x1140 (= $x587 true))) + (let (($x1315 (= la3 dl2))) + (let (($x748 (or l2ia $x1315))) + (let (($x187 (= $x748 true))) + (let ((?x1208 (select id.ma (bvadd (bvadd r44 (_ bv0 32)) (_ bv0 32))))) + (let (($x1082 (or (and true (= ?x1208 (_ bv2 8))) (and true (= ?x1208 (_ bv3 8)))))) + (let (($x1052 (or (or $x1082 (and true (= ?x1208 (_ bv4 8)))) (and true (= ?x1208 (_ bv5 8)))))) + (let (($x383 (bvule r44 (bvsub (bvadd r44 (_ bv1 32)) (_ bv1 32))))) + (let (($x627 (and (and $x663 $x383) (or $x1052 (= ?x1208 (_ bv7 8)))))) + (let (($x91 (= $x627 true))) + (let (($x1042 (= l3 l3b))) + (let (($x511 (or l3ia $x1042))) + (let (($x720 (= $x511 true))) + (let (($x592 (bvule r44 l3b))) + (let (($x704 (or l3ia $x592))) + (let (($x202 (= $x704 true))) + (let ((?x829 (bvadd (_ bv4294967295 32) l3b))) + (let ((?x327 (bvadd ?x829 d3ls))) + (let (($x354 (bvule ?x327 l3e))) + (let (($x334 (or l3ia $x354))) + (let (($x892 (= $x334 true))) + (let (($x1317 (= (_ bv1024 32) d3ls))) + (let ((?x1109 (bvadd l3 (_ bv4294966000 32)))) + (let (($x427 (= sp3 ?x1109))) + (let (($x256 (or l3ia $x427))) + (let (($x909 (= $x256 true))) + (let ((?x1319 (bvadd (_ bv4294967295 32) l2b))) + (let ((?x359 (bvadd ?x1319 d2ls))) + (let (($x220 (bvule ?x359 la2e))) + (let (($x1202 (or l2ia $x220))) + (let (($x186 (= $x1202 true))) + (let (($x1297 (bvule l2b la2e))) + (let (($x805 (or l2ia $x1297))) + (let (($x372 (= $x805 true))) + (let ((?x815 (bvadd (_ bv4294967295 32) l1b))) + (let ((?x1126 (bvadd ?x815 d4))) + (let (($x493 (bvule ?x1126 la14))) + (let (($x384 (or l1ia $x493))) + (let (($x1335 (= $x384 true))) + (let (($x1024 (bvule r44 l1b))) + (let (($x736 (or l1ia $x1024))) + (let (($x789 (= $x736 true))) + (let ((?x922 (select id.m6 l1=/_begin))) + (let ((?x747 (bvadd l1=/_begin (_ bv1 32)))) + (let ((?x119 (select id.m6 ?x747))) + (let ((?x322 (bvadd l1=/_begin (_ bv2 32)))) + (let ((?x1270 (select id.m6 ?x322))) + (let ((?x374 (bvadd l1=/_begin (_ bv3 32)))) + (let ((?x534 (select id.m6 ?x374))) + (let ((?x562 (select m.Lfc.1=/ l1=/_begin))) + (let ((?x537 (select m.Lfc.1=/ ?x747))) + (let ((?x1089 (select m.Lfc.1=/ ?x322))) + (let ((?x1161 (select m.Lfc.1=/ ?x374))) + (let (($x109 (= (concat ?x1161 (concat ?x1089 (concat ?x537 ?x562))) (concat ?x534 (concat ?x1270 (concat ?x119 ?x922)))))) + (let (($x779 (and true $x109))) + (let (($x300 (= $x779 true))) + (let (($x1197 (bvult l3e sp2))) + (let (($x494 (or l3ia $x1197))) + (let (($x1258 (= $x494 true))) + (let ((?x1080 (bvmul (_ bv4294967295 32) d3ls))) + (let ((?x496 (bvadd l3b ?x1080))) + (let (($x711 (bvule r44 ?x496))) + (let (($x151 (or l3ia $x711))) + (let (($x396 (= $x151 true))) + (let (($x985 (forall ((icm-bounded-var! (_ BitVec 32)) )(let (($x1009 (bvule icm-bounded-var! l3e))) + (let (($x81 (bvule l3b icm-bounded-var!))) + (= (and $x81 $x1009) (= (select ma.LEA icm-bounded-var!) (_ bv3 8)))))) + )) + (let (($x888 (xor l3ia $x985))) + (let (($x570 (= $x888 true))) + (let ((?x110 (select id.m6 l0=/_begin))) + (let ((?x457 (bvadd l0=/_begin (_ bv1 32)))) + (let ((?x159 (select id.m6 ?x457))) + (let ((?x684 (bvadd l0=/_begin (_ bv2 32)))) + (let ((?x247 (select id.m6 ?x684))) + (let ((?x639 (select id.m6 ?x447))) + (let ((?x83 (select m.Lfc.0=/ l0=/_begin))) + (let ((?x206 (select m.Lfc.0=/ ?x457))) + (let ((?x643 (select m.Lfc.0=/ ?x684))) + (let ((?x342 (select m.Lfc.0=/ ?x447))) + (let (($x1173 (= (concat ?x342 (concat ?x643 (concat ?x206 ?x83))) (concat ?x639 (concat ?x247 (concat ?x159 ?x110)))))) + (let (($x872 (and true $x1173))) + (let (($x1025 (= $x872 true))) + (let (($x1261 (= l3e ?x327))) + (let (($x837 (or l3ia $x1261))) + (let (($x1027 (= $x837 true))) + (let (($x200 (= la2e ?x359))) + (let (($x348 (or l2ia $x200))) + (let (($x102 (= $x348 true))) + (let (($x635 (= la14 ?x1126))) + (let (($x165 (or l1ia $x635))) + (let (($x279 (= $x165 true))) + (let (($x475 (bvule l3b l3e))) + (let (($x115 (or l3ia $x475))) + (let (($x649 (= $x115 true))) + (let (($x204 (not l2ia))) + (let (($x840 (= $x204 true))) + (let (($x104 (= (_ bv0 32) d4))) + (let (($x1236 (not $x104))) + (let (($x98 (or l1ia $x1236))) + (let (($x85 (= $x98 true))) + (let (($x904 (= $x551 true))) + (let (($x960 (= l1b d1b4))) + (let (($x1273 (or l1ia $x960))) + (let (($x714 (= $x1273 true))) + (let (($x382 (not l3ia))) + (let (($x1018 (= $x382 true))) + (let (($x51 (= l3ls d3ls))) + (let (($x1190 (or l3ia $x51))) + (let (($x939 (= $x1190 true))) + (let (($x1278 (= (_ bv0 32) d2ls))) + (let (($x573 (not $x1278))) + (let (($x664 (or l2ia $x573))) + (let (($x1119 (= $x664 true))) + (let (($x931 (forall ((mia-bounded-var! (_ BitVec 32)) )(let ((?x799 (select ma.LEA mia-bounded-var!))) + (and (distinct ?x799 (_ bv1 8)) true))) + )) + (let (($x891 (= l2ia $x931))) + (let (($x848 (= $x891 true))) + (let (($x607 (or l2ia true))) + (let (($x404 (= $x607 true))) + (let (($x1205 (forall ((mae-bounded-var! (_ BitVec 32)) )(let ((?x1098 (select id.m6 mae-bounded-var!))) + (let ((?x429 (select m.Lfc.3%d=/ mae-bounded-var!))) + (let ((?x459 (select ma.LEA (bvadd mae-bounded-var! (_ bv0 32))))) + (let (($x663 (and (distinct (_ bv1 32) (_ bv0 32)) true))) + (let (($x1290 (and $x663 (bvule mae-bounded-var! (bvsub (bvadd mae-bounded-var! (_ bv1 32)) (_ bv1 32)))))) + (=> (and $x1290 (= ?x459 (_ bv3 8))) (= ?x429 ?x1098)))))))) + )) + (let (($x113 (and true $x1205))) + (let (($x793 (= $x113 true))) + (let (($x553 (not l1ia))) + (let (($x1005 (= $x553 true))) + (let (($x538 (= (_ bv1024 32) d2ls))) + (let (($x847 (= b b))) + (let (($x164 (bvult la14 sp2))) + (let (($x18 (or l1ia $x164))) + (let (($x285 (= $x18 true))) + (let (($x889 (bvsge i (_ bv0 32)))) + (let (($x659 (= $x889 true))) + (let (($x566 (bvule i (_ bv255 32)))) + (let (($x721 (= $x566 true))) + (let ((?x695 (bvadd sp3 (_ bv16 32)))) + (let (($x839 (= dl1b ?x695))) + (let (($x442 (bvugt dl1b sp3))) + (let (($x1235 (= $x442 true))) + (let (($x583 (bvuge dl1b sp3))) + (let (($x92 (= $x583 true))) + (let (($x377 (bvuge dl1e sp3))) + (let (($x203 (= $x377 true))) + (let ((?x1325 (bvadd sp3 (_ bv1296 32)))) + (let (($x1228 (= dl3b ?x1325))) + (let (($x1037 (bvugt dl3b sp3))) + (let (($x638 (= $x1037 true))) + (let (($x1022 (bvuge dl3b sp3))) + (let (($x100 (= $x1022 true))) + (let (($x141 (bvuge dl3e sp3))) + (let (($x131 (= $x141 true))) + (let (($x581 (and $x840 $x1005))) + (let (($x169 (and $x581 $x1018))) + (let (($x776 (and $x169 $x131))) + (let (($x1296 (and $x776 $x100))) + (let (($x832 (and $x1296 $x638))) + (let (($x1267 (and $x832 $x1228))) + (let (($x181 (and $x1267 $x203))) + (let (($x507 (and $x181 $x92))) + (let (($x842 (and $x507 $x1235))) + (let (($x59 (and $x842 $x839))) + (let (($x988 (and $x59 $x721))) + (let (($x1249 (and $x988 $x659))) + (let (($x1099 (and $x1249 $x285))) + (let (($x1225 (and $x1099 $x538))) + (let (($x977 (and $x1225 $x1005))) + (let (($x298 (and $x977 $x793))) + (let (($x175 (and $x298 $x404))) + (let (($x58 (and $x175 $x848))) + (let (($x491 (and $x58 $x1119))) + (let (($x972 (and $x491 $x939))) + (let (($x624 (and $x972 $x1018))) + (let (($x923 (and $x624 $x714))) + (let (($x1306 (and $x923 $x904))) + (let (($x49 (and $x1306 $x85))) + (let (($x996 (and $x49 $x840))) + (let (($x845 (and $x996 $x649))) + (let (($x358 (and $x845 $x279))) + (let (($x777 (and $x358 $x102))) + (let (($x347 (and $x777 $x1027))) + (let (($x456 (and $x347 $x1025))) + (let (($x1255 (and $x456 $x570))) + (let (($x142 (and $x1255 $x396))) + (let (($x353 (and $x142 $x1258))) + (let (($x215 (and $x353 $x300))) + (let (($x114 (and $x215 $x789))) + (let (($x1016 (and $x114 $x1335))) + (let (($x140 (and $x1016 $x372))) + (let (($x281 (and $x140 $x186))) + (let (($x64 (and $x281 $x909))) + (let (($x820 (and $x64 $x1317))) + (let (($x461 (and $x820 $x892))) + (let (($x1231 (and $x461 $x202))) + (let (($x70 (and $x1231 $x720))) + (let (($x933 (and $x70 $x91))) + (let (($x481 (and $x933 $x187))) + (let (($x1308 (and $x481 $x1140))) + (let (($x124 (and $x1308 $x1193))) + (let (($x221 (and $x124 $x128))) + (let (($x611 (and $x221 $x875))) + (let (($x803 (and $x611 $x1168))) + (let (($x103 (and $x803 $x935))) + (let (($x145 (and $x103 $x1031))) + (let (($x871 (and $x145 $x703))) + (let (($x258 (and $x871 $x149))) + (let (($x1060 (and $x258 $x1242))) + (let (($x344 (and $x1060 $x744))) + (let (($x1003 (and $x344 $x762))) + (let (($x733 (and $x1003 $x1062))) + (let (($x817 (and $x733 $x1139))) + (let (($x645 (and $x817 $x332))) + (let (($x690 (and $x645 $x422))) + (let (($x336 (and $x690 $x755))) + (let (($x154 (and $x336 $x355))) + (let (($x1004 (and $x154 $x318))) + (let (($x582 (and $x1004 $x304))) + (let (($x1214 (and $x582 $x877))) + (let (($x770 (and $x1214 $x166))) + (let (($x1078 (and $x770 $x129))) + (let (($x14 (and $x1078 $x1276))) + (let (($x769 (and $x14 $x976))) + (let (($x1253 (and $x769 $x835))) + (let (($x699 (and $x1253 $x410))) + (let (($x1108 (and $x699 $x84))) + (let (($x818 (and $x1108 $x289))) + (let (($x331 (and $x818 $x227))) + (let (($x804 (and $x331 $x788))) + (let (($x1224 (and $x804 $x841))) + (let (($x1032 (and $x1224 $x1341))) + (let (($x628 (and $x1032 $x531))) + (let (($x80 (and $x628 $x588))) + (let (($x1093 (and $x80 $x1219))) + (let (($x866 (and $x1093 $x887))) + (let (($x1287 (and $x866 $x825))) + (let (($x1226 (and $x1287 $x731))) + (let (($x11 (and $x1226 $x677))) + (let (($x184 (and $x11 $x477))) + (let (($x47 (and $x184 $x1307))) + (let (($x1002 (and $x47 $x240))) + (let (($x556 (and $x1002 $x849))) + (let (($x969 (and $x556 $x6))) + (let (($x896 (and $x969 $x1050))) + (let (($x1040 (and $x896 $x1194))) + (let (($x688 (and $x1040 $x895))) + (let (($x1332 (and $x688 $x968))) + (let (($x868 (and $x1332 $x825))) + (let (($x797 (and $x868 $x499))) + (let (($x61 (and $x797 $x167))) + (let (($x967 (and $x61 $x57))) + (let (($x937 (and $x967 $x806))) + (let (($x246 (and $x937 $x623))) + (let (($x24 (and $x246 $x277))) + (let (($x192 (and $x24 $x168))) + (let (($x400 (and $x192 $x513))) + (let (($x1111 (and $x400 $x938))) + (let (($x957 (and $x1111 $x524))) + (let (($x257 (and $x957 $x234))) + (let (($x144 (and $x257 $x1014))) + (let (($x402 (and $x144 $x1265))) + (let (($x657 (and $x402 $x567))) + (let (($x243 (and $x657 $x287))) + (let (($x79 (and $x243 $x599))) + (let (($x547 (and $x79 $x764))) + (let (($x705 (and $x547 $x271))) + (let (($x948 (and $x705 $x449))) + (let (($x273 (and $x948 $x995))) + (let (($x156 (and $x273 $x120))) + (let (($x1010 (and $x156 $x339))) + (let (($x908 (and $x1010 $x986))) + (let (($x1153 (and $x908 $x1081))) + (let (($x959 (and $x1153 $x1049))) + (let (($x710 (and $x959 $x653))) + (let (($x297 (and $x710 $x852))) + (let (($x161 (and $x297 $x682))) + (let (($x487 (and $x161 $x541))) + (let (($x516 (and $x551 $x487))) + (let (($x272 (and $x1081 $x516))) + (let (($x730 (= (select id.ma (bvadd ?x693 (_ bv0 32))) (_ bv7 8)))) + (let (($x1058 (= (select id.ma (bvadd ?x693 (_ bv0 32))) (_ bv5 8)))) + (let (($x1043 (= (select id.ma (bvadd ?x693 (_ bv0 32))) (_ bv4 8)))) + (let (($x260 (= (select id.ma (bvadd ?x693 (_ bv0 32))) (_ bv3 8)))) + (let (($x261 (= (select id.ma (bvadd ?x693 (_ bv0 32))) (_ bv2 8)))) + (let (($x942 (= (select id.ma (bvadd ?x834 (_ bv0 32))) (_ bv7 8)))) + (let (($x1035 (= (select id.ma (bvadd ?x834 (_ bv0 32))) (_ bv5 8)))) + (let (($x413 (= (select id.ma (bvadd ?x834 (_ bv0 32))) (_ bv4 8)))) + (let (($x1199 (= (select id.ma (bvadd ?x834 (_ bv0 32))) (_ bv3 8)))) + (let (($x864 (= (select id.ma (bvadd ?x834 (_ bv0 32))) (_ bv2 8)))) + (let (($x208 (= (select id.ma (bvadd ?x328 (_ bv0 32))) (_ bv7 8)))) + (let (($x388 (= (select id.ma (bvadd ?x328 (_ bv0 32))) (_ bv5 8)))) + (let (($x163 (= (select id.ma (bvadd ?x328 (_ bv0 32))) (_ bv4 8)))) + (let (($x1175 (= (select id.ma (bvadd ?x328 (_ bv0 32))) (_ bv3 8)))) + (let (($x36 (= (select id.ma (bvadd ?x328 (_ bv0 32))) (_ bv2 8)))) + (let (($x1154 (= (select id.ma (bvadd ?x222 (_ bv0 32))) (_ bv7 8)))) + (let (($x340 (= (select id.ma (bvadd ?x222 (_ bv0 32))) (_ bv5 8)))) + (let (($x1122 (= (select id.ma (bvadd ?x222 (_ bv0 32))) (_ bv4 8)))) + (let (($x865 (= (select id.ma (bvadd ?x222 (_ bv0 32))) (_ bv3 8)))) + (let (($x814 (= (select id.ma (bvadd ?x222 (_ bv0 32))) (_ bv2 8)))) + (let (($x134 (or (or (or (or $x814 $x865) $x1122) $x340) $x1154))) + (let (($x1159 (and $x134 (or (or (or (or $x36 $x1175) $x163) $x388) $x208)))) + (let (($x691 (and $x1159 (or (or (or (or $x864 $x1199) $x413) $x1035) $x942)))) + (let (($x1096 (and $x691 (or (or (or (or $x261 $x260) $x1043) $x1058) $x730)))) + (let (($x1180 (and (bvule ?x824 (bvsub (bvadd ?x824 (_ bv4 32)) (_ bv1 32))) $x1096))) + (let ((sel.id.ma.3 (select id.ma (bvadd (bvadd r1 r0x4) (_ bv3 32))))) + (let ((sel.id.ma.3.68 (or (= sel.id.ma.3 (_ bv6 8)) (= sel.id.ma.3 (_ bv8 8))))) + (let ((sel.id.ma.2 (select id.ma (bvadd (bvadd r1 r0x4) (_ bv2 32))))) + (let ((sel.id.ma.2.68 (or (= sel.id.ma.2 (_ bv6 8)) (= sel.id.ma.2 (_ bv8 8))))) + (let ((sel.id.ma.1 (select id.ma (bvadd (bvadd r1 r0x4) (_ bv1 32))))) + (let ((sel.id.ma.1.68 (or (= sel.id.ma.1 (_ bv6 8)) (= sel.id.ma.1 (_ bv8 8))))) + (let ((sel.id.ma.0 (select id.ma (bvadd (bvadd r1 r0x4) (_ bv0 32))))) + (let ((sel.id.ma.0.68 (or (= sel.id.ma.0 (_ bv6 8)) (= sel.id.ma.0 (_ bv8 8))))) + (let ((?x675 (bvadd r1 r0x4))) + (let ((id.ma.assert (and (bvule ?x675 (bvsub (bvadd ?x675 (_ bv4 32)) (_ bv1 32))) (and (and (and sel.id.ma.0.68 sel.id.ma.1.68) sel.id.ma.2.68) sel.id.ma.3.68)))) ; <-- assertion over id.ma + (let (($x1277 (bvule ?x1146 (bvsub (bvadd ?x1146 (_ bv4 32)) (_ bv1 32))))) + (let (($x408 (= $x1277 true))) + (let (($x702 (=> $x551 $x408))) + (let (($x760 (bvule ?x828 (bvsub (bvadd ?x828 (_ bv4 32)) (_ bv1 32))))) + (let (($x63 (= $x760 true))) + (let (($x879 (=> $x551 $x63))) + (let (($x1213 (and $x879 $x702))) + (let (($x1274 (and $x1213 id.ma.assert))) + (let (($x1069 (and $x1274 $x1180))) + (let (($x89 (and $x1069 $x272))) + (let (($x484 (=> $x89 false))) + (not $x484))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) +(check-sat) +(get-model) diff --git a/src/test/mod_factor.cpp b/src/test/mod_factor.cpp index 314537ca8d..0d94074f9c 100644 --- a/src/test/mod_factor.cpp +++ b/src/test/mod_factor.cpp @@ -4,6 +4,9 @@ Copyright (c) 2025 Microsoft Corporation #include "api/z3.h" #include "util/util.h" +#include +#include +#include #include // x mod 7 = 0 & (x*y) mod 7 != 0 should be unsat @@ -84,8 +87,52 @@ static void test_const_array_store_chain_unsat() { Z3_del_context(ctx); } +static std::string read_sibling_file(char const* current_file, char const* sibling) { + std::string path = current_file; + size_t pos = path.find_last_of("/\\"); + ENSURE(pos != std::string::npos); + path.resize(pos + 1); + path += sibling; + std::ifstream in(path); + if (!in.good()) + throw std::runtime_error("failed to open test file: " + path); + std::ostringstream out; + out << in.rdbuf(); + return out.str(); +} + +static void test_abv_model_roundtrip_issue_7132() { + Z3_config cfg = Z3_mk_config(); + Z3_context ctx = Z3_mk_context(cfg); + + std::string benchmark = read_sibling_file(__FILE__, "issue_7132.smt2"); + size_t tail = benchmark.rfind("(check-sat)"); + ENSURE(tail != std::string::npos); + benchmark.resize(tail); + benchmark += R"( +(check-sat) +(get-value ((select id.ma (bvadd r1 (bvmul #x00000004 r0))))) +(get-value ((select id.ma (bvadd r1 (bvmul #x00000004 r0) #x00000001)))) +(get-value ((select id.ma (bvadd r1 (bvmul #x00000004 r0) #x00000002)))) +(get-value ((select id.ma (bvadd r1 (bvmul #x00000004 r0) #x00000003)))) +)"; + + std::string resp = Z3_eval_smtlib2_string(ctx, benchmark.c_str()); + std::istringstream in(resp); + std::string line; + ENSURE(static_cast(std::getline(in, line))); + ENSURE(line == "sat"); + for (unsigned i = 0; i < 4; ++i) { + ENSURE(static_cast(std::getline(in, line))); + ENSURE(line.find("#x06") != std::string::npos || line.find("#x08") != std::string::npos); + } + Z3_del_config(cfg); + Z3_del_context(ctx); +} + void tst_mod_factor() { test_mod_factor_mod_path(); test_mod_factor_idiv_path(); test_const_array_store_chain_unsat(); + test_abv_model_roundtrip_issue_7132(); }