CSE 6363 Fall 2000

**Homework 6**

Due: November 21, 2000, 5:30pm (November 23, 2000, 5:30pm for -10%)

Due: November 21, 2000, 5:30pm (November 23, 2000, 5:30pm for -10%)

Version 6.4 of the FOIL inductive logic programming system is stored in the
directory `code/foil` in the class directory on `gamma2`. For more
information about the program, see the `MANUAL` file in the same
directory. FOIL is written in C, and the compiled version is in the file
`bin/foil6`.

For this homework, you will use FOIL to generate the following four logic
theories (or their logical equivalent). Generate an appropriate domain
(`.d`) file and run FOIL on each problem. You are encouraged to
experiment with the other options. For each problem turn in your domain
file, the FOIL output (or outputs if different options are tried), and a
discussion of the difference (if any) between the FOIL-induced logic
program and the versions below.

- 1.
- ancestor(X,Y) is true when X has ancestor Y. parent(X,Y) is
true when X has parent Y.
ancestor(X,Y) :- parent(X,Y). ancestor(X,Y) :- parent(X,Z), ancestor(Z,Y).

- 2.
- append(X,Y,Z) is true when Z is the list resulting from appending
list X to list Y. components(X,F,R) is true when F is the first (car) of
list X and R is the rest (cdr) of list X. The empty list is represented as
[ ].
append([ ],X,X). append(X,Y,Z) :- components(X,F,R), append(R,Y,W), components(Z,F,W).

- 3.
- factorial(X,Y) is true when Y = X!. decrement(X,W) is true when W =
X - 1. product(X,Z,Y) is true when Y = X * Z.
factorial(0,1). factorial(1,1). factorial(X,Y) :- decrement(X,W), factorial(W,Z), product(X,Z,Y).

- 4.
- play(Outlook,Temp,Humidity,Windy) is true when the argument values
represent a positive example from the file
`data/golf.data`.play(Outlook,Temp,Humidity,Windy) :- Outlook = overcast. play(Outlook,Temp,Humidity,Windy) :- Outlook = sunny, Humidity <= 75. play(Outlook,Temp,Humidity,Windy) :- Outlook = rain, Windy = false.