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 observationsAllSMT (
aria/allsmt) - Enumerate all satisfying modelsBackbone Computation (
aria/backbone) - Extract forced assignmentsUNSAT Core Extraction (
aria/unsat_core) - Identify minimal unsatisfiable subsetsQuantifier Reasoning (
aria/quant) - Handle exists-forall and quantified formulasQuantifier Elimination (
aria/quant/qe) - Eliminate quantifiers from formulasSolution Sampling (
aria/sampling) - Generate diverse solutionsModel Counting (
aria/counting) - Count satisfying assignmentsOptimization Modulo Theory (
aria/optimization) - Solve optimization problemsInterpolant Generation (
aria/interpolant) - Generate Craig interpolantsSymbolic Abstraction (
aria/symabs) - Abstract state spacesPredicate Abstraction (
aria/symabs/predicate_abstraction) - Abstract with predicatesMonadic Abstraction (
aria/monabs) - Monadic predicate abstractionKnowledge Compilation (
aria/bool/knowledge_compiler) - Compile to tractable formsMaxSAT Solving (
aria/bool/maxsat) - Solve maximum satisfiability problemsQBF Solving - Quantified Boolean formula solving
Finite Field Solving (
aria/smt/ff) - SMT for Galois field constraints
Interactive Theorem Proving (
aria/itp) - Proof assistant frameworkAutomata Operations (
aria/automata) - Finite automata algorithms
Program Synthesis (
aria/synthesis) - Synthesize programs from specificationsContext-Free Language Reachability (
aria/cfl) - CFL solving algorithmsUnification (
aria/unification) - Term unification algorithmsTranslator (
aria/translator) - Translate between different formatsEFMC 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 overviewslogic-and-solving: core logic APIs, solver stacks, SRK, and reusable reasoning infrastructureproofs and explanations: abduction, interpolation, and interactive theorem provingquantified-reasoning: quantified solving, quantifier elimination, and instantiation techniquesabstraction/verification: program-analysis engines and verification workflowscounting-probability: model counting, sampling, and probabilistic reasoning
Contents:
- Getting Started
- Logic and Solving
- Boolean Reasoning
- SMT Solving
- SMT Solving for Finite Field
- Theory Reference: Finite Fields
- References
- First-Order Logic (FOL)
- Utilities
- SRK Symbolic Reasoning Kit
- Unification
- Introduction
- Components
- Applications
- References
- AllSMT
- Backbone Computation
- UNSAT Core Extraction
- Optimization Modulo Theory
- Knowledge Compilation
- Parallel SMT CDCL(T) Solving
- Proofs and Explanations
- Quantified Reasoning
- Automata and Languages
- Verification
- Abstraction
- Counting, Sampling, and Probability
- Program Synthesis
- LLM and ML
- CLI and Tools
- Global Parameters