Componential set-based analysis (ACM transactions on programming languages and systems, 1999)