Apply to my task
arXiv:2609.05928 ★ 94 Sep 5, 2026

Contradiction Gate: a separate check-request that catches contradictions missed while solving the task

Key result

Discovery: an LLM catches 75-83% of contradictions in a problem's data — but only if you ask it to check the data, not solve the problem. The Contradiction Gate method lets you catch these hidden factual conflicts before a false answer reaches the user. The trick is that the second request switches the model out of calculation mode and into fact-checking mode, and that changes everything: without the switch, the model grabs one fact out of two conflicting ones and in 63-76% of cases confidently spits out a number as if the data were clean.

01

TL;DR

Contradiction Gate is a technique built from two separate requests to the same model: the first one solves the task, the second one checks the input data for contradictions. If the check finds a conflict, the first request's answer gets thrown out, and the model responds "I can't calculate this."

The main finding: an LLM can tell "data is missing" apart from "data contradicts itself" — and it behaves very differently in each case. If a fact is missing from the setup, the model almost always honestly refuses to answer. But if two facts in the setup contradict each other (say: "the spouses are filing jointly" and, one sentence later, "the spouses are filing separately"), the model doesn't notice. It grabs onto one of the two facts and confidently spits out a number — in 63-76% of cases, the exact same answer it would have given on clean, contradiction-free data. No signal that anything's off.

The fix is surprisingly simple: the same model, if asked not to solve but to verify the input data, catches 75-83% of these same contradictions. So the model can see them — it just isn't looking for them while it's busy calculating. The technique boils down to two steps: (1) solve the task as usual, (2) in a separate request, ask the model "are there any contradictions in the input facts," and if it says "yes," swap out the step-1 answer for a refusal.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

STEP 1 (request 1): Solve the task based on the data → a number OR "I can't answer"
STEP 2 (request 2, separate, same model): Check this same data for completeness
and internal consistency → label: "all good" / "missing data" / "contradiction found"
STEP 3 (logic on top): If STEP 2 = "contradiction found" →
      replace the STEP 1 answer with a refusal, regardless of what it said

Steps 1 and 2 are two separate requests (in the study, two separate API calls with the same context). In an ordinary chat, that's two messages or two separate chats with the same source data.

03

Applied Example

Task: You're a freelance project manager. A client sends you a brief for a website build. The brief contains a contradiction: at the start, the client writes "budget is $800, a simple one-page landing page," and at the end — "we also need a product catalog section with 200 items and a user account area." You ask ChatGPT to work out a quote, and the model will most likely just calculate the quote based on one version of the requirements, without noticing the conflict.

Prompt (request 1 — solving):

You are an experienced web development project manager. Here's a client brief:

"Budget is $800, need a simple one-page landing page.
Also need a product catalog section with 200 items and a user account area."

Estimate the approximate cost and timeline for this project based on this brief.
If there isn't enough data to calculate — write "cannot calculate."

Prompt (request 2 — verification, as a separate message or in a new chat):

Check this client brief for internal consistency:

"Budget is $800, need a simple one-page landing page.
Also need a product catalog section with 200 items and a user account area."

Are there any facts in this brief that contradict each other
(e.g., different scope of work, different budgets, different deadlines)?
Answer with one of three options:
1) "everything is consistent"
2) "missing data" — specify what's missing
3) "contradiction found" — name specifically which two facts conflict

Result: In the first request, the model will most likely silently calculate a quote — say, for a "simple landing page" — and never mention that a 200-item catalog and a user account area obviously don't fit that budget. In the second request, the model will most likely call out the conflict directly: "a simple one-page landing page" doesn't square with "a 200-item catalog and a user account area" at an $800 budget. Once you see that flag, you throw out the quote from the first request and go back to the client for clarification instead of handing over a confidently wrong number.

04

Why This Works

When the model solves a task, all its attention goes into the computation: it takes the facts in order and calculates, without cross-checking them against each other — much like a person absorbed in doing long division who doesn't notice the word problem states two different ages for the same character. The model simply doesn't spend "attention budget" cross-referencing facts, because the task is framed as "calculate this," not "check this."

But the model's strength is that it's genuinely good at spotting inconsistencies when explicitly asked to compare facts against each other rather than compute something. The instruction "check for contradictions" is a different task with a different focus of attention, and in that mode the model catches the conflict 75-83% of the time — almost regardless of how strong the model is at math.

The method exploits this gap: instead of improving the calculation itself, it adds a second look at the same data with a different task and uses that as a filter before handing the answer to the user.

Control levers: - Verification labels (all good / missing / contradiction) → expand these for your use case, e.g., add ambiguous wording - Wording of the verification question → the more specific it is (e.g., "compare the budget figures across different parts of the text"), the higher the chance of catching a conflict - What to do when the gate triggers → in the study this is a hard refusal, but you could swap that for "show both calculation scenarios" instead of a flat refusal

05

Prompt Template

REQUEST 1 (solving):
You are a {expert role}. Here's the input data:

"{data/brief/task description}"

{specific instruction — calculate/solve/draw a conclusion}.
If there isn't enough data to answer — write "cannot answer."

---

REQUEST 2 (verification, as a separate message):
Check this same input data for internal consistency:

"{same data/brief/task description}"

Are there any facts in it that contradict each other?
Answer with one of three options:
1) "everything is consistent"
2) "missing data" — specify exactly what's missing
3) "contradiction found" — name specifically which two facts conflict

---
If the answer to REQUEST 2 is "contradiction found," do not use the answer
from REQUEST 1. Instead, state that the data is contradictory
and specify exactly what needs to be clarified.

What to fill in: {expert role} — who the model is impersonating (accountant, lawyer, project manager), {data/brief/task description} — the source text with the facts, {specific instruction} — exactly what needs to be calculated or resolved.

🚀 Quick Start — paste into chat:

Here's a template for the "Contradiction Gate" technique — a two-step check
of data for contradictions before trusting the model's answer.
Adapt it to my task: {your task}.
Ask me questions to fill in the fields.

[paste template above]

The LLM will ask what kind of data you typically feed in and what type of contradictions tend to show up in it (numeric, categorical, temporal) — because the data type determines exactly how to phrase the verification question in the second request.

06

Limitations

⚠️ Extra cost: the method requires a second request to the model for every task — that's extra time and tokens, even if the amount is small.

⚠️ False positives: the verification request sometimes finds a "contradiction" where there isn't one, and throws out a correct answer. In the study, this cost up to 5 percentage points of accuracy on clean data.

⚠️ Not tested on every type of conflict: the method reliably proved itself on contradictions in categorical facts (status, category, yes/no). For numeric contradictions (two different values for the same amount), the researchers note the model tends to read these as a "clarification" or "update" rather than an outright conflict — the gate may perform worse here.

⚠️ Same model for both solving and verifying: if the model has a "blind spot," it might fail to catch the same type of error in both modes. Using different models for solving versus verifying hasn't been tested, but it's potentially more reliable.

07

How It Was Studied

The researchers took 91 tax cases from the well-known legal benchmark SARA (tax calculation under real U.S. tax code) and created two kinds of "corrupted" versions: some had a required figure removed (e.g., income), and others had a contradicting categorical statement inserted (e.g., "filing jointly" next to "filing separately"). They tested six recent models — GPT-5 mini, GPT-5.2, Claude Sonnet 4.6, Qwen3.7-Plus, Kimi K2.5, Gemini 2.5 Flash — running each three times for reliability.

Each model was asked either to solve the task (give a number or refuse) or, separately, to check the input data for contradictions. It turned out that when a fact was missing, models almost always honestly refused to answer. But with a contradiction present, the four most accurate models refused only 0-15% of the time and, in 63-76% of cases, simply produced an answer as if there were no conflict at all. Yet those same models, when asked to "check the data," caught the conflict 75-83% of the time.

An interesting detail: models with "chain of thought" (i.e., ones that "think" before answering) weren't any better at finding contradictions than models without that mode — meaning it's not about depth of reasoning, but about where the model directs its attention depending on whether the task is framed as "calculate this" versus "check this." That's exactly where Contradiction Gate comes from: a simple way to make the model take a second look at the data before you trust its first answer.

08

Resources

Solving versus Verifying: Catching Contradictions in Tax Reasoning Systems, Albert Sadowski, Jarosław A. Chudziak, Warsaw University of Technology. Dataset and code: publicly available on Zenodo (doi.org/10.5281/zenodo.22329077). Uses the SARA / LegalBench benchmark (Holzenberger et al., 2020; Guha et al., 2023).

Research digest

Key result

Discovery: an LLM catches 75-83% of contradictions in a problem's data — but only if you ask it to check the data, not solve the problem. The Contradiction Gate method lets you catch these hidden factual conflicts before a false answer reaches the user. The trick is that the second request switches the model out of calculation mode and into fact-checking mode, and that changes everything: without the switch, the model grabs one fact out of two conflicting ones and in 63-76% of cases confidently spits out a number as if the data were clean.

Principle

Don't improve the calculation itself — add a second look with a different focus of attention. First request: solve the problem as usual. Second request, separate: check the same data for consistency, without computing an answer. If the second request finds a contradiction, the first answer is discarded — the model responds with a refusal instead of returning a number derived from conflicting facts.

Why it works

While the model is calculating, all its attention goes into the arithmetic — it takes facts in order and never cross-checks them against each other. It's like doing long division without noticing that the prompt states a character's age twice, differently. But ask directly "compare these facts against each other" and the focus shifts — the model finds the conflict 75-83% of the time, almost equally well regardless of how strong it is at math. Calculating and verifying are two different tasks for the model, and mixing them into one request keeps it from seeing the obvious.

When to apply

Working with free-form text inputs where facts are stated in natural language — client briefs, tax filings, legal terms, technical specs → specifically where two different people could have written two different versions of the same fact in different parts of a document, especially after revisions. NOT suited for numeric contradictions (two different values for the same sum) — the model often reads that as a "clarification" rather than a conflict.

Mini recipe

1. Solve it as usual: send the problem in the first request, ask for a number or an explicit refusal if data is missing. 2. Check separately: send the same data in a second, separate request — not "calculate this," but "compare these facts against each other for contradictions." 3. Give the check three possible answers: everything's consistent / data is missing / there's a contradiction — this keeps the model from sliding into a vague "maybe." 4. Add a filter on top: if the check says "contradiction," discard the first request's answer, no matter how confident it looks.

Examples

[BAD]: `Calculate the estimate from this brief: budget $1,000, a simple one-page landing site, plus a catalog with 200 products and a user account system` [GOOD]: Request 1 — `Calculate the estimate from this brief. If there isn't enough data, write "cannot calculate"`. As a separate message, Request 2 — `Check this same brief for contradictions: name specifically which two facts conflict, if any`. The second request will honestly say: a budget for a simple landing page is incompatible with a 200-product catalog and a user account system — so you'll follow up with the client instead of sending a false estimate.

In plain words

Models are phenomenally blind to nonsense in their inputs. When you ask a model to "calculate the tax" or "estimate the budget," it dutifully flips into calculator mode and cranks out text. All its attention goes into the computation, so it flat-out ignores inconsistencies in the problem statement itself. For an LLM, the command to solve and the command to verify facts are two separate processes, and it simply can't run both at once inside a single request.

It's like a diligent bookkeeper carefully stacking up columns of numbers without ever noticing that the invoice header says February 30th and the client's name changes three times on the same page. The math checks out technically, but in practice you end up with total nonsense, because the source data contradicted itself from the start.

To fix this bug, researchers came up with the Contradiction Gate. The mechanics are simple: you split the task into two independent calls to the same model. The first agent computes the answer, while the second acts as a nitpicky auditor — hunting for logical conflicts in the input text. If the auditor finds an inconsistency, the first answer gets tossed straight in the trash, and the model honestly reports that this can't be calculated as given.

The trick was tested on gnarly tax law, but the principle is universal. The exact same problem shows up in client briefs, when someone asks for "a simple landing page for $800" and then casually tacks on a user login area and a 200-item product catalog at the end. Without a hard contradiction filter, the model will silently pick a random branch of the conflicting requirements and hand you a busted estimate.

Stop hoping the AI will magically catch the flaws in your prompt or spec on its own: split solving and verification into two separate steps. The Contradiction Gate method burns a few extra tokens, but it instantly filters out garbage before it does any damage. Either you set up automatic requirement auditing now, or you'll be manually cleaning up hallucinations and blown budgets later.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on Contradiction Gate: a separate check-request that catches contradictions missed while solving the task arXiv:2609.05928

Sign in to apply this study New accounts get 50 free credits.