Improving the execution speed of compiled prolog with modes, clause selection, and determinism
II and Colloquium on Functional and Logic Programming and Specifications (CFLP) on TAPSOFT '87: Advanced Seminar on Foundations of Innovative Software Development
Prolog: the standard: reference manual
Prolog: the standard: reference manual
FSA Utilities: A Toolbox to Manipulate Finite-State Automata
WIA '96 Revised Papers from the First International Workshop on Implementing Automata
Multi-tape Automata for Speech and Language Systems: A Prolog Implementation
WIA '97 Revised Papers from the Second International Workshop on Implementing Automata
Carcinogenesis Predictions Using ILP
ILP '97 Proceedings of the 7th International Workshop on Inductive Logic Programming
Improving the efficiency of inductive logic programming systems
Software—Practice & Experience
Demand-driven indexing of prolog clauses
ICLP'07 Proceedings of the 23rd international conference on Logic programming
Prolog performance on larger datasets
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Theory and Practice of Logic Programming - Prolog Systems
Hi-index | 0.00 |
Prolog is the most well-known and widely used logic programming language. A large number of Prolog applications maintains information by asserting and retracting clauses from the database. Such dynamic predicates raise a number of issues for Prolog implementations, such as what are the semantics of a procedure where clauses can be retracted and asserted while the procedure is being executed. One advantage of Logical Update semantics is that it allows indexing. In this paper, we discuss how one can implement just-in-time indexing with Logical Update semantics. Our algorithm is based on two ideas: stable structure and fragmented index trees. By stable structure one means that we define a structure for the indexing tree that not change, even as we assert and as we retract clauses. Second, by fragmented index tree we mean that the indexing tree will be built in such a way that the updates will be local to each fragment. The algorithm was implemented and results indicate significant speedups and reduction of memory usage in test applications.