true. :-false. b:-ap(1). ap(1):-ok(1). ap(2):-ok(2),b. ok(X):-name(X),oko(X,1),oko(X,2). bl(2):-ok(2),not b. a:-ap(2). 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). 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). false:-b,neg_b. false:-a,neg_a. false:-name(X),name(Y),prec(X,Y),neg_prec(X,Y). name(2). name(1).