% Facts about animals animal(dog). animal(cat). animal(elephant). animal(lion). animal(tiger). animal(snake). animal(crocodile). animal(bird). animal(fish). % Facts about characteristics has_fur(dog). has_fur(cat). has_fur(lion). has_stripes(tiger). has_trunk(elephant). has_scales(snake). has_scales(crocodile). can_fly(bird). lives_in_water(fish). % Rules for classification mammal(X) :- animal(X), has_fur(X). mammal(X) :- animal(X), has_stripes(X). mammal(X) :- animal(X), has_trunk(X). reptile(X) :- animal(X), has_scales(X). bird(X) :- animal(X), can_fly(X). fish(X) :- animal(X), lives_in_water(X). % Classification predicate classify(X) :- mammal(X), write(X), write(' is a mammal.'), nl. classify(X) :- reptile(X), write(X), write(' is a reptile.'), nl. classify(X) :- bird(X), write(X), write(' is a bird.'), nl. classify(X) :- fish(X), write(X), write(' is a fish.'), nl. classify(X) :- write(X), write(' is an unknown animal.'), nl. % Initialization goal :- initialization(main). % Main goal main :- classify(elephant), classify(snake), classify(fish), classify(unicorn), halt.