
:- object(heuristic_state_space,
	instantiates(class),
	specializes(state_space)).


	:- info([
		version is 1.0,
		author is 'Paulo Moura',
		date is 1998/3/23,
		comment is 'Heuristic state space.']).


	:- public(next_state/3).

	:- mode(next_state(+nonvar, -nonvar, -number), zero_or_more).

	:- info(next_state/2,
		[comment is 'Generates a state sucessor.',
		 argnames is ['State', 'Next', 'Cost']]).


	:- public(heuristic/2).

	:- mode(heuristic(+nonvar, -number), one).

	:- info(heuristic/2,
		[comment is 'Estimates state distance to a goal state.',
		 argnames is ['State', 'Estimate']]).


	next_state(Prev, Next) :-
		::next_state(Prev, Next, _).


:- end_object.
