## TPTP Problem File: PUZ031-1.p

View Solutions - Solve Problem

```%------------------------------------------------------------------------------
% File     : PUZ031-1 : TPTP v8.0.0. Released v1.0.0.
% Domain   : Puzzles
% Problem  : Schubert's Steamroller
% Version  : Especial.
% English  : Wolves, foxes, birds, caterpillars, and snails are animals, and
%            there are some of each of them. Also there are some grains, and
%            grains are plants. Every animal either likes to eat all plants
%            or all animals much smaller than itself that like to eat some
%            plants. Caterpillars and snails are much smaller than birds,
%            which are much smaller than foxes, which in turn are much
%            smaller than wolves. Wolves do not like to eat foxes or grains,
%            while birds like to eat caterpillars but not snails.
%            Caterpillars and snails like to eat some plants. Therefore
%            there is an animal that likes to eat a grain eating animal.

% Refs     : [Sti86] Stickel (1986), Schubert's Steamroller Problem: Formul
%          : [Pel86] Pelletier (1986), Seventy-five Problems for Testing Au
%          : [WB87]  Wang & Bledsoe (1987), Hierarchical Deduction
%          : [MB88]  Manthey & Bry (1988), SATCHMO: A Theorem Prover Implem
% Source   : [Pel86]
% Names    : Pelletier 47 [Pel86]
%          : steamroller.ver1.in [ANL]
%          : steam.in [OTTER]
%          : SST [WB87]

% Status   : Unsatisfiable
% Rating   : 0.00 v7.1.0, 0.17 v7.0.0, 0.12 v6.3.0, 0.14 v6.2.0, 0.00 v2.2.1, 0.25 v2.1.0, 0.00 v2.0.0
% Syntax   : Number of clauses     :   26 (   6 unt;   1 nHn;  26 RR)
%            Number of literals    :   63 (   0 equ;  40 neg)
%            Maximal clause size   :    8 (   2 avg)
%            Maximal term depth    :    2 (   1 avg)
%            Number of predicates  :   10 (  10 usr;   0 prp; 1-2 aty)
%            Number of functors    :    8 (   8 usr;   6 con; 0-1 aty)
%            Number of variables   :   33 (   0 sgn)
% SPC      : CNF_UNS_RFO_NEQ_NHN

% Comments : This problem is named after Len Schubert.
%------------------------------------------------------------------------------
cnf(wolf_is_an_animal,axiom,
( animal(X)
| ~ wolf(X) ) ).

cnf(fox_is_an_animal,axiom,
( animal(X)
| ~ fox(X) ) ).

cnf(bird_is_an_animal,axiom,
( animal(X)
| ~ bird(X) ) ).

cnf(caterpillar_is_an_animal,axiom,
( animal(X)
| ~ caterpillar(X) ) ).

cnf(snail_is_an_animal,axiom,
( animal(X)
| ~ snail(X) ) ).

cnf(there_is_a_wolf,axiom,
wolf(a_wolf) ).

cnf(there_is_a_fox,axiom,
fox(a_fox) ).

cnf(there_is_a_bird,axiom,
bird(a_bird) ).

cnf(there_is_a_caterpillar,axiom,
caterpillar(a_caterpillar) ).

cnf(there_is_a_snail,axiom,
snail(a_snail) ).

cnf(there_is_a_grain,axiom,
grain(a_grain) ).

cnf(grain_is_a_plant,axiom,
( plant(X)
| ~ grain(X) ) ).

cnf(eating_habits,axiom,
( eats(Animal,Plant)
| eats(Animal,Small_animal)
| ~ animal(Animal)
| ~ plant(Plant)
| ~ animal(Small_animal)
| ~ plant(Other_plant)
| ~ much_smaller(Small_animal,Animal)
| ~ eats(Small_animal,Other_plant) ) ).

cnf(caterpillar_smaller_than_bird,axiom,
( much_smaller(Catapillar,Bird)
| ~ caterpillar(Catapillar)
| ~ bird(Bird) ) ).

cnf(snail_smaller_than_bird,axiom,
( much_smaller(Snail,Bird)
| ~ snail(Snail)
| ~ bird(Bird) ) ).

cnf(bird_smaller_than_fox,axiom,
( much_smaller(Bird,Fox)
| ~ bird(Bird)
| ~ fox(Fox) ) ).

cnf(fox_smaller_than_wolf,axiom,
( much_smaller(Fox,Wolf)
| ~ fox(Fox)
| ~ wolf(Wolf) ) ).

cnf(wolf_dont_eat_fox,axiom,
( ~ wolf(Wolf)
| ~ fox(Fox)
| ~ eats(Wolf,Fox) ) ).

cnf(wolf_dont_eat_grain,axiom,
( ~ wolf(Wolf)
| ~ grain(Grain)
| ~ eats(Wolf,Grain) ) ).

cnf(bird_eats_caterpillar,axiom,
( eats(Bird,Catapillar)
| ~ bird(Bird)
| ~ caterpillar(Catapillar) ) ).

cnf(bird_dont_eat_snail,axiom,
( ~ bird(Bird)
| ~ snail(Snail)
| ~ eats(Bird,Snail) ) ).

cnf(caterpillar_food_is_a_plant,axiom,
( plant(caterpillar_food_of(Catapillar))
| ~ caterpillar(Catapillar) ) ).

cnf(caterpillar_eats_caterpillar_food,axiom,
( eats(Catapillar,caterpillar_food_of(Catapillar))
| ~ caterpillar(Catapillar) ) ).

cnf(snail_food_is_a_plant,axiom,
( plant(snail_food_of(Snail))
| ~ snail(Snail) ) ).

cnf(snail_eats_snail_food,axiom,
( eats(Snail,snail_food_of(Snail))
| ~ snail(Snail) ) ).

cnf(prove_the_animal_exists,negated_conjecture,
( ~ animal(Animal)
| ~ animal(Grain_eater)
| ~ grain(Grain)
| ~ eats(Animal,Grain_eater)
| ~ eats(Grain_eater,Grain) ) ).

%------------------------------------------------------------------------------
```