1
Explain
correct only when explains why your tests passed: they used multiples of 16.2
Reproduce on the GPU (optional)
tfe.load_case). It runs your kernel on the GPU and compares the output with the spec’s float64 reference interpreter (tfe.spec_eval). --witness minimal uses the smallest witness instead (max abs diff: nan here).3
Fix
4
Re-verify the file
Reading each failure kind
COUNTEREXAMPLE: the kernel computes a different function
COUNTEREXAMPLE: the kernel computes a different function
The witness shows one output element where the kernel and the spec disagree. If Here the weight is applied as
correct only when reads never (fails for every tested value), the formula itself is wrong, not an edge case:w, but Qwen3.8’s spec says (1 + w). Run theformalera spec show <key> and compare the formula term by term.UNSAFE: out-of-bounds access or a race
UNSAFE: out-of-bounds access or a race
mask= on a load or store, or tiles that overlap. A write-write conflict is a race: which value survives depends on the GPU’s schedule.OVERFLOW: an index wraps or a float becomes infinite
OVERFLOW: an index wraps or a float becomes infinite
row * (2 * I) is computed in int32 and wraps for long prefills. Cast the program id first: tl.program_id(0).to(tl.int64). For float overflow, the usual causes are exp without subtracting the max, or a half-precision intermediate.VACUOUS: the assumptions cannot all hold
VACUOUS: the assumptions cannot all hold
Check
assume= and domain= together. For example, T % 16 == 0 with domain={"T": (1, 8)} leaves no valid T.UNANNOTATED: a kernel has no annotation
UNANNOTATED: a kernel has no annotation
Add
@tfe.implements(...), or move the file outside [policy] require_annotation.When the result is UNKNOWN
theformalera explain only covers failures. For UNKNOWN, read the detail and stuck_at fields of the JSON report:
- Rewrite the kernel in a pattern the engine proves (see Limitations).
theformalera lemma search --key <spec key>lists the patterns existing lemmas already cover. - Waive it with an owner and an expiry date (see Policy and waivers).
- Wait: the nightly run retries UNKNOWN results when new lemmas for their node appear.
