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 ).
bike( iris_8 ).
bike( my_bike ).
bike( honda_81 ).
Search Step VI
We now have to prove the goal bike(flower_3)
against our bike database as above.
This again must fail, since flower_3
does not match against iris_8
, my_bike
, or honda_81
.
So as before, we must backtrack and find an alternate blue
item.
Recall our database:
blue( flower_3 ).
blue( glass_9 ).
blue( honda_81 ).
We have tried flower_3
without luck, so next we try the second blue fact, blue(glass_9)
.
- We now try goal
bike(glass_9)
.
Again this fails to unify.
- As a result we must go back yet again and find another blue object.
This time we will use the third clause of
blue
, blue(honda_81)
.
- The goal
bike(honda_81)
matches the clause three!.
So at last we have found something which is blue and a bike.
As a result we can now conclude that it is fun, Prolog then displays the following:
?- fun( What ).
What=honda_81
yes