Can a language model follow a specified reading of negation β instead of falling back on its own default?
solver-certified contamination-free (fresh hidden set) JOINT accuracy Β· GitHub Β· Inputs Β· Submit
β¬οΈ Download all data + submit guide (one zip) train Β· validation Β· test (hidden-set inputs) Β· README with submit steps
The word "not" doesn't mean one thing. In law, regulation, and medicine, the intended meaning depends on the reading in force: open- vs closed-world, two- vs three-valued, credulous vs skeptical. NAF-Bench gives a model a small logic program and tells it which reading to use, then checks whether it applies that reading rather than its gut default. Every instance is generated and certified by solvers (SWI-Prolog, a well-founded solver, and clingo), so the answer key is ground truth, and the test set is regenerated with fresh seeds to stay contamination-free.
Each program is asked under four specified readings:
Answers are A (definitely yes), B (definitely no), or C (cannot be
determined). The primary metric is JOINT accuracy: a program counts only if all four readings
are correct β this strips the lucky/vacuous coincidences a per-prompt average would reward.
NAF-Bench is generated by one solver-certified pipeline; it has grown through versions. The guess-baseline is what a program-blind constant (best fixed answer per reading) scores β a subtask is only meaningful when models beat it, so this column is the honest test of a version's validity.
| Subtask | What it varies | Programs | Guess-baseline | Frontier (o4-mini) | Status |
|---|---|---|---|---|---|
v1 | cycle length + number of independent cycles | 136 | 76.5% | β | diagnostic (largely guessable) |
v2 | combinatorial (2βΏ stable models) | 144 | 100.0% | 83.3% β΅ below baseline | superseded (a constant wins) |
hard_v3 | mixed certified signatures + bounded 3-SAT search (cnf_n8) | 77 | 22.1% | 68.8% β΅ beats baseline | active β the live competition |
The Frontier column is the tell: on v2 even o4-mini (83.3%) scores
below the 100% constant β a frontier model loses to a program-blind guess, so the subtask measures
nothing. On hard_v3 o4-mini (68.8%) clearly clears the 22.1% baseline, so the subtask is real.
That is why hard_v3 is the scored competition; v1/v2 are kept for
provenance. (Open models track the same story: 5.8β12.5% on the paper's base set, and no better than the
guess on v1/v2.)
hard_v3 is a single set of 77 programs (385 prompts). It keeps the small
3-SAT search tier cnf_n8 but excludes the prohibitively-large instances
cnf_n14/cnf_n22 (search spaces of 2ΒΉβ΄β2Β²Β²): those are not informative β every model
just fails or runs out of context β so dropping them makes the cnf condition sharper.
Families: decided/loopy (read the program, resolve a negation cycle),
parity/coupled (combinatorial bookkeeping), cnf_n8 (genuine but bounded
3-SAT search), plus a propagation-decidable control.
hard_v3 (hidden test set β auto-scored on submission)Ranked by JOINT % only. The trace-sound % column is auxiliary information, not a ranking criterion: if you submit a trace, we check whether its reasoning commits to the certified query verdict. The check is regex-based and imperfect β a rough approximation of soundness, not a verified proof audit. β = answer-only submission. For closed frontier models (o4-mini, sonnet-5) the trace is the model's visible output only (hidden chain-of-thought is not returned), so their trace-sound can understate and is not directly comparable to the open models.
hard_v3 (public dev set)These are baselines, not a ceiling β initial reference points we measured on the
public hard_v3 set (o4-mini is a closed frontier reference; the rest are open-weight).
Beat them by submitting to the live competition above.
| # | Model | open | JOINT % |
|---|---|---|---|
| 1 | o4-mini (frontier ref) | β | 68.8 |
| 2 | DeepSeek-V4-Flash | β | 62.3 |
| 3 | Gemma4-31B | β | 58.4 |
| 4 | Qwen3.5-35B | β | 54.5 |
| 5 | Qwen2.5-Coder-32B | β | 39.0 |
| 6 | DeepSeek-R1-32B | β | 33.8 |
| 7 | Qwen3.6 * | β | 1.3 |
| 8 | Llama3-8B | β | 1.3 |
Values are JOINT accuracy (%) on the public dev set. Decoding: temperature 0 for all, with a per-model token budget large enough to conclude.
* Qwen3.6's 1.3 is a non-termination result, not a reasoning score: even at its recommended
temperature with a 16k budget it fails to finish ~50% of readings (per-reading it concludes ~49%).
On loopy, the open models V4-Flash (19/20) and Gemma4 (16/20) actually beat o4-mini (11/20);
o4-mini's edge is the search family cnf_n8.
Everything flows from one open-source generator, so data is unlimited and contamination-free β the test gold is the only thing held back. Can't reach GitHub (blocked in some regions)? The dataset is also fully on Hugging Face above, or email bqmbill714@gmail.com and we'll send it.
train.jsonl)hard_v3 (+ v1/v2) with labels β develop & self-check.Run your model on the public inputs, produce a JSONL of {"id": ..., "prediction": "A|B|C"},
add it as submissions/<team>__<subtask>.jsonl and open a PR on
GitHub. A GitHub Action
scores it against the hidden gold (never public) and updates this board automatically.