Database of Research Tools Developed Using CADP

DATALOG_SOLVE Tool for Static Analysis of Object-Oriented Programs

Organisation: Universidad Politécnica de Valencia (SPAIN)

Functionality: Static analysis.

Tools used: CADP (Construction and Analysis of Distributed Processes)

Period: 2008-2009

Description: Program analysis is a technique for statically determining dynamic properties of programs. Static analysis generally executes an abstract version of the program's semantics on abstract data rather than on concrete data. Several kinds of program analyses can be formulated in Datalog, a simple relational query language that is reach enough to describe complex interprocedural program analyses involving dynamically created objects. Datalog allows, on the one hand, to formulate queries in a succinct manner (a few lines of Datalog are sufficient instead of hundreds of lines of code in a traditional language) and, on the other hand, Datalog has been extensively optimized in the field of logic programming and deductive databases.

This work deals with the translation of Datalog queries into boolean equation systems (BESs), which allows to evaluate queries in a demand-driven way by using the resolution engines available in verification tools, such as the CAESAR_SOLVE library of CADP. A Datalog query is first translated into a parameterized BES, which is subsequently instantiated on-the-fly, yielding a BES which is fed to the linear-time local resolution algorithms of CAESAR_SOLVE. The translation has been implemented in the DATALOG_SOLVE tool, which takes as input the domain definitions, the Datalog constraints or facts, and a Datalog query, and produces the parameterized BES representing the problem, which is instantiated and solved using CAESAR_SOLVE. DATALOG_SOLVE has been applied to analyze JAVA programs by context-insensitive pointer analysis, a form of static analysis suitable for encoding in Datalog. Several JAVA benchmarks were handled successfully, the largest one containing 375 classes, 1531 methods, and 17000 variables.

Conclusions: The resolution of Datalog queries by translating them into BESs and by using the linear-time BES resolution algorithms available in the CAESAR_SOLVE library of CADP allowed to build the new deductive database solver DATALOG_SOLVE in a robust and modular way. Besides the traditional applications for on-the-fly verification and state space reduction, the BES resolution technology available in CADP also proves to be useful in other areas, such as the static analysis of programs.

Publications: [Alpuente-Feliu-Joubert-Villanueva-08] María Alpuente, Marco A.Feliú, Christophe Joubert, and Alicia Villanueva. "Using Datalog and Boolean Equation Systems for Program Analysis". Proceedings of the 13th International Workshop on Formal Methods for Industrial Critical Systems FMICS'2008, Lecture Notes in Computer Science vol. 5596, pp. 215-231. Springer Verlag, September 2008.
Full version available on-line at:
or from our FTP site in PDF or PostScript

[Alpuente-Feliu-Joubert-Villanueva-09] María Alpuente, Marco A.Feliú, Christophe Joubert, and Alicia Villanueva. "DATALOG_SOLVE: A Datalog-Based Demand-Driven Program Analyzer". Proceedings of the 8th Spanish Conference on Programming and Computer Languages PROLE'2008, Electronic Notes in Theoretical Computer Science vol. 248, pp. 57-66. Elsevier, August 2009.
Available on line at:
or from our FTP site in PDF or PostScript
Christophe Joubert
Technical University of Valencia / DSIC
Camino de Vera s/n,
46022 Valencia
Tel: + 34 963 87 70 07 + 83516
Fax: + 34 963 87 73 59

Further remarks: This tool, amongst others, is described on the CADP Web site:

Last modified: Fri Feb 19 09:13:01 2016.

Back to the CADP research tools page