Research Topics and Thesis Projects
Aria offers numerous opportunities for research and thesis projects across multiple areas of automated reasoning.
Core Algorithm Development
- Parallel CDCL(T) Solving (
aria/smt/pcdclt) Develop parallel algorithms for conflict-driven clause learning with theory reasoning. Focus on work distribution, clause sharing, and portfolio solving.
- Optimization Modulo Theory (
aria/optimization) Extend SMT solving with optimization capabilities. Implement algorithms for OMT over bit-vectors, arithmetic, and mixed theories.
- Advanced Model Counting (
aria/counting) Improve counting algorithms for Boolean, arithmetic, and quantifier-free bit-vector formulas. Focus on scalability and approximation techniques.
- Symbolic Abstraction (
aria/symabs) Develop new abstraction techniques for infinite state systems. Implement counterexample-guided abstraction refinement (CEGAR).
Theory-Specific Solving
- Finite Field SMT (
aria/smt/ff) Build decision procedures for Galois field constraints. Applications in cryptography and coding theory.
- Floating-Point Arithmetic (
aria/smt/fp) Develop efficient solvers for IEEE 754 floating-point constraints with proper handling of rounding modes and special values.
- String Constraint Solving
Extend string theory support with automata-based techniques. Implement length constraints and regular language operations.
AI-Enhanced Reasoning
- Machine Learning for Solvers (
aria/ml) Extract features for learned solver selection, clause learning prediction, and variable ordering heuristics.
- Automata Learning (
aria/automata) Apply active learning to infer automata from examples for string constraint solving and program verification.
Advanced Sampling & Enumeration
- Uniform Sampling (
aria/sampling) Develop algorithms for uniform solution sampling over complex constraint domains. Applications in probabilistic verification.
- AllSMT Algorithms (
aria/allsmt) Enumerate all solutions efficiently. Focus on diversity metrics and incremental solving techniques.
- Solution Space Analysis
Implement tools for analyzing solution spaces, including backbone computation and minimal unsatisfiable core extraction.
Quantifier Handling
- Quantifier Elimination (
aria/quant/qe) Develop QE procedures for mixed theories combining arithmetic, bit-vectors, and arrays.
- E-Matching Optimization (
aria/quant/ematching) Improve quantifier instantiation through better pattern matching and trigger selection.
- CHC Solving (
aria/quant/chctools) Scale algorithms for constrained Horn clause solving. Applications in program verification and synthesis.
Applications & Tools
- Interactive Theorem Proving (
aria/itp) Build proof assistant tools with support for multiple theories and automated proof search.
- Program Synthesis (
aria/synthesis) Implement syntax-guided synthesis techniques for bit-vectors, arithmetic, and string domains.
- Abductive Reasoning (
aria/abduction) Develop algorithms for generating explanations and hypotheses from constraint observations.
Getting Started
Each module includes examples and documentation. Start with aria/allsmt for basic usage patterns, then explore specialized areas based on your interests.