Para fazer a Gestão de cada Hotel ligado a uma Central de Reservas, construiu-se a seguinte base de factos (BF):
% cargo(C) :- o nome C define um cargo profissional em hotelaria.
cargo(director).
cargo(recepcionista).
cargo(grumete).
cargo(governanta).
cargo(barman).
% exerceCargo(P,C,H) :- a pessoa P exerce o cargo C no hotel H.
exerceCargo(pedro,grumete,ibis).
exerceCargo(delfim,director,penta).
exerceCargo(mario,barman,alfa).
exerceCargo(zezinha,governanta,afonso5).
exerceCargo(analia,recepcionista,ibis).
exerceCargo(luis,recepcionista,penta).
% manda(C,S) :- a pessoa que exerce o cargo C 'e
o chefe directo da pessoa que exerce o cargo S.
manda(director,recepcionista).
manda(director,governanta).
manda(recepcionista,grumete).
manda(governanta,barman).
% dormeMuito(P) :- a pessoa P dorme muitas horas.
dormeMuito(antonio).
dormeMuito(sandra).
% deita(P,H) :- a pessoa P deita-se as H horas.
deita(antonio,0).
deita(ana,03).
deita(sandra,22).
% hospedada(P,H) :- a pessoa P esta hospedada no hotel H.
hospedada(antonio,penta).
hospedada(ana,ibis).
hospedada(sandra,afonso5).
e o seguinte programa Prolog:
% chamaBarman(P) :-
% a pessoa P chama por um barman.
chamaBarman(P) :- dormeMuito(P).
chamaBarman(P) :- deitaTarde(P).
chamaBarman(P) :- mandadoPor(barman,P).
% mandadoPor(S,C) :-
% a pessoa S recebe ordens (directas ou nao) de C.
mandadoPor(S,C) :- manda(C,S), !.
mandadoPor(S,C) :- manda(C1,S), mandadoPor(C1,C).
deitaTarde(P) :- deita(P,H), H>0, H<12.
Responda, então, às alíneas seguintes:
mandadoPor(grumete,director).
exerceCargo(Quem,OQue,ibis).
chamaBarman(ana).
manda1(Nome1,Nome2)
que permita saber que a pessoa Nome1 manda directamente na pessoa Nome2, atendendo ao cargo que exercem e ao local de trabalho (o hotel terá de ser o mesmo).