The most important task of a programmer (at least till now) can be characterized as filling the gap g below:
Specification of a problem (Cannot be run) ← g → Program (Can be run)
Logic programming (LP) tends to reduce this gap (and possibly obtain g = 0) when the specification is given in a logical language (or a language close to a logical one).
It envisions calculus as a controlled deduction. This is related to the paradigm:
In LP, the emphasis is put on what the program computes and paying as little attention as possible to how it computes. It is a declarative form of programming (as opposed to imperative programming).
We give a first glimpse of such a type of programming.
EXAMPLE 6.1.– Imagine that in the following graph, we want to know whether there are paths from A to I, and if so, which ones.
a) We describe the graph using a unary predicate (which corresponds to a property).
Att(x): x is attainable
Att(A); % Must not be forgotten!
Two essential questions:
i) which inference ...