Design Patterns for Tabled Logic Programs
Tabled Logic Programming (TLP) is now supported by a number of Prologs such as XSB, YAP, B Prolog, Ciao and others. This talk attempts to summarize how TLP is used in applications by making use of the organizing principle of software design patterns. Software design patterns were originally applied to object-oriented programs, but they have since been applied to a variety of areas including workflow systems, stream databases, and enterprise architectures. While software design patterns do not provide a formal basis for program synthesis or development, they can provide a useful framework to highlight programming idioms and to associate these idioms with their uses. Towards that end, this paper presents patterns for tabling in definite programs, along with patterns using tabled negation for the Well-Founded Semantics and ASP, tabling for constraint-based reasoning, and tabling for deductive-database style using call subsumption, and tabling for quantitative and para-consistent reasoning using answer subsumption.