|
Slide 14.24: Rules (cont.) Slide 14.26: Rules (cont.) Home |
|
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.)
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.
?- fun( What ).
To which Prolog will reply
What = vw_beatle yesFirstly 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.