как в программе, используя предикаты n1 и fail, сделать так, чтобы при использовании предиката fact выводились множественные решения. 
isa(hotel,object).
isa(room,object).
isa(customer,object).
isa(accommodation,action).
isa(booking,action).
isa(reception,personnel).
isa(service,object).
isa(food,service).
isa(residence,action).
isa(staff,personnel).
isa(pet_residence,residence).
isa(equipment,service).
isa(additional_service,service).
isa(document,object).

has(hotel,room).
has(hotel,reception).
has(hotel,staff).
has(room,customer).
has(room,residence).
has(room,equipment).
has(room,additional_service).
has(customer,accommodation).
has(customer,booking).
has(reception,accommodation).
has(reception,service).
has(reception,document).
has(service,food).
has(service,additional_service).
has(staff,accommodation).
has(pet_residence,customer).
has(pet_residence,person).
has(document,customer).
has(document,staff).

help_number(hotel,111).
help_number(room,111).
help_number(customer,222).
help_number(accommodation,111).
help_number(booking,111).
help_number(reception,222).
help_number(service,222).
help_number(food,333).
help_number(residence,111).
help_number(staff,222).
help_number(pet_residence,444).
help_number(equipment,555).
help_number(additional_service,555).
help_number(document,555).

fact(Fact) :-
Fact,!.
fact(Fact) :-
Fact=[Rel, Arg1, Arg2],
has(Arg1,SuperArg),
SuperFact=(Rel, SuperArg, Arg2),
fact(SuperFact).
find_facts(Fact) :-
Fact,
write(Fact), nl,
fail.
find_facts([Rel, Arg1, Arg2]) :-
has(Arg1, SuperArg),
SuperFact=[Rel, SuperArg, Arg2],
find_facts(SuperFact).
