:- protocol(proto_hierarchyp,
	extends(hierarchyp)).

	:- info([
		version is 1.1,
		author is 'Paulo Moura',
		date is 2006/2/20,
		comment is 'Prototype hierarchy protocol.']).

	:- public(parent/1).
	:- mode(parent(?object), zero_or_more).
	:- info(parent/1, [
		comment is 'Returns, by backtracking, all object parents.',
		argnames is ['Parent']]).

	:- public(parents/1).
	:- mode(parents(-list), one).
	:- info(parents/1, [
		comment is 'List of all object parents.',
		argnames is ['Parents']]).

	:- public(extension/1).
	:- mode(extension(?object), zero_or_more).
	:- info(extension/1, [
		comment is 'Returns, by backtracking, all object direct descendants.',
		argnames is ['Extension']]).

	:- public(extensions/1).
	:- mode(extensions(-list), one).
	:- info(extensions/1, [
		comment is 'List of all object direct descendants.',
		argnames is ['Extensions']]).

:- end_protocol.