bird(b1). penguin(p1). bird(X) :- penguin(X). flies(X) :- bird(X), not -flies(X). -flies(X) :- penguin(X). % these rules with function symbols cause dlv not to terminate. % regardless of where we put these rules in the file bird(f(X)) :- bird(X). penguin(f(X)) :- penguin(X). % nflies(X) :- -flies(X). % nflies(p1) ? flies(b1) ?