Litmus 🧪

Your kernel test is green. That is not the same as your kernel being correct. On this corpus, 88% of planted bugs pass the test everyone runs — fixed power-of-two shapes, torch.rand(), allclose(rtol=1e-2). Litmus catches 100% of them with 0% false positives.

interval + affine error bounds symbolic OOB / race checks targeted falsification no GPU

Everything below runs in this tab, under Pyodide — the bound engine, the Triton parser, the constraint solver and the CPU kernel surrogate are pure Python over numpy. Source · Corpus dataset

Loading Python runtime… (first visit fetches ~10 MB)

1 · Check a kernel

The safety analysis and shape-space derivation read the source only — no execution, no GPU. Pick a spec to also get a sound error bound. Annotate buffer sizes with # litmus: buffer x_ptr = M*N for a checked out-of-bounds result.


2 · Corpus demo

Full pipeline on one of the 25 labelled kernels: bound → safety → targeted falsification, with the counterexample delta-debugged before it is shown.


Benchmark

standard-test pass rate versus the truth
metric(A) standard(B) fuzzing+(C) Litmus
bug detection rate12%62%100%
detection, numerically observable bugs only14%71%100%
false positives on correct kernels0%0%0%
wall clock, whole corpus0.5s1.0s40.9s

Support map and limits

Verification is always relative to a declared domain; outside it nothing is claimed. Without z3 the constraint backend is a bounded search, so SAT (a witness) is real while UNSAT only means "no counterexample inside the box" — and results say which. Where no bound exists, falsification runs against a heuristic tolerance, labelled as such. ACCEPT is not a proof of correctness. Litmus does not generate kernels.