Logic programming is a programming style based on mathematical logic.
The logic for logic programming is the first-order predicate calculus or logic:
First-order predicate calculus is a way of formally expressing logical statements, that is, statements that are either true or false.
For example, the following English statements are logical statements:
- 0 is a natural number.
- 2 is a natural number.
- For all
x
, if x
is a natural number, then so is the successor of x
.
- -1 is a natural number.
A translation into predicate calculus is as follows:
natural( 0 ).
natural( 2 ).
For all x, natural(x) → natural( successor( x ) ).
natural( -1 ).
Among these logical statements, the first and third statement can be viewed as axioms for the natural numbers:
statements that are assumed to be true and from which all true statements about natural numbers can be proved.
Indeed, the second statement can be proved from these axioms, since
2 = successor( successor( 0 ) ) and
natural( 0 )
→ natural( successor( 0 ) )
→ natural( successor( successor( 0 ) ) ).
The fourth statement, on the other hand, cannot be proved from the axioms and so can be assumed to be false.