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 s(CASP) not to terminate. % regardless of where we put these rules in the file bird(f(X)) :- bird(X). penguin(f(X)) :- penguin(X). % ?- -flies(b1). ?- flies(b1).