Declarative Logic Programming. Michael KiferЧитать онлайн книгу.
Chapter 6 SolverBlox: Algebraic Modeling in Datalog
Conrado Borraz-Sánchez, Diego Klabjan, Emir Pasalic, Molham Aref
6.1 Introduction
6.2 Datalog
6.3 LogicBlox and LogiQL
6.4 Mathematical Programming with LogiQL
6.5 The Traveling Salesman Problem (TSP) Test Case
6.6 Conclusions and Future Work
References
Chapter 7 Exploring Life: Answer Set Programming in Bioinformatics
Alessandro Dal Palù, Agostino Dovier, Andrea Formisano, Enrico Pontelli
7.1 Introduction
7.2 Biology in a Nutshell
7.3 Answer Set Programming in a Nutshell
7.4 Phylogenetics
7.5 Haplotype Inference
7.6 RNA Secondary Structure Prediction
7.7 Protein Structure Prediction
7.8 Systems Biology
7.9 Other Logic Programming Approaches
7.10 Conclusions
Acknowledgments
References
Chapter 8 State-Space Search with Tabled Logic Programs
C. R. Ramakrishnan
8.1 Introduction
8.2 Finite-State Model Checking
8.3 Infinite-State Model Checking
8.4 Simple Planning via Tabled Search
8.5 Discussion
Acknowledgments
References
Chapter 9 Natural Language Processing with (Tabled and Constraint) Logic Programming
Henning Christiansen, Verónica Dahl
9.1 Introduction
9.2 Tabling, LP, and NLP
9.3 Tabled Logic Programming and Definite Clause Grammars
9.4 Using Extra Arguments for Linguistic Information
9.5 Assumption Grammars: DCGs Plus Global Memory
9.6 Constraint Handling Rules and Their Application to Language Processing
9.7 Hypothetical Reasoning with CHR and Prolog: Hyprolog
9.8 A Note on the Usefulness of Probabilistic Logic Programming for Language Processing
9.9 Conclusion
References
Chapter 10 Logic Programming Applications: What Are the Abstractions and Implementations?
Yanhong A. Liu
10.1 Introduction
10.2 Logic Language Abstractions
10.3 Join and Database-Style Queries
10.4 Recursion and Inductive Analysis
10.5 Constraint and Combinatorial Search
10.6 Further Extensions, Applications, and Discussion
10.7 Related Literature and Future Work
Acknowledgments
References
Preface
The idea of this book grew out of a symposium that was held at Stony Brook in September 2012 in celebration of David S. Warren’s fundamental contributions to Computer Science and the area of Logic Programming in particular.
Logic Programming (LP) is at the nexus of Knowledge Representation, Artificial Intelligence, Mathematical Logic, Databases, and Programming Languages. It is fascinating and intellectually stimulating due to the fundamental interplay among theory, systems, and applications brought about by logic. Logic programs are more declarative in the sense that they strive to be logical specifications of “what” to do rather than “how” to do it, and thus they are high-level and easier to understand and maintain. Yet, without being given an actual algorithm, LP systems implement the logical specifications automatically.
Several books cover the basics of LP but focus mostly on the Prolog language with its incomplete control strategy and non-logical features. At the same time, there is generally a lack of accessible yet comprehensive collections of articles covering the key aspects in declarative LP. These aspects include, among others, well-founded vs. stable model semantics for negation, constraints, object-oriented LP, updates, probabilistic LP, and evaluation methods, including top-down vs. bottom-up, and tabling.
For systems, the situation is even less satisfactory, lacking accessible literature that can help train the new crop of developers, practitioners, and researchers. There are a few guides on Warren’s Abstract Machine (WAM), which underlies most implementations of Prolog, but very little exists on what is needed for constructing a state-of-the-art declarative LP inference engine. Contrast this with the literature on, say, Compilers, where one can first study a book on the general principles and algorithms and then dive in the particulars of a specific compiler. Such resources greatly facilitate the ability to start making meaningful contributions quickly. There is also a dearth of articles about systems that support truly declarative languages, especially those that tie into first-order logic, mathematical programming, and constraint solving.
LP helps solve challenging problems in a wide range of application areas, but in-depth analysis of their connection with LP language abstractions and LP implementation methods is lacking. Also, rare are surveys of challenging application areas of LP, such as Bioinformatics, Natural Language Processing, Verification, and Planning.
The goal of this book is to help fill in the previously mentioned void in the LP literature. It offers a number of overviews on key aspects of LP that are suitable for researchers and practitioners as well as graduate students. The following chapters in theory, systems, and applications of LP are included.
Part I: Theory
1. “Datalog: Concepts, History, and Outlook” by David Maier, K. Tuncay Tekle, Michael Kifer, and David S. Warren.
This chapter is a comprehensive survey of the main concepts of Datalog, an LP language for data processing. The study of Datalog was one of the early drivers of more declarative approaches to LP. Some aspects of Datalog are covered in greater depth than others, but the bibliography at the end of the chapter can be relied upon to help fill in the details.
2. “An Introduction to the Stable and Well-Founded Semantics of Logic Programs” by Miroslaw Truszczynski.
The theory underlying modern LP is based on two different logical semantics: the stable model semantics and the well-founded semantics, leading to two different declarative paradigms. The stable model semantics defines the meaning of