warrantlib
A column of PASS cannot say whether anything was decided. A grid sample over a
continuous range and an exhaustive enumeration over a declared finite set can both come
back clean. Only the second settled the question. warrantlib is a small vocabulary for
keeping that difference in a check suite's output instead of losing it there.
pip install warrantlib
Python 3.10 and up. The standard library is the only dependency.
Warrant
Warrant says how well a claim is warranted, by the prover class behind it.
| Prover | What it does | Label |
|---|---|---|
| 1 | pen-and-paper theorem, within stated hypotheses | PROVED |
| 2 | symbolic computation: closed-form identities, algebraic non-existence | PROVED |
| 3 · enumeration | exhaustive enumeration over a finite domain | PROVED, with a completeness certificate |
| 3 · validated | validated numerics over a compact domain | CERTIFIED |
| 3 · sample | sampling a continuum | CORROBORATED |
CERTIFIED sits between the other two. Validated numerics prove a universal over a
compact domain, and the proof carries the bound it was computed with. Borrowing PROVED
overclaims. Borrowing CORROBORATED throws the bound away.
An action sweep over a continuous range is a finite grid over an infinite domain, so it samples. A policy enumeration over a declared finite set enumerates. The warrant follows from which of those the check did, not from how clean the answer looked.
Outcome
Outcome says what a registered falsifier did. A falsifier does not pass. It fires or it
does not, and PASS is absent from the vocabulary rather than disambiguated by a column
beside it.
| Value | What happened |
|---|---|
NOT_TRIGGERED |
it ran, the condition did not obtain, the claim survives it |
FIRED |
the condition obtained. The claim is refuted, and that is the result |
NOT_RESOLVED |
it ran and the ordering is genuinely undetermined, because the two quantities' intervals overlap |
NOT_APPLICABLE |
void by construction, so it is evidence for nothing and is not a survivor |
NOT_RUN_HERE |
measured elsewhere, or not yet. The detail says where |
Collapsing the last three loses the survivor accounting, and burns the word a real tie
needs. The last two never ran, so they carry no warrant, and CheckReport enforces that.
The rest
Tier says what the check was measured against. EXACT against a closed form,
BOUNDED against a stated bar, COMPUTED where there is no bar to state. It cuts across
the other two rather than ranking them.
CheckReport is what a check emits. Frozen, because editing a report after the check ran
is editing the finding. It refuses PROVED with nothing behind it.
Evidence comes in two kinds, one per decisive prover. CompletenessCertificate backs an
exhaustive enumeration, recording the domain it covered against the count it visited.
SymbolicReduction backs a theorem or a symbolic identity, and names where the symbolic
setup was checked by hand against the analytic problem it stands for. A CAS establishes
that one expression equals another. Whether those are the right expressions is a human
obligation, and this is where it is discharged rather than assumed.
check_summary prints a run as counts per (warrant, outcome).
Provenance
Evidence says a claim was decided. It does not say when the bar was set, and a bar chosen
after the number is visible decides nothing. Provenance is the pointer a reviewer
follows: the ref where the prediction or the derivation was registered, the ref whose
tree produced the number, and one line saying what they will find at the first.
A ref is a git commit SHA, an http(s) URL or a DOI. A path, a branch, a tag and HEAD
are refused, because each resolves to a different tree every time it is read. A PROVED
report requires one, on the same terms as it requires evidence.
Where the two refs name one commit, the render says the ordering is not established by history. That is not a failure. It is what happens whenever a check and the derivation behind it land together, and the marker keeps it from reading as something a reviewer could verify.
The type compares refs. It cannot order them, so a registration written after the fact
still renders without a marker. That is a git merge-base --is-ancestor away, which is
why the refs are refs.
Use
from warrantlib import (
CheckReport, Outcome, Provenance, SymbolicReduction, Tier, Warrant, check_summary,
)
report = CheckReport(
name="second gap coefficient",
warrant=Warrant.PROVED,
outcome=Outcome.NOT_TRIGGERED,
tier=Tier.EXACT,
detail="the CAS reduces the integral to the quoted constant",
evidence=(
SymbolicReduction(
claim="the second gap coefficient equals the quoted constant",
correspondence="hand derivation, section 3",
assumptions=("the expansion is formal, not convergent",),
),
),
provenance=(
Provenance(
registered_at="a76cf1b",
measured_at="9baaa22",
registered="the coefficient's closed form, registered 2026-08-07",
),
),
)
print(check_summary([report]))
1 registered, 1 tested here, none fired
PROVED NOT TRIGGERED 1
Registering four falsifiers and testing two is a different claim from testing four, and one number cannot carry both. The header separates them.
Where it comes from
warrantlib was factored out of cpomdp, where it labels a research programme's falsification battery. It is developed in that repository and released separately. The API reference is at cpomdp.inferogenesis.com/api/warrant.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file warrantlib-0.2.0.tar.gz.
File metadata
- Download URL: warrantlib-0.2.0.tar.gz
- Upload date:
- Size: 12.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c59bb07962cc360f163a38e93fe3c7aeba7159a3fab0d56fd5ed0e77460238fe
|
|
| MD5 |
5c06515c670ee86891ca6a68636d5ad5
|
|
| BLAKE2b-256 |
9b67797cfa59468fd5ad8bec79bd8511a9ddbed0079ce5659a4746001ef5438b
|
Provenance
The following attestation bundles were made for warrantlib-0.2.0.tar.gz:
Publisher:
publish.yml on inferogenesis/cpomdp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
warrantlib-0.2.0.tar.gz -
Subject digest:
c59bb07962cc360f163a38e93fe3c7aeba7159a3fab0d56fd5ed0e77460238fe - Sigstore transparency entry: 2537500818
- Sigstore integration time:
-
Permalink:
inferogenesis/cpomdp@e5a3d9aef731a517e6606cc313d1f21c72a9760a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/inferogenesis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e5a3d9aef731a517e6606cc313d1f21c72a9760a -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file warrantlib-0.2.0-py3-none-any.whl.
File metadata
- Download URL: warrantlib-0.2.0-py3-none-any.whl
- Upload date:
- Size: 13.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fefc8861795021e8c7f9eef056797c1b73034210a570f10dddf66d4f24dc9e3
|
|
| MD5 |
79e94a94a0993981ba07b82d6f2dc390
|
|
| BLAKE2b-256 |
8cd70e691d9ea08b817fac220aab10b49b933c2b3e9beed2d05680b36f66a837
|
Provenance
The following attestation bundles were made for warrantlib-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on inferogenesis/cpomdp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
warrantlib-0.2.0-py3-none-any.whl -
Subject digest:
7fefc8861795021e8c7f9eef056797c1b73034210a570f10dddf66d4f24dc9e3 - Sigstore transparency entry: 2537500888
- Sigstore integration time:
-
Permalink:
inferogenesis/cpomdp@e5a3d9aef731a517e6606cc313d1f21c72a9760a -
Branch / Tag:
refs/heads/main - Owner: https://github.com/inferogenesis
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e5a3d9aef731a517e6606cc313d1f21c72a9760a -
Trigger Event:
workflow_dispatch
-
Statement type: