Esercizio3 - codice prolog
planninges3.pl
—
text/x-perl,
1 kB (1675 bytes)
Contenuto del file
%Esercizio 3:
%%%%%%%%%%%%%%%%%%%%%%%
%Stato iniziale
%%%%%%%%%%%%%%%%%%%%%%%
holds(in(carico1,carrello1),s0).
holds(at(carrello1,milano), s0).
holds(connected(milano,bologna),s0).
holds(connected(bologna,roma),s0).
holds(carrello(carrello1),s0).
�
%%%%%%%%%%%%%%%%%%%%%%%
%Caricamento di un oggetto:
%%%%%%%%%%%%%%%%%%%%%%%
%effetti azione
holds(in(Oggetto,Carrello),do1(load(Oggetto,Carrello,Z),S)).
�
%Frame axiom
holds(V, do1(load(Oggetto,Carrello,Location),S)):-
holds(V,S),
V\==at(Oggetto,Location).
�
%Precondizioni
pact(load(Oggetto,Carrello,Location),S):-
holds(at(Oggetto,Location),S),
holds(at(Carrello,Location),S).
�
�
%%%%%%%%%%%%%%%%%%%%%%%
%Scaricamento di un oggetto:
%%%%%%%%%%%%%%%%%%%%%%%%effetti azione
holds(at(Ogg,Location),do1(unload(Ogg,Carrello,Location),S)).
�
%Frame axiom
holds(V, do1(unload(Oggetto,Carrello,Location), S)):-
holds(V,S),
V\== in(Oggetto,Carrello).
�
%Precondizioni
pact(unload(Oggetto,Carrello,Location),S):-
holds(in(Oggetto,Carrello),S),
holds(at(Carrello,Location),S).
�
�
%%%%%%%%%%%%%%%%%%%%%%%
%Trasporto
%%%%%%%%%%%%%%%%%%%%%%%
%effetti azione
holds(at(Carrello,Location2),do1(drive(Carrello,Location1,Location2),S)).
�
%Frame axiom
holds(V, do1(drive(Carrello,Location1,Location2),S)):-
holds(V,S),
V\== at(Carrello, Location1).
�
%Precondizioni
pact(drive(Carrello,Location1,Location2),S):-
holds(connected(Location1,Location2),S),
holds(at(Carrello,Location1),S),
holds(carrello(Carrello), S).
�
�
%Clausola per esprimere la raggiungibilit� di uno stato:
poss(s0).
poss(do1(U,S)):-
poss(S),
pact(U,S).