Understanding the building blocks of logic programming
In programming object-oriented or imperative paradigms, a variable always needs to be defined. In logic programming, things work a bit differently. An uninstantiated argument can be passed to a function and the interpreter will instantiate these variables by looking at the facts defined by the user. This is a powerful way of approaching the variable matching problem. The process of matching variables with different items is called unification. This is one of the ways logic programming is different. Relations can also be specified in logic programming. Relations are defined by means of clauses called facts and rules.
Facts are just statements that are truths about the program and the data. The syntax is straightforward. For example, Donald is Allan's son is a fact, whereas Who is Allan's son? is not be a fact. Every logic program needs facts so that it can achieve the given goal based on them.
Rules are...