Pointers: http://www.cse.unsw.edu.au/~quinlan/
Code:C source code
References:Quinlan 1996

FFOIL is a derivative of FOIL that is specialised on learning functional relations. A functional relation is a relation where one or more arguments are distinguished as output arguments, and in any tuple of constants belonging to the relation the values of the output arguments are uniquely determined by the values of the other arguments. FFOIL is restricted on learning functions with a single output argument.

Conceptually, FFOIL is rather close to FOIL, as the general search strategy as well as the criterion for selecting literals (that is, the information gain heuristic) remain unchanged. The most fundamental difference concerns the interpretation and evaluation of the partial clauses that are taken into consideration during the search process where FFOIL, in contrast to FOIL, takes into account the special role of the output variable. As this affects the computation of the information gain of a literal, the clauses derived by FFOIL generally differ from those learned by FOIL. Another consequence of the modification is that the clauses found by FFOIL have to be interpreted in the order in which they were derived, and each clause has to be ended with a cut (`!'). Thus, the clauses found by FFOIL make up a decision list. When answering a query, the decision list returns the answer of the first clause in the ordered list which succeeds in answering the query. In contrast, the order is not crucial for the clauses found by FOIL. I.W. moved explanation of decision lists from Foidl to Ffoil Being the more general approach, FOIL is able to learn functional relations as well, but the specialised version FFOIL performs better on the more special task in several respects. FFOIL does not require negative examples, and it derives clauses where the output variable is guaranteed to be bound. Furthermore, FFOIL often finds programs that execute more efficiently than those found by FOIL. Finally, FFOIL generally requires less time for learning than FOIL.


  1. J.R. Quinlan. Learning first-order definitions of functions. Journal of Artificial Intelligence Research, 5:139-161, 1996.

back to index