home / skills / a5c-ai / babysitter / abstract-domain-library
This skill helps you select and apply abstract domains for static analysis, improving precision and termination while balancing performance.
npx playbooks add skill a5c-ai/babysitter --skill abstract-domain-libraryReview the files below or copy the command above to add this skill to your agents.
---
name: abstract-domain-library
description: Library of abstract domains for static analysis and abstract interpretation
allowed-tools:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
metadata:
specialization: computer-science
domain: science
category: formal-verification
phase: 6
---
# Abstract Domain Library
## Purpose
Provides expert guidance on abstract domains for abstract interpretation-based static analysis.
## Capabilities
- Interval domain
- Octagon domain
- Polyhedra domain
- Congruence domain
- Domain combination (reduced product)
- Widening and narrowing operators
## Usage Guidelines
1. **Domain Selection**: Choose appropriate abstract domain
2. **Operations**: Implement domain operations
3. **Widening**: Design widening for termination
4. **Precision Tuning**: Balance precision and efficiency
5. **Combination**: Combine domains for precision
## Tools/Libraries
- Apron
- ELINA
- Crab
- Frama-C
This skill is a compact library and guide for abstract domains used in static analysis and abstract interpretation. It presents common domains, domain combination techniques, and strategies for ensuring termination and reasonable precision. The material suits developers building or tuning static analyzers and formal verification tools.
The skill catalogs abstract domains (intervals, octagons, polyhedra, congruences) and describes the core operations each domain must implement: join, meet, transfer, and comparison. It explains reduced product combination to merge domains and covers widening and narrowing operators to guarantee fixpoint termination. Practical notes point to existing implementations and tools for integration.
Which domain should I choose first for a new analyzer?
Start with intervals for low cost and basic range checks; add congruence for modulus properties and octagons or polyhedra only when relational precision is required.
How do I avoid non-termination during fixpoint computation?
Implement widening operators that force convergence and follow them with narrowing iterations to recover precision where needed.