% Ancestors of Marc and the generation gap. % Chap 10.4, Advanced Database Systems, C. Zaniolo et al. % database( { parent(string, string) }). export delta_ancestor(A, B). delta_ancestor(0, marc). delta_ancestor(J+1, Y) <- delta_ancestor(J, X), parent(Y, X), ~all_ancestor(J, Y, _). all_ancestor(J+1, X, Y) <- all_ancestor(J, X, Y). all_ancestor(J, X, X) <- delta_ancestor(J, X).