fun( X ) :- red( X ), car( X ).
fun( X ) :- blue( X ), bike(X).
red( apple_1 ). /* database of red items */
red( block_1 ).
red( car_27 ).
car( desoto_48 ). /* database of cars */
car( edsel_57 ).
Search Step IV
Returning to our cars database, again block_1
will not match against desoto_48
or with edsel_57
.
In this case we must backtrack a second time to see if there is another red item that we can find.
This time we find the third clause in the database, and use that.
red( apple_1 ).
red( block_1 ).
red( car_27 ). /* third choice */
We now attempt the car
goal again, but this time for car_27
.
Now recall what we said earlier about the dangers of over estimating the powers of Prolog.
Prolog will try to match the goal car(car_27)
against the database
car( desoto_48 ).
car( edsel_57 ).
This will fail.
car_27
does not match with either desoto_48
or edsel_57
.
The following steps are taken next:
- Go back and see if there are any more possible red items.
- Well we have now exhausted all three choices, hence there are no more red items to choose from.
- Given that there are no more possible ways that we could satisfy clause 1, we now more on to clause 2, as we see on the next card.