veripp-checker
The ESBMC model checker, packaged as a wheel so that
pip install veripp
is the entire installation of veripp.
This is a slim build: Z3 only. Boolector, Bitwuzla, MathSAT and Yices are
not included. That keeps the wheel small, and it keeps redistribution simple —
ESBMC's own COPYING notes that MathSAT is academic/non-commercial and Yices
is personal-use or GPL3, while Z3 is MIT. ESBMC's own code is Apache-2.0 and
the CBMC base it derives from is BSD-4-clause. All of those notices ship
inside the wheel.
Every wheel is built only from a checker that passes veripp's soundness probes: known-failing programs that the checker must reject. A build that misses a planted bug is never published, because every result obtained from it would be a false proof.
import veripp_checker
veripp_checker.esbmc_path() # -> "/.../site-packages/veripp_checker/bin/esbmc"
Publishing
The wheels are built by .github/workflows/checker-wheels.yml, which keeps a
wheel only if a clean container that pip installs it passes veripp doctor.
Nothing is uploaded automatically.
Order matters. Until veripp-checker exists on an index, veripp must not
depend on it: a dependency naming an unresolvable package breaks
uv sync and pip install veripp alike. So:
-
build and check the wheels (
workflow_dispatchon that workflow); -
publish
veripp-checker; -
only then add to veripp's
pyproject.toml, as a real dependency rather than an extra:dependencies = ["veripp-checker>=0.1"]
-
release veripp.
Publish the py3-none-any wheel together with the platform wheels, never
after. pip ranks a platform wheel above any, so the fallback is chosen only
where nothing else fits — and it is the reason the dependency can be
unconditional. Without it, pip install veripp would fail outright on every
platform no checker is built for.
Building one locally
./checker/build_linux_payload.sh ghcr.io/gfabbretti8/veripp payload
curl -fsSL -o COPYING.esbmc \
https://raw.githubusercontent.com/esbmc/esbmc/master/COPYING
python3 checker/build_wheel.py --payload payload \
--plat manylinux_2_38_aarch64 --license COPYING.esbmc --outdir dist
Measured on arm64: a 16 MB binary plus 214 MB of LLVM, Clang and Z3, which compresses to an 87 MB wheel — under PyPI's 100 MB per-file default, but not by much. The weight is Clang, which ESBMC uses as its C/C++ frontend, not ESBMC itself.
macOS and Windows are not built yet. macOS should be the easiest of the three:
its release zip is 10 MB and is non-relocatable only because it links
Homebrew's dylibs, which is exactly what delocate exists to fix.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
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 veripp_checker-0.1.0-py3-none-manylinux_2_38_aarch64.whl.
File metadata
- Download URL: veripp_checker-0.1.0-py3-none-manylinux_2_38_aarch64.whl
- Upload date:
- Size: 91.9 MB
- Tags: Python 3, manylinux: glibc 2.38+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
02ce0335d5fe00206ee941cadf0bbeb8bd34797f4fbd571a5a8c2e58be38a1d5
|
|
| MD5 |
a8b69c880a014dd81e6a8f55b9455161
|
|
| BLAKE2b-256 |
2712c9e5d61ab4abc11e261354ee9fcbe3893d90ed12a61d2f6c1986551b6468
|
File details
Details for the file veripp_checker-0.1.0-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: veripp_checker-0.1.0-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 58.2 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5bb073fd9a80deee2158eb32d329065c46573ab072f1bb6f9b66009559264a96
|
|
| MD5 |
dacb0042a6e210bd5a89004f1fd1061a
|
|
| BLAKE2b-256 |
3486df3f2db89a63e3960c35ed853d602f254e0b3e0fbb464c18721e479f0218
|
File details
Details for the file veripp_checker-0.1.0-py3-none-any.whl.
File metadata
- Download URL: veripp_checker-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.0 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 |
b7edc5116fc61097b160fd517bf961d989dab9b289d06017edc276315a12ce65
|
|
| MD5 |
82c9d0d54e96f906d0a6cc284dfc0feb
|
|
| BLAKE2b-256 |
fec2198ee61c5a752f38c8f8b836ad851451bc5b74d6c930ad473dfe4f080795
|