Logic programming, Soul, TestLog, persistency mechanisms
TestLog is a library for Soul (a logic programming language) that allows to query information from execution traces. It has, amongst other things, been used as the basis for a diploma in 04-05 studying advanced debugging techniques (that need to query runtime information to, for example, find out who has set the value of a certain instance variable to some value).
Special about TestLog is that it keeps a complete version information for the objects that are traced. The state of the object before and after each message send is recorded. This allows for very advanced reasoning (for example to express that the size of a collection should be incremented with one after a message 'add' is sent that adds an object). This mechanism is fully implemented and works quite well.
The current implementation of TestLog, however, is a brute force approach that could be optimized to use far less memory than it does now. Therefore recent advances in persistency mechanism could be applied, that tackle exactly this problem. The subject of this thesis is to add such a persistency mechanism to TestLog, and compare its performance to the current model.