Space planner
Description
A definition of the planning space for the blocks world.
Source: PROLOG programming for artificial intelligence, 3rd Edition, Harlow, 2001, ISBN 0-201-40375-7.
Download
Listing
% Figure 17.2 A definition of the planning space for the blocks world.
% Note: For compatibility with Sicstus Prolog, predicate block/1 in Figure 17.2
% is here replaced by is_block/1.
% Definition of action move( Block, From, To) in blocks world
% can( Action, Condition): Action possible if Condition true
can( move( Block, From, To), [ clear( Block), clear( To), on( Block, From)] ) :-
is_block( Block), % Block to be moved
object( To), % "To" is a block or a place
To \== Block, % Block cannot bå moved to itself
object( From), % "From" is a block or a place
From \== To, % Move to new position
Block \== From. % Block not moved from itself
% adds( Action, Relationships): Action establishes Relationships
adds( move(X,From,To), [ on(X,To), clear(From)]).
% deletes( Action, Relationships): Action destroys Relationships
deletes( move(X,From,To), [ on(X,From), clear(To)]).
object( X) :- % X is an objects if
place( X) % X is a place
; % or
is_block( X). % X is a block
% A blocks world
is_block( a).
is_block( b).
is_block( c).
place( 1).
place( 2).
place( 3).
place( 4).
% A state in the blocks world
%
% c
% a b
% ====
% place 1234
state1( [ clear(2), clear(4), clear(b), clear(c), on(a,1), on(b,3), on(c,a) ] ).