**Description:**

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.

**Contents:**

Preface

__PART I: THEORY__

**Chapter 1. Datalog: Concepts,
History, and Outlook ***(David Maier, K. Tuncay Tekle,
Michael Rifer, David S. Warren)* • Introduction
• The Emergence of Datalog • Coining “Datalog” • Extensions to Datalog •
Evaluation Techniques • Early Datalog and Deductive Database Systems The
Decline and Resurgence of Datalog • Current Systems and Comparison •
Conclusions • Acknowledgments • References

**Chapter 2. An Introduction to the
Stable and Well-Founded Semantics of Logic Programs ***(Miroslaw Truszczynski)* • Introduction
• Terminology, Notation, and Other Preliminaries • The Case of Horn Logic Programs
• Moving Beyond Horn Programs–An Informal Introduction • The Stable Model
Semantics • The Well-Founded Model Semantics • Concluding Remarks •
Acknowledgments • References

**Chapter 3. A Survey of
Probabilistic Logic Programming ***(Fabrizio
Riguzzi, Theresa Swift)* • Introduction • Languages
with the Distribution Semantics • Defining the Distribution Semantics • Other
Semantics for Probabilistic Logics • Probabilistic Logic Programs and Bayesian
Networks • Inferencing in Probabilistic Logic Programs • Discussion •
Acknowledgments • References

__PART II: SYSTEMS__

**Chapter 4. WAM for Everyone: A
Virtual Machine for Logic Programming ***(David S.
WArren)* • Introduction • The Run-Time Environment of
a Traditional Procedural Language • Deterministic Datalog • Deterministic
Prolog • Nondeterministic Prolog • Last Call Optimization • Indexing •
Environment Trimming • Features Required for Full Prolog • WAM Extensions for
Tabling • Concluding Remarks • Acknowledgments • References

**Chapter 5. Predicate Logic as a Modeling
Language: The IDP System ***(Broes De Cat, Bart
Bogaerts, Maurice Bruynooghe, GerdaJanssens, Marc Denecker) • *Introduction • FO(ID, AGG, PF, T), the Formal Base Language • IDP
as a Knowledge Base System • The IDP Language • Advanced Features • Under the
Hood • In Practice • Related Work • Conclusion • References

**Chapter 6. SolverBlox: Algebraic
Modeling in Datalog ***(Conrado Borraz-Sánchez,
Diego Klabjan, Emir Pasalic, Molham Aref) • *Introduction
• Datalog • LogicBlox and LogiQL • Mathematical Programming with LogiQL • The
Traveling Salesman Problem (TSP) Test Case • Conclusions and Future Work •
References

__PART III: APPLICATIONS__

**Chapter 7. Exploring Life: Answer
Set Programming in Bioinformatics ***(Alessandro Dal
Palù, Agostino Dovier, Andrea Formisano, Enrico Pontelli)* • Introduction • Biology in a Nutshell • Answer Set Programming
in a Nutshell • Phylogenetics • Haplotype Inference • RNA Secondary Structure
Prediction • Protein Structure Prediction • Systems Biology • Other Logic
Programming Approaches • Conclusions • Acknowledgments • References

**Chapter 8. State-Space Search
with Tabled Logic Programs ***(C. R.
Ramakrishnan)* • Introduction • Finite-State
Model Checking • Infinite-State Model Checking • Simple Planning via Tabled
Search • Discussion • Acknowledgments • References

**Chapter 9. Natural Language
Processing with (Tabled and Constraint) Logic Programming*** (Henning Christiansen, Verónica Dahl)* • Introduction • Tabling, LP, and NLP • Tabled Logic Programming
and Definite Clause Grammars • Using Extra Arguments for Linguistic Information
• Assumption Grammars: DCGs Plus Global Memory • Constraint Handling Rules and
Their Application to Language Processing • Hypothetical Reasoning with CHR and
Prolog: Hyprolog • A Note on the Usefulness of Probabilistic Logic Programming
for Language Processing • Conclusion • References

**Chapter 10. Logic Programming
Applications: What Are the Abstractions and Implementations? ***(Yanhong A. Liu)* • Introduction
• Logic Language Abstractions • Join and Database-Style Queries • Recursion and
Inductive Analysis • Constraint and Combinatorial Search • Further Extensions,
Applications, and Discussion • Related Literature and Future Work •
Acknowledgments • References

Index

Biographies

**About the Editors:**

**Michael Kifer** is a professor with the Department of Computer Science, Stony
Brook University, USA. He received his Ph.D. in Computer Science in 1984 from
the Hebrew University of Jerusalem, Israel, and the M.S. degree in Mathematics
in 1976 from Lomonosov Moscow State University, Russia. Since 2012, Dr. Kifer
has served as the President of the Rules and Reasoning Association (RRA). His
work spans the areas of knowledge representation and reasoning (KRR), logic
programming, Web information systems, and databases. He published four textbooks
and numerous articles in these areas as well as co-invented F-logic, HiLog,
Annotated Logic, and Transaction Logic, which are among the most widely cited
works in Computer Science and Semantic Web research, in particular. Twice, in
1999 and 2002, he was a recipient of the prestigious ACM-SIGMOD “Test of Time”
awards for his works on F-logic and object-oriented database languages. In
2008, he received SUNY Chancellor’s Award for Excellence in Scholarship. In
2013, Dr. Kifer received another prestigious award: The 20-year “Test of Time”
award from the Association for Logic Programming (ALP) for his work on
Transaction Logic. In 2013, Kifer co-founded Coherent Knowledge Systems, a
startup that commercializes semantic and KRR technologies.

**Yanhong Annie Liu** is a professor of Computer Science at Stony Brook University. She
received her B.S. from Peking University, M.Eng. from Tsinghua University, and
Ph.D. from Cornell University, all in Computer Science. Her primary research is
in languages and algorithms, especially on systematic design and optimization,
centered around incrementalization; the discrete counterpart of differentiation
in calculus. Her current research focus is on languages and efficient
implementations for secure distributed programming and for declarative system
specifications. She has published in many prestigious venues, taught in a wide
range of computer science areas, and presented over 100 conferences and invited
talks worldwide. She serves on the ACM Books Editorial Board as the Area Editor
for Programming Languages, and she is a member of IFIP WG 2.1 on Algorithmic
Languages and Calculi. Her awards include a State University of New York
Chancellor’s Award for Excellence in Scholarship and Creative Activities.

**Target Audience:**

This book will be useful for
researchers and practitioners as well as graduate students interested in Logic
Programming.