TY - GEN
T1 - Generic abstract interpretation algorithms for prolog
T2 - 4th International Symposium on Programming Language Implementation and Logic Programming, PLILP 1992
AU - Englebert, Vincent
AU - Le Charlier, Baudouin
AU - Roland, Didier
AU - Van Hentenryck, Pascal
N1 - Publisher Copyright:
© Springer-Verlag Berlin Heidelberg 1992.
PY - 1992
Y1 - 1992
N2 - The efficient implementation of generic abstract interpretation algorithms for Prolog is reconsidered after [12, 14]. Two new optimization techniques are proposed and applied to the original algorithm of [12]: dependency on clause prefixes and caching of operations. The first improvement avoids reevaluating a clause prefix when no abstract value which it depends on has been updated. The second improvement consists of caching all operations on substitutions and reusing the results whenever possible. The algorithm together with the two optimization techniques have been implemented in C (about 8000 lines of code each), tested on a large number of Prolog programs, and compared with the original implementation on an abstract domain containing modes, patterns and sharing. In conjunction with refinments of the domain algorithms, they produce an average reduction of more than 58% in computation time. Extensive experimental results on the programs are given, including computation times, hit ratios for the caches, the number of operations performed, and the time distribution. As a main result, the improved algorithms exhibit the same efficiency as the specific tools of [26, 8], despite the fact that our abstract domain is more sophisticated and accurate. The abstract operations also take 90% of the computation time indicating that the room left for improvement is very limited. Results on a simpler domain are also given and show that even extremely basic domains can benefit from the optimizations. The general-purpose character of the optimizations is also discussed.
AB - The efficient implementation of generic abstract interpretation algorithms for Prolog is reconsidered after [12, 14]. Two new optimization techniques are proposed and applied to the original algorithm of [12]: dependency on clause prefixes and caching of operations. The first improvement avoids reevaluating a clause prefix when no abstract value which it depends on has been updated. The second improvement consists of caching all operations on substitutions and reusing the results whenever possible. The algorithm together with the two optimization techniques have been implemented in C (about 8000 lines of code each), tested on a large number of Prolog programs, and compared with the original implementation on an abstract domain containing modes, patterns and sharing. In conjunction with refinments of the domain algorithms, they produce an average reduction of more than 58% in computation time. Extensive experimental results on the programs are given, including computation times, hit ratios for the caches, the number of operations performed, and the time distribution. As a main result, the improved algorithms exhibit the same efficiency as the specific tools of [26, 8], despite the fact that our abstract domain is more sophisticated and accurate. The abstract operations also take 90% of the computation time indicating that the room left for improvement is very limited. Results on a simpler domain are also given and show that even extremely basic domains can benefit from the optimizations. The general-purpose character of the optimizations is also discussed.
UR - http://www.scopus.com/inward/record.url?scp=1542745355&partnerID=8YFLogxK
U2 - 10.1007/3-540-55844-6_144
DO - 10.1007/3-540-55844-6_144
M3 - Conference contribution
AN - SCOPUS:1542745355
SN - 9783540558446
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 311
EP - 325
BT - Programming Language Implementation and Logic Programming - 4th International Symposium, PLILP 1992, Proceedings
A2 - Bruynooghe, Maurice
A2 - Wirsing, Martin
PB - Springer Verlag
Y2 - 26 August 1992 through 28 August 1992
ER -