Welcome to aria’s Documentation!

Introduction

Aria is a comprehensive toolkit for automated reasoning and constraint solving. It provides implementations of various algorithms and tools for:

  • Abductive Inference (aria/abduction) - Generate explanations for observations

  • AllSMT (aria/allsmt) - Enumerate all satisfying models

  • Backbone Computation (aria/backbone) - Extract forced assignments

  • UNSAT Core Extraction (aria/unsat_core) - Identify minimal unsatisfiable subsets

  • Quantifier Reasoning (aria/quant) - Handle exists-forall and quantified formulas

  • Quantifier Elimination (aria/quant/qe) - Eliminate quantifiers from formulas

  • Solution Sampling (aria/sampling) - Generate diverse solutions

  • Model Counting (aria/counting) - Count satisfying assignments

  • Optimization Modulo Theory (aria/optimization) - Solve optimization problems

  • Interpolant Generation (aria/interpolant) - Generate Craig interpolants

  • Symbolic Abstraction (aria/symabs) - Abstract state spaces

  • Predicate Abstraction (aria/symabs/predicate_abstraction) - Abstract with predicates

  • Monadic Abstraction (aria/monabs) - Monadic predicate abstraction

  • Knowledge Compilation (aria/bool/knowledge_compiler) - Compile to tractable forms

  • MaxSAT Solving (aria/bool/maxsat) - Solve maximum satisfiability problems

  • QBF Solving - Quantified Boolean formula solving

  • Finite Field Solving (aria/smt/ff) - SMT for Galois field constraints

  • Interactive Theorem Proving (aria/itp) - Proof assistant framework

  • Automata Operations (aria/automata) - Finite automata algorithms

  • Program Synthesis (aria/synthesis) - Synthesize programs from specifications

  • Context-Free Language Reachability (aria/cfl) - CFL solving algorithms

  • Unification (aria/unification) - Term unification algorithms

  • Translator (aria/translator) - Translate between different formats

  • EFMC Verification (aria/efmc) - Program verification with invariant generation, termination analysis, and more

We welcome any feedback, issues, or suggestions for improvement. Please feel free to open an issue in our repository.

Installing and Using Aria

Install aria from source

git clone https://github.com/ZJU-PL/aria
virtualenv --python=python3 venv
source venv/bin/activate
cd aria
bash setup_local_env.sh
pip install -e .

The setup script will: - Create a Python virtual environment if it doesn’t exist - Activate the virtual environment and install the package and its dependencies (from pyproject.toml) - Download required solver binaries (CVC5, MathSAT, z3) - Run unit tests if available

Quick Start

from aria import *

# Example: Check satisfiability
formula = Bool(True)  # Simple tautology
result = smt_solve(formula)
print(f"Formula is {'satisfiable' if result else 'unsatisfiable'}")

Documentation Map

  • getting-started: tutorials, quick reference, and topic overviews

  • logic-and-solving: core logic APIs, solver stacks, SRK, and reusable reasoning infrastructure

  • proofs and explanations: abduction, interpolation, and interactive theorem proving

  • quantified-reasoning: quantified solving, quantifier elimination, and instantiation techniques

  • abstraction / verification: program-analysis engines and verification workflows

  • counting-probability: model counting, sampling, and probabilistic reasoning

Contents: