On the propagation of errors in the size of join results
SIGMOD '91 Proceedings of the 1991 ACM SIGMOD international conference on Management of data
HILOG: a foundation for higher-order logic programming
Journal of Logic Programming
Balancing histogram optimality and practicality for query result size estimation
SIGMOD '95 Proceedings of the 1995 ACM SIGMOD international conference on Management of data
Rapid bushy join-order optimization with Cartesian products
SIGMOD '96 Proceedings of the 1996 ACM SIGMOD international conference on Management of data
Implications of certain assumptions in database performance evauation
ACM Transactions on Database Systems (TODS)
Introduction to the Theory of Computation
Introduction to the Theory of Computation
Access path selection in a relational database management system
SIGMOD '79 Proceedings of the 1979 ACM SIGMOD international conference on Management of data
Localizing and Explaining Reasons for Non-terminating Logic Programs with Failure-Slices
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Measuring the Complexity of Join Enumeration in Query Optimization
VLDB '90 Proceedings of the 16th International Conference on Very Large Data Bases
LEO - DB2's LEarning Optimizer
Proceedings of the 27th International Conference on Very Large Data Bases
Nontermination inference of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Termination analysis of logic programs through combination of type-based norms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimal top-down join enumeration
Proceedings of the 2007 ACM SIGMOD international conference on Management of data
The history of histograms (abridged)
VLDB '03 Proceedings of the 29th international conference on Very large data bases - Volume 29
Dynamic programming strikes back
Proceedings of the 2008 ACM SIGMOD international conference on Management of data
Termination Analysis of Logic Programs Based on Dependency Graphs
Logic-Based Program Synthesis and Transformation
Polytool: proving termination automatically based on polynomial interpretations
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
Deriving predicate statistics in datalog
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Automated termination analysis for logic programs with cut*
Theory and Practice of Logic Programming
Non-termination analysis of logic programs using types
LOPSTR'10 Proceedings of the 20th international conference on Logic-based program synthesis and transformation
Deriving predicate statistics for logic rules
RR'12 Proceedings of the 6th international conference on Web Reasoning and Rule Systems
Hi-index | 0.00 |
There have been many studies in termination analysis of logic programming but little has been done on analyzing non-termination of logic programs, which is even more important in our opinion. Non-termination analysis examines program execution history when non-termination is suspected and informs the programmer of non-termination causes and possible ways to fix them. In the first part of this thesis, we study the problem of non-termination in tabled logic engines with subgoal abstraction, such as XSB, and propose a suite of algorithms, called non-Termination analyzer, $\texttt{Terminyzer}$, for automatic detection and explanation of non-termination. The second part of this thesis focuses on cost-based query optimization. Database query optimizers rely on data statistics in selecting query execution plans and rule-based systems can greatly benefit from such optimizations as well. To this end, one first needs to collect data statistics for base and propagate them to derived predicates. However, there are two difficulties: dependencies among arguments and recursion. To address these problems, we implement a Cost-based query optimizer, $\texttt{Costimizer}$, which consists of a cost estimator and an optimizing unit. The optimizing unit performs a greedy search optimization based on predicate statistics computed by the cost estimator. We validate the effectiveness of $\texttt{Costimizer}$ on both size estimation and query optimization through experimental studies.