true. :-false. bird:-true. swims:-true. neg_flies:-ap(1). flies:-ap(2). ap(1):-ok(1),not flies,penguin. ap(2):-ok(2),not neg_flies,bird. ap(3):-ok(3),not neg_penguin,bird,swims. ok(X):-name(X),oko(X,1),oko(X,2),oko(X,3). penguin:-ap(3). bl(1):-ok(1),flies. bl(1):-ok(1),not penguin. bl(2):-ok(2),neg_flies. bl(2):-ok(2),not bird. bl(3):-ok(3),neg_penguin. bl(3):-ok(3),not bird. bl(3):-ok(3),not swims. prec(2,1):-true. neg_prec(Y,X):-name(X),name(Y),prec(X,Y). prec(X,Z):-name(X),name(Z),name(Y),prec(X,Y),prec(Y,Z). oko(X,Y):-name(X),name(Y),not prec(X,Y). oko(X,Y):-name(X),name(Y),prec(X,Y),ap(Y). oko(X,Y):-name(X),name(Y),prec(X,Y),bl(Y). false:-bird,neg_bird. false:-swims,neg_swims. false:-flies,neg_flies. false:-penguin,neg_penguin. false:-name(X),name(Y),prec(X,Y),neg_prec(X,Y). name(3). name(2). name(1).