A library for various automated reasoning tasks including SMT solving, model counting, and symbolic computation.
Project description
ARIA
ARIA (Automated Reasoning Infrastructure & Applications) is a Python toolkit and research playground for automated reasoning. It collects libraries, CLI tools, and research prototypes for SAT/SMT solving, quantified reasoning, theorem proving, program verification, symbolic computation, and benchmark-driven experimentation.
Highlights
- SAT/SMT, MaxSAT, model counting, optimization, and theorem-proving utilities under a single repository
- Quantified-reasoning tooling in
aria.quant, including EFSMT solvers, quantifier-elimination experiments, CHC tooling, and multiple research artifacts - Program-analysis and verification components in
aria.efmc,aria.symabs,aria.scsat, and related packages - Benchmark corpora, scripts, and reproducible research infrastructure for solver-oriented experimentation
Quantified Reasoning and PolyQEnt Context
The aria.quant area contains several quantified-reasoning prototypes and solver experiments. For the polynomial quantified reasoning line related to PolyQEnt: A Polynomial Quantified Entailment Solver, see aria/quant/polyhorn/README.md.
Local Development Environment
Run the following command to setup the local development environment.
bash setup_local_env.sh
The script will use uv if installed (recommended, much faster); otherwise it will prompt for venv or Conda. It will
- Create a Python virtual environment if it doesn't exist
- Install the package and its dependencies (from pyproject.toml)
- Run unit tests if available
TBD:
- Test the scripts on different platforms, editors/IDEs, etc.
Install the Library Locally
With uv (recommended; install from https://docs.astral.sh/uv/):
uv venv && source .venv/bin/activate # or on Windows: .venv\Scripts\activate
uv pip install -e .
With pip (dependencies are read from pyproject.toml):
pip install -e .
Then you can use the CLI tools and the Python API in your own code. Available CLI commands (also as aria-<name> after install): aria-fmldoc, aria-mc, aria-pyomt, aria-efsmt, aria-efmc-efsmt, aria-maxsat, aria-unsat-core, aria-allsmt, aria-smt-server, aria-efmc, aria-polyhorn, aria-pypmt. See aria/cli/README.md for usage and options.
Install from PyPI
pip install aria
Or install the latest development version:
pip install git+https://github.com/ZJU-PL/aria.git
Release the Repo to PyPI
See PyPI Release Guide.
Contributing
Contributions are welcome. Please refer to the repository for detailed instructions on how to contribute.
aria/
├── aria/ # Main library code
├── benchmarks/ # Benchmark files and test cases
├── bin_solvers/ # Binary solver executables
├── docs/ # Documentation files
├── scripts/ # Utility scripts
├── examples/ # A few applications
└── pyproject.toml # Package config, dependencies, and tool settings
For Summer Research, Final Year Project Topics, please refer to
docs/topics.rst or TODO.md.
Documentation
We release the docs here: https://zju-pl.github.io/aria
Another doc generated by DeepWiki
For quantified-reasoning-specific notes, see aria/quant/README.md.
Publications
Here are some of publications related to ARIA.
- ATVA 2025 / arXiv 2024: PolyQEnt: A Polynomial Quantified Entailment Solver. Krishnendu Chatterjee, Amir Kafshdar Goharshady, Ehsan Kafshdar Goharshady, Mehrdad Karrabi, Milad Saadat, Maximilian Seeliger, and Đorđe Žikelić.
- ICSE 2024: Enabling Runtime Verification of Causal Discovery Algorithms with Automated Conditional Independence Reasoning. Pingchuan Ma, Zhenlan Ji, Peisen Yao, Shuai Wang, and Kui Ren.
- ICSE 2023: Verifying Data Constraint Equivalence in FinTech Systems. Chengpeng Wang, Gang Fan, Peisen Yao, Fuxiong Pan, and Charles Zhang.
- OOPSLA 2021: Program Analysis via Efficient Symbolic Abstraction. Peisen Yao, Qingkai Shi, Heqing Huang, and Charles Zhang.
Honors & Awards
Related Work
Contributors
Primary contributors to this project:
- rainoftime / cutelimination
- JasonJ2021
- ZelinMa557
- Harrywwq
- little-d1d1
- ljcppp
- GooduckZ
- Zahrinas
Project details
Release history Release notifications | RSS feed
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 pyaria-0.2.0.tar.gz.
File metadata
- Download URL: pyaria-0.2.0.tar.gz
- Upload date:
- Size: 2.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
192f3ac6ff2b64cd21d42280f2a444a026e3811f327d819fa94fef54688d65f5
|
|
| MD5 |
2424ee6a439c26210689e396b0053d7b
|
|
| BLAKE2b-256 |
3ab1f04dfb651f488397baf8f1f3d6bcb032cc4280d8d8dfe2416cabe0b4157c
|
File details
Details for the file pyaria-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pyaria-0.2.0-py3-none-any.whl
- Upload date:
- Size: 3.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3b806e26d18102fc32bf667ab93489e32cec7e92897d1c70aa34e36f7f235473
|
|
| MD5 |
27df3703e21625105cca145bf2d813d5
|
|
| BLAKE2b-256 |
4b6e22b9f508b291960170db624b6e4fb31e3368043ab2c0141d8cae67d66a1f
|