animal(x).
Fox(x) -> animal(x).
Bird(x) -> animal(x).
Caterpillar(x) -> animal(x).
Snail(x) -> animal(x).
Grain(x) -> plant(x).
(exists x Wolf(x)).
(exists x Fox(x)).
(exists x Bird(x)).
(exists x Caterpillar(x)).
(exists x Snail(x)).
(exists x Grain(x)).
(all x (animal(x) -> (all y (plant(y) -> eats(x,y))) | (all z (animal(z) & Smaller(z,x) & (exists u (plant(u) & eats(z,u))) -> eats(x,z))))).
Caterpillar(x) & Bird(y) -> Smaller(x,y).
Snail(x) & Bird(y) -> Smaller(x,y).
Bird(x) & Fox(y) -> Smaller(x,y).
Fox(x) & Wolf(y) -> Smaller(x,y).
Bird(x) & Caterpillar(y) -> eats(x,y).
Caterpillar(x) -> (exists y (plant(y) & eats(x,y))).
Wolf(x) & Fox(y) -> -eats(x,y).
Wolf(x) & Grain(y) -> -eats(x,y).
Bird(x) & Snail(y) -> -eats(x,y).
end_of_list.
formulas(goals).
(exists x exists y (animal(x) & animal(y) & eats(x,y) & (all z (Grain(z) -> eats(y,z))))).
end_of_list.
]]>
0
0
0
1
0
0
012
000
012
100
012
010
012
100
012
101
012
100
012
100
012
110
012
101
012
0 020
1 000
2 000
012
0 100
1 100
2 000
012
0 010
1 100
2 000