Skip to main content

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:

  1. build and check the wheels (workflow_dispatch on that workflow);

  2. publish veripp-checker;

  3. only then add to veripp's pyproject.toml, as a real dependency rather than an extra:

    dependencies = ["veripp-checker>=0.1"]
    
  4. 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

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

veripp_checker-0.1.0-py3-none-manylinux_2_38_aarch64.whl (91.9 MB view details)

Uploaded Python 3manylinux: glibc 2.38+ ARM64

veripp_checker-0.1.0-py3-none-manylinux_2_17_x86_64.whl (58.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

veripp_checker-0.1.0-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file veripp_checker-0.1.0-py3-none-manylinux_2_38_aarch64.whl.

File metadata

File hashes

Hashes for veripp_checker-0.1.0-py3-none-manylinux_2_38_aarch64.whl
Algorithm Hash digest
SHA256 02ce0335d5fe00206ee941cadf0bbeb8bd34797f4fbd571a5a8c2e58be38a1d5
MD5 a8b69c880a014dd81e6a8f55b9455161
BLAKE2b-256 2712c9e5d61ab4abc11e261354ee9fcbe3893d90ed12a61d2f6c1986551b6468

See more details on using hashes here.

File details

Details for the file veripp_checker-0.1.0-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for veripp_checker-0.1.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5bb073fd9a80deee2158eb32d329065c46573ab072f1bb6f9b66009559264a96
MD5 dacb0042a6e210bd5a89004f1fd1061a
BLAKE2b-256 3486df3f2db89a63e3960c35ed853d602f254e0b3e0fbb464c18721e479f0218

See more details on using hashes here.

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

Hashes for veripp_checker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b7edc5116fc61097b160fd517bf961d989dab9b289d06017edc276315a12ce65
MD5 82c9d0d54e96f906d0a6cc284dfc0feb
BLAKE2b-256 fec2198ee61c5a752f38c8f8b836ad851451bc5b74d6c930ad473dfe4f080795

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

3 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page