Claimcheck reports each claim as confirmed, disputed, verify-failed, or error. Learn to interpret verdicts, discrepancy details, and JSON output format.
Use this file to discover all available pages before exploring further.
Every requirement-lemma pair that claimcheck audits produces a result with a status and a set of supporting fields that explain the verdict. By default the report is Markdown, suitable for reading in a terminal or pasting into a pull request. Pass --json to get a machine-readable object suitable for CI pipelines, dashboards, or downstream tooling. This page explains what each status means, what the Markdown report looks like, the full JSON schema, and the nested sub-objects that carry informalization and comparison detail.
The default report groups results into sections: Confirmed Mappings, Disputed Mappings, Verification Failures, and Errors. A summary at the top shows counts for each category.Confirmed mapping example:
# Audit Report: counter## Summary- **Mappings audited:** 1- **Confirmed:** 1## Confirmed Mappings**The counter value is always non-negative**- Lemma: `CounterNonNegative`- Back-translation: Given a counter state satisfying Inv, the counter value is at least zero.```dafnylemma CounterNonNegative(m: int) requires Inv(m) ensures m >= 0{}
Disputed mapping example:
## Disputed Mappings**The counter can never overflow**- Lemma: `CounterBounded`- Discrepancy: The lemma only ensures the value is non-negative, not that it is bounded above.- Weakening: narrowed-scope- Back-translation: Given Inv holds, the counter value is greater than or equal to zero.```dafnylemma CounterBounded(m: int) requires Inv(m) ensures m >= 0{}
A footer line reports token usage when the Anthropic API was called: *API usage: 1240 input tokens, 312 output tokens*.
The result of comparing the back-translation against the requirement (two-pass mode). In single-prompt mode this object also contains a nested claimcheck field with richer verdict detail. Absent on error results.
true if the ensures clause literally restates a requires clause without unfolding any definitions. Note: extracting a consequence from an invariant (e.g. requires Inv(m); ensures m >= 0) is not considered vacuous.
Any requires clauses that restrict when the property holds in a way the natural language does not mention. "None" if there are no surprising restrictions.
{ "domain": "counter", "timestamp": "2024-11-01T10:23:45.123Z", "results": [ { "requirement": "The counter value is always non-negative", "lemmaName": "CounterNonNegative", "status": "confirmed", "dafnyCode": "lemma CounterNonNegative(m: int)\n requires Inv(m)\n ensures m >= 0\n{}", "informalization": { "naturalLanguage": "Given a counter state satisfying the invariant, the counter value is at least zero.", "preconditions": "The counter state m satisfies the invariant Inv.", "postcondition": "The counter value m is greater than or equal to zero.", "scope": "Any single counter state that satisfies the invariant.", "strength": "moderate", "confidence": 0.97 }, "comparison": { "requirementIndex": 0, "lemmaName": "CounterNonNegative", "match": true, "discrepancy": "", "weakeningType": "none", "explanation": "The back-translation faithfully captures non-negativity under the invariant, matching the requirement." } } ], "tokenUsage": { "input": 1240, "output": 312 }}
{ "domain": "counter", "timestamp": "2024-11-01T10:24:10.456Z", "results": [ { "requirement": "The counter can never overflow a 32-bit integer", "lemmaName": "CounterBounded", "status": "disputed", "dafnyCode": "lemma CounterBounded(m: int)\n requires Inv(m)\n ensures m >= 0\n{}", "informalization": { "naturalLanguage": "Given a counter state satisfying the invariant, the counter value is at least zero.", "preconditions": "The counter state m satisfies the invariant Inv.", "postcondition": "The counter value m is greater than or equal to zero.", "scope": "Any single counter state that satisfies the invariant.", "strength": "weak", "confidence": 0.95 }, "comparison": { "requirementIndex": 0, "lemmaName": "CounterBounded", "match": false, "discrepancy": "The lemma only proves non-negativity, not that the value is bounded above by 2^31 - 1.", "weakeningType": "narrowed-scope", "explanation": "The requirement states an upper bound; the lemma only establishes a lower bound." }, "discrepancy": "The lemma only proves non-negativity, not that the value is bounded above by 2^31 - 1.", "weakeningType": "narrowed-scope" } ], "tokenUsage": { "input": 1380, "output": 298 }}
Use --json combined with jq to filter results in CI. For example, to fail a build when any disputed results exist: