The Power of Prolog
Thank you very much for your interest, I greatly appreciate it!<p>I hope you are all doing reasonably well. Please take care!<p>This book was most recently discussed here in May 2018:<p><a href="https://news.ycombinator.com/item?id=17121028" rel="nofollow">https://news.ycombinator.com/item?id=17121028</a><p>Since then, I have added a new chapter, <i>Logical Foundations of Prolog</i>:<p><a href="https://www.metalevel.at/prolog/logic" rel="nofollow">https://www.metalevel.at/prolog/logic</a><p>Also, I have made several other additions and improvements. You can
see most of the changes since the last discussion in a public git
repository:<p><a href="https://github.com/triska/the-power-of-prolog/compare/8a94ed3d0ab73d31d6400ab18b9b341ed56fbad1...master" rel="nofollow">https://github.com/triska/the-power-of-prolog/compare/8a94ed...</a><p>Currently, I am working on several videos that will eventually form
the core of the book. Here are a few previews:<p><a href="https://www.metalevel.at/prolog/videos/logic" rel="nofollow">https://www.metalevel.at/prolog/videos/logic</a><p><a href="https://www.metalevel.at/prolog/videos/timetabling" rel="nofollow">https://www.metalevel.at/prolog/videos/timetabling</a><p><a href="https://www.metalevel.at/prolog/videos/sparrows_on_eagles" rel="nofollow">https://www.metalevel.at/prolog/videos/sparrows_on_eagles</a><p>These videos are all work in progress, and they may be replaced by
better versions at any time. Hence, if possible, please use the links
above to refer to them: They will always point to the latest versions.<p>Alternatively, please use the following overview page that shows all videos:<p><a href="https://www.metalevel.at/prolog/videos/" rel="nofollow">https://www.metalevel.at/prolog/videos/</a><p>Also, I have published a comprehensive journal paper about my
CLP(B) system, i.e., a <i>SAT solver</i> with some nice algebraic
properties, seamlessly integrated into Prolog as a specialized form of
unification:<p><a href="https://www.metalevel.at/boolean.pdf" rel="nofollow">https://www.metalevel.at/boolean.pdf</a><p>For Prolog application programmers and system implementors, the
paper's appendices may be especially interesting. They formalize a few
important concepts that are also a major theme in the book.<p>As of October 2019, the CLP(B) system is also available in Mark Thom's
Scryer Prolog. Scryer is a Rust-based Prolog implementation that is
freely available, conforms to the Prolog ISO standard, represents
strings efficiently as lists of characters, and includes important
features for implementing Prolog-based constraint solvers:<p><a href="https://github.com/mthom/scryer-prolog" rel="nofollow">https://github.com/mthom/scryer-prolog</a><p>As of a few days ago, Scryer Prolog also ships with my implementation
of CLP(ℤ), Constraint Logic Programming over <i>integers</i>. This is a very
useful declarative paradigm for solving combinatorial tasks, in some
ways superior to SAT solving because it allows more convenient
modeling, easier experimentation with different formulations, and
reasoning at a higher conceptual level. The chapter on declarative
integer arithmetic contains more information, and further pointers:<p><a href="https://www.metalevel.at/prolog/clpz" rel="nofollow">https://www.metalevel.at/prolog/clpz</a><p>For illustration, here is an example page where you can solve <i>timetabling instances</i> with this approach:<p><a href="https://www.metalevel.at/prolog/timetabling/" rel="nofollow">https://www.metalevel.at/prolog/timetabling/</a><p>I welcome all comments and suggestions about the book, these videos,
and Prolog in general. Also, I would like to take this opportunity to
thank all readers for your thoughtful comments and endorsements. Your
feedback and encouragement are making this work especially worthwhile.<p>Enjoy!