╔════════════════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ █████╗ ██╗ ██╗███████╗███████╗███╗ ██╗████████╗ ║
║ ██╔══██╗╚██╗██╔╝██╔════╝██╔════╝████╗ ██║╚══██╔══╝ ║
║ ███████║ ╚███╔╝ ███████╗█████╗ ██╔██╗ ██║ ██║ ║
║ ██╔══██║ ██╔██╗ ╚════██║██╔══╝ ██║╚██╗██║ ██║ ║
║ ██║ ██║██╔╝ ██╗███████║███████╗██║ ╚████║ ██║ ║
║ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═══╝ ╚═╝ ║
║ ║
║ what a formal library assumes ║
║ ║
╚════════════════════════════════════════════════════════════════════════════════════════════╝
An accent is a dependence on something local that travels with whoever carries it. An inherited axiom is the same thing: a library speaks in the assumptions of wherever it came from, and most of what it carries it never chose.
Rocq, Agda and Isabelle each let a development assert something without proving
it, and each records the dependency edges that carry the assertion outward.
axsent reads those declarations and those edges from source text, with no
proof assistant installed and nothing built.
pip install axsent
axsent rocq path/to/stdlib/theories
axsent agda path/to/agda-stdlib/src
axsent isabelle path/to/afp/thys
Why counts should not be totalled
A library declares two kinds of assumption and both use the same keyword.
Mathematical — excluded middle, choice, functional extensionality, proof irrelevance. Claims about mathematics. A result depending on one is classical rather than constructive.
Interface — that native 63-bit arithmetic behaves as specified, that a mutable array returns what was written to it, that a foreign function returns what its type says. Claims about the machine and the runtime. A result depending on one is not thereby classical.
Rocq's Corelib declares five times as many axioms as the Rocq standard library and makes no mathematical assumption at all: all 73 specify primitive machine arithmetic, native arrays, floats and strings. Every one of the 16 postulating modules in the Agda standard library is a foreign-function or operating-system interface. A single figure hides which of the two you are looking at.
What it is not
It does not read Lean or Metamath. gonzalgo and mmforge do that. This is a separate instrument for separate systems, not an extension of either.
It measures at file or module granularity, not per theorem. A file requiring a
module that declares an axiom inherits it whether or not any theorem in that
file uses it, so every figure is an upper bound on inheritance, not a
statement about use. Print Assumptions and #print axioms answer the
per-theorem question and need a built library. This needs only the source,
which is what makes a cross-system census tractable.
Reading the source correctly
Three exclusions do real work, and each was derived from a failure rather than anticipated.
Rocq Parameter and Hypothesis are not axioms inside a Module Type or
Section — they are discharged. The Rocq standard library has 389 Parameter
and 125 Hypothesis against 14 top-level Axiom; counting the former reports
a library assuming five hundred things it does not.
Agda postulate must open a block. postulate[_|->_] is a legal function
name, and a word-boundary match counts it as an assumption.
Isabelle comments nest. (* outer (* inner *) still outer *) is one
comment; a non-greedy match closes it at the inner terminator and returns the
rest as live code. On the Archive of Formal Proofs that single difference is 33
reported sorry occurrences against 3.
The check that makes it trustworthy
Agda's {-# OPTIONS --safe #-} is compiler-enforced and transitive: a safe
module may not postulate and may not import a module that is not itself safe.
The compiler has already computed the transitive answer, so axsent agda
ends by checking itself against it. Any module reported as both --safe and
reaching a postulate is a bug in this tool, not a finding about Agda.
Nothing in Rocq, Isabelle, Lean or Metamath offers a comparable ground truth. Run the Agda census first for that reason alone.
Citation
The method and the five-library census it produced:
Gonzalez, V. 2026. Interface Assumptions Are Not Mathematical Assumptions: An Axiom Census of Five Libraries Across Four Proof Systems. Zenodo. https://doi.org/10.5281/zenodo.22148932
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 axsent-0.1.0.tar.gz.
File metadata
- Download URL: axsent-0.1.0.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bb50e16a40713db722535b72f87d5eb482ebf6c6a389ae29b09efda6aa2404c
|
|
| MD5 |
1831f50c5596cb4b5935f21feedaae23
|
|
| BLAKE2b-256 |
f4e66f17175d77778e2762064e3372dcb35d7e758894586c1c68540e3254f078
|
File details
Details for the file axsent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: axsent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9aa714c2f1a20bbb5b03885408003cd67ab4c55e51dedca7dc3461e126018c0a
|
|
| MD5 |
39e08a7253d5856b32375a45db56c1a3
|
|
| BLAKE2b-256 |
0da7749a163948d2db6f756a8fe681bb7ac3fbe8b79003c23b79192e7dd8db66
|