Welcome to arlib’s Documentation!
Introduction
Arlib is a comprehensive toolkit for automated reasoning and constraint solving. It provides implementations of various algorithms and tools for:
Abductive Inference (
arlib/abduction) - Generate explanations for observationsAllSMT (
arlib/allsmt) - Enumerate all satisfying modelsBackbone Computation (
arlib/backbone) - Extract forced assignmentsUNSAT Core Extraction (
arlib/unsat_core) - Identify minimal unsatisfiable subsetsQuantifier Reasoning (
arlib/quant) - Handle exists-forall and quantified formulasQuantifier Elimination (
arlib/quant/qe) - Eliminate quantifiers from formulasSolution Sampling (
arlib/sampling) - Generate diverse solutionsModel Counting (
arlib/counting) - Count satisfying assignmentsOptimization Modulo Theory (
arlib/optimization) - Solve optimization problemsInterpolant Generation (
arlib/interpolant) - Generate Craig interpolantsSymbolic Abstraction (
arlib/symabs) - Abstract state spacesPredicate Abstraction (
arlib/symabs/predicate_abstraction) - Abstract with predicatesMonadic Abstraction (
arlib/monabs) - Monadic predicate abstractionKnowledge Compilation (
arlib/bool/knowledge_compiler) - Compile to tractable formsMaxSAT Solving (
arlib/bool/maxsat) - Solve maximum satisfiability problemsQBF Solving - Quantified Boolean formula solving
Finite Field Solving (
arlib/smt/ff) - SMT for Galois field constraintsInteractive Theorem Proving (
arlib/itp) - Proof assistant frameworkLLM Integration (
arlib/llm) - Language model enhanced reasoningAutomata Operations (
arlib/automata) - Finite automata algorithmsProgram Synthesis (
arlib/synthesis) - Synthesize programs from specificationsContext-Free Language Reachability (
arlib/cfl) - CFL solving algorithmsUnification (
arlib/unification) - Term unification algorithms
We welcome any feedback, issues, or suggestions for improvement. Please feel free to open an issue in our repository.
Installing and Using Arlib
Install arlib from source
git clone https://github.com/ZJU-Automated-Reasoning-Group/arlib
virtualenv --python=python3 venv
source venv/bin/activate
cd arlib
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 dependencies from requirements.txt - Download required solver binaries (CVC5, MathSAT, z3) - Run unit tests if available
Quick Start
from arlib import *
# Example: Check satisfiability
formula = Bool(True) # Simple tautology
result = smt_solve(formula)
print(f"Formula is {'satisfiable' if result else 'unsatisfiable'}")
Contents:
- Research Topics and Thesis Projects
- Applications
- Abduction
- AllSMT
- Automata
- Introduction
- Components
- Applications
- References
- Backbone Computation
- Context-Free Language Reachability
- Introduction
- Components
- Applications
- References
- Constrained Horn Clauses (CHC) Tools
- Model Counting
- SMT Solving for Finite Field
- References
- Interactive Theorem Proving (ITP)
- LLM Integration
- Introduction
- Components
- Applications
- References
- Monadic Predicate Abstraction
- Optimization Modulo Theory
- Parallel SMT CDCL(T) Solving
- PolyHorn: Polynomial Horn Clause Solver
- Probabilistic Reasoning (arlib/prob)
- Playing wth Quantifiers
- Model Sampling
- SMT Solving
- SRK Symbolic Reasoning Kit
- Symbolic Abstraction
- Symbolic Finite Automata
- Program Synthesis
- Introduction
- Components
- Applications
- References
- Unification
- Introduction
- Components
- Applications
- References
- UNSAT Core Extraction