R
Robert Kowalski
doc.ic.ac.uk/~rak · Personal blog · on HN since 2011
Academic page of Robert Kowalski, a pioneer of logic programming, hosting his papers on Prolog, logic and law.
What HN saysHN links it for classic papers, especially the British Nationality Act as a Prolog program, and for history of logic programming.
15HN people shared it
10linked it in comments
7stories submitted
120story points
1 year agolast shared
2011people per year2026
Most-shared posts
- 1Algorithm = Logic and Control [pdf]4 people · 77 points · first shared 2011 · 12 comments on HN
- 2The British Nationality Act as a Prolog Program (1986) [pdf]3 people · 35 points · first shared 2022 · 17 comments on HN
- 3The early years of logic programming (1988) [pdf]2 people · 4 points · first shared 2014 · discussion on HN
- 4Robert Kowalski – A history of logic programming (2013) [pdf]2 people · 4 points · first shared 2016 · discussion on HN
- 5History.pdf1 people · first shared 2023
- 6Homepage1 people · first shared 2022
- 7Newbook.pdf1 people · first shared 2017
- 8Law1 people · first shared 2015
- 9IFIP%2074.pdf1 people · first shared 2023
- 10British%20N1 people · first shared 2020
What HN people wrote when they linked it
patrec · 2023-07-03
Prolog stands for "programmation en logique", and as might be guessed from that comes from France (Alain Colmerauer in Marseille, to be precise). Now Kowalski, who also was an important pioneer in logic programming who collaborated with Colmerauer did work in Edinburgh, but from the horse's mouth:
I have tried to document as best I could our various contributions to that idea in an article published
in CACM, 1988, and more recently in a History of Logic Programming, published in 2014. In
summary, however, it is probably fair to say that my own contributions were mainly philosophical
and Alain’s were more practical. In particular, Alain’s work led in the same summer of 1972 to the
design and implementation of the logic programming language Prolog.
https://www.doc.ic.ac.uk/~rak/history.pdf
triska · 2022-12-27
A classic reference: The British Nationality Act as a Logic Program:
https://www.doc.ic.ac.uk/~rak/papers/British%20Nationality%20Act.pdf
Parts of the constitution of Japan in Prolog:
https://github.com/bitlaw-jp/the-constitution-of-japan
A recent project involving the formalization and automated analysis of criteria for grants:
https://www.brz.gv.at/en/BRZ-Tech-Blog/Tech-Blog-7-Symbolic-Analysis-o…
YeGoblynQueenne · 2023-02-10
Meh. As usual, functional programmers look at Prolog and completely miss the point. "Classical Prolog" (which part?) is "all about nondeterminism"?
The nondeterminism in Prolog comes from the completeness of SLD-Resolution as an inference rule. Because SLD-Resolution is complete [1], it can find every proof that exists. When there are many proofs, it is natural to have some mechanism to represent them all. Prolog does that by backtracking and trying different branches of a proof, hierarchically.
Parsing is indeed a good example of this. When a grammar is ambiguous, a string may have multiple different parses. But if a grammar is ambiguous, that's because the language it represents is ambiguous, and that means we want to represent the ambiguity, and have multiple parses. That is where a mechanism for nondeterministic return of all results is needed. A parser written in Prolog [2] will naturally backtrack and get all parses of a string.
So how about that maudlin cut, that people, like the authors of the article above, have bitched and moaned about, since the creation of Prolog? Well the cut clearly exists to avoid reaching unwanted branches of a proof, or in other words, to avoid unwanted backtracking.
But why then is there unwanted backtracking? The reason for unwanted backtracking is, invariably, that a program is over-general. In over-generalising, the program non-deterministically generates results that the programmer did not want, even as it returns (hopefully first)…
phaedrus · 2018-04-30
I've been working on this (albeit as a library rather than a language in its own right).
The more papers I read the more lost I became trying to make sense of the different approaches to goal-oriented / relational / logic programming. This retrospective paper by Robert Kowalski gave me an historical framework to make sense of it all:
https://www.doc.ic.ac.uk/~rak/papers/History.pdf
One of the key insights I gleaned from that paper is the difference between bottom-up and top-down strategies. All logic / relational / goal oriented paradigms exhibit a characteristic top-down or bottom-up quality, and this classification can then be used to understand the essence of goal-oriented programming.
The following is my interpretation of the historical information from that paper:
During the 1980s a burgeoning Datalog community, with roots in the database field, assimilated the existing deductive database community which had roots in AI. The database perspective focuses on finite models that are computable bottom-up. However a naive bottom-up implementation, deducing forwards from facts using rules, ignores the query until it derives it "as though by accident." To make generated models relevant to the query, Datalog uses transformations such as "Magic Sets" to incorporate the query into the rules.
An early deductive database (AI) strategy was Hyper-resolution, which is essentially also bottom-up, and it suffers from the same problem of generating new derivations blindly…
triangle-man · 2025-07-01
Trying to track down some other reference, I see that there was work on formalising British nationality -- in Prolog! -- in 1986: https://www.doc.ic.ac.uk/~rak/papers/British%20Nationality%20Act.pdf
jll29 · 2022-09-13
Some of these articles were written by Robert Kowalski (homepage: http://www.doc.ic.ac.uk/~rak/), who was part of the initial Prolog
gang/community, which was split between Marseille (FR) and Edinburgh (GB).
This year, PROLOG turned 50 years!
pierre · 2020-10-31
Logic oriented programming is really well suit for this problem.
Most complaw research happen in the logic department of universities.
- blawx.com use ergo 2 in the backend
- Kowalski ( author of iso prolog ) wrote a paper on the topic in the 80's http://www.doc.ic.ac.uk/~rak/papers/British%20N
ationality%20Act.pdf
fspeech · 2017-03-27
Prof. Kowalski has a draft version of his book available on his website, which should provide background information on LPS:
http://www.doc.ic.ac.uk/~rak/papers/newbook.pdf
Computational Logic and Human Thinking: How to be Artificially Intelligent
"This earlier draft of a book of the same title, published in July 2011 by Cambridge University Press, presents the principles of Computational Logic, so that they can be applied in everyday life. I have written the main part of the book informally, both to reach a wider audience and to argue more convincingly that Computational Logic is useful for human thinking."
_delirium · 2011-08-24
Robert Kowalski (1979). "Algorithm = Logic + Control". Communications of the ACM 22(7): 424-436. http://www.doc.ic.ac.uk/~rak/papers/algorithm%20=%20logic%20+%20contro…
(It's the paper that originated Prolog, but is also more broadly interesting for its analysis of, well, algorithms as logic plus control.)
mbrock · 2015-11-06
Very interesting. The demo on pp 376 looks useful.
From the conclusion:
> The British Nationality Act 1981 has also proved to be a rich source of problems for the use of logic for knowledge representation. It has highlighted problems with negation as failure and counterfactual conditions in particular. We believe that the formalization of legislation and the development of computer systems to assist with legal problem solving and decision making provide a rich domain for developing and testing artificial intelligence technology. More tentatively, the accumulated experience of managing complex systems of law may teach us something about the maintenance of large bodies of complex software.
Here's another paper by one of the authors, "Legislation as Logic Programs" from 1991: http://www.doc.ic.ac.uk/~rak/papers/law.html
> In addition to the resemblance between legislation and programs, the law has other important similarities with computing. It needs for example to validate legislation against social and political specifications, and it needs to organise, develop, maintain and reuse large and complex bodies of legal codes and procedures. Such parallels between computing and law suggest that it might be possible to transfer useful results and techniques in both directions between these different fields. One possibility explored in this paper is that the linguistic structures of an appropriately extended logic programming language might indicate ways in which the language…