% Figure 17.3 A definition of the planning space for manipulating camera. % Planning space for getting camera ready % Opening the case can( open_case, [camera_in_case]). adds( open_case, [camera_outside_case]). deletes( open_case, [camera_in_case]). % Closing the case can( close_case, [camera_outside_case, slot_closed( film), slot_closed( battery)]). adds( close_case, [camera_in_case]). deletes( close_case, [camera_outside_case]). % Opening a slot can( open_slot( X), [camera_outside_case, slot_closed( X)]). adds( open_slot( X), [slot_open( X)]). deletes( open_slot( X), [slot_closed( X)]). % Closing a slot can( close_slot( X), [camera_outside_case, slot_open( X)]). adds( close_slot( X), [slot_closed( X)]). deletes( close_slot( X), [slot_open( X)]). % Rewinding film can( rewind, [camera_outside_case, in( film), film_at_end]). adds( rewind, [film_at_start]). deletes( rewind, [film_at_end]). % Removing battery or film can( remove( battery), [slot_open( battery), in( battery)]). can( remove( film), [slot_open( film), in( film), film_at_start]). adds( remove( X), [slot_empty( X)]). deletes( remove( X), [in( X)]). % Inserting new battery or film can( insert_new( X), [slot_open( X), slot_empty( X)]). adds( insert_new( battery), [in( battery), ok( battery)]). adds( insert_new( film), [in( film), film_at_start, film_unused]). deletes( insert_new( X), [slot_empty( X)]). % Taking pictures can( take_pictures, [in( film), film_at_start, film_unused, in( battery), ok( battery), slot_closed( film), slot_closed( battery)]). adds( take_pictures, [film_at_end]). deletes( take_pictures, [film_at_start, film_unused]). % A state with film used and battery weak (note: battery is % assumed weak because ok( battery) is not included in the state) state1( [camera_in_case, slot_closed( film), slot_closed( battery), in( film), film_at_end, in( battery)]).