Solving problems using logic programming
Logic programming looks for solutions by using facts and rules. A goal must be specified for each program. When a logic program and a goal don't contain any variables, the solver comes up with a tree that constitutes the search space for solving the problem and getting to the goal.
One of the most important things about logic programming is how we treat the rules. Rules can be viewed as logical statements. Let's consider the following:
Kathy orders dessert => Kathy is happy
This can be read as an implication that says, If Kathy is happy, then Kathy orders dessert. It can also be construed as Kathy orders dessert whenever she is happy.
Similarly, let's consider the following rules and facts:
canfly(X) :- bird(X), not abnormal(X).
abnormal(X) :- wounded(X).
bird(john).
bird(mary).
wounded(john).
Here is how to interpret the rules and facts:
- John is wounded
- Mary is a bird
- John...