penguin(tweety). water_shy(tweety). emu(opus). toy(scully). bird(scully). bird(opus) :- emu(opus). bird(scully) :- emu(scully). bird(tweety) :- emu(tweety). bird(opus) :- penguin(opus). bird(scully) :- penguin(scully). bird(tweety) :- penguin(tweety). flies(opus) :- ap(r1_opus). flies(scully) :- ap(r1_scully). flies(tweety) :- ap(r1_tweety). neg_flies(opus) :- ap(r2_opus). neg_flies(scully) :- ap(r2_scully). neg_flies(tweety) :- ap(r2_tweety). neg_flies(opus) :- ap(r3_opus). neg_flies(scully) :- ap(r3_scully). neg_flies(tweety) :- ap(r3_tweety). neg_flies(opus) :- ap(r4_opus). neg_flies(scully) :- ap(r4_scully). neg_flies(tweety) :- ap(r4_tweety). ap(r1_opus) :- ok(r1_opus), not neg_flies(opus), bird(opus). ap(r1_scully) :- ok(r1_scully), not neg_flies(scully), bird(scully). ap(r1_tweety) :- ok(r1_tweety), not neg_flies(tweety), bird(tweety). ap(r2_opus) :- ok(r2_opus), not flies(opus), penguin(opus). ap(r2_scully) :- ok(r2_scully), not flies(scully), penguin(scully). ap(r2_tweety) :- ok(r2_tweety), not flies(tweety), penguin(tweety). ap(r3_opus) :- ok(r3_opus), not flies(opus), emu(opus). ap(r3_scully) :- ok(r3_scully), not flies(scully), emu(scully). ap(r3_tweety) :- ok(r3_tweety), not flies(tweety), emu(tweety). ap(r4_opus) :- ok(r4_opus), not flies(opus), toy(opus). ap(r4_scully) :- ok(r4_scully), not flies(scully), toy(scully). ap(r4_tweety) :- ok(r4_tweety), not flies(tweety), toy(tweety). ok(X) :- name(X), oko(X, r1_opus), oko(X, r1_scully), oko(X, r1_tweety), oko(X, r2_opus), oko(X, r2_scully), oko(X, r2_tweety), oko(X, r3_opus), oko(X, r3_scully), oko(X, r3_tweety), oko(X, r4_opus), oko(X, r4_scully), oko(X, r4_tweety). bl(r1_opus) :- ok(r1_opus), neg_flies(opus). bl(r1_opus) :- ok(r1_opus), not bird(opus). bl(r1_scully) :- ok(r1_scully), neg_flies(scully). bl(r1_scully) :- ok(r1_scully), not bird(scully). bl(r1_tweety) :- ok(r1_tweety), neg_flies(tweety). bl(r1_tweety) :- ok(r1_tweety), not bird(tweety). bl(r2_opus) :- ok(r2_opus), flies(opus). bl(r2_opus) :- ok(r2_opus), not penguin(opus). bl(r2_scully) :- ok(r2_scully), flies(scully). bl(r2_scully) :- ok(r2_scully), not penguin(scully). bl(r2_tweety) :- ok(r2_tweety), flies(tweety). bl(r2_tweety) :- ok(r2_tweety), not penguin(tweety). bl(r3_opus) :- ok(r3_opus), flies(opus). bl(r3_opus) :- ok(r3_opus), not emu(opus). bl(r3_scully) :- ok(r3_scully), flies(scully). bl(r3_scully) :- ok(r3_scully), not emu(scully). bl(r3_tweety) :- ok(r3_tweety), flies(tweety). bl(r3_tweety) :- ok(r3_tweety), not emu(tweety). bl(r4_opus) :- ok(r4_opus), flies(opus). bl(r4_opus) :- ok(r4_opus), not toy(opus). bl(r4_scully) :- ok(r4_scully), flies(scully). bl(r4_scully) :- ok(r4_scully), not toy(scully). bl(r4_tweety) :- ok(r4_tweety), flies(tweety). bl(r4_tweety) :- ok(r4_tweety), not toy(tweety). prec(r1_opus, r2_opus) :- not water_shy(opus). prec(r1_scully, r2_scully) :- not water_shy(scully). prec(r1_tweety, r2_tweety) :- not water_shy(tweety). prec(r1_opus, r3_opus). prec(r1_scully, r3_scully). prec(r1_tweety, r3_tweety). 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 :- penguin(X), neg_penguin(X). false :- water_shy(X), neg_water_shy(X). false :- emu(X), neg_emu(X). false :- toy(X), neg_toy(X). false :- bird(X), neg_bird(X). false :- flies(X), neg_flies(X). false :- name(X), name(Y), prec(X, Y), neg_prec(X, Y). name(r4_tweety). name(r4_scully). name(r4_opus). name(r3_tweety). name(r3_scully). name(r3_opus). name(r2_tweety). name(r2_scully). name(r2_opus). name(r1_tweety). name(r1_scully). name(r1_opus).