Slide 14.24: Rules (cont.)
Slide 14.26: Rules (cont.)
Home

Rules (Cont.)


   fun( X ) :- red( X ),  car( X ).
   fun( X ) :- blue( X ), bike( X ).
   car( vw_beatle ).
   car( ford_escort ).
   bike( harley_davidson ).
   red( vw_beatle ).
   red( ford_escort ).
   blue( harley_davidson ).
Examples of Rule I (Cont.)
Let's now use the above program and see if a harley_davidson is fun. To do this we can ask Prolog the following question.
   ?- fun(harley_davidson).  /* to which Prolog will reply */
   yes           /* to show the program succeeded */
Prolog first sees if harley_davidson is red, however only vw_beatles and ford_escorts are red. Hence the query red(harley_davidson) will fail. This means that the first clause of fun will fail. As a result, we now try the second clause of fun. This will mean that we will attempt the subgoals blue(harley_davidson) and bike(harley_davidson). Both these goals match facts in the database. As a result fun succeeds as we saw above.

Examples of Rule II
We can also ask our program to find fun items for us. To do this we can pose the following question.
   ?- fun( What ).
To which Prolog will reply
   What = vw_beatle
   yes
Firstly Prolog will try the first clause of fun. This results in trying the goal red(What). This succeeds matching the first clause of red with the binding What=vw_beatle. Now attempt the goal car(vw_beatle). This matches the first clause of car, and, as a result, the fun goal succeeds.