protocol

# `hierarchyp`

Common hierarchy protocol for prototype and class hierarchies.

Author: Paulo Moura
Version: 1.0
Date: 2000/7/24
Compilation flags:
`static`

(no dependencies on other entities)

## Public interface

### `ancestor/1`

Returns, by backtracking, all object ancestors.

Compilation flags:
`static`
Template:
`ancestor(Ancestor)`
Mode and number of proofs:
`ancestor(?object)` - `zero_or_more`

### `ancestors/1`

List of all object ancestors.

Compilation flags:
`static`
Template:
`ancestors(Ancestors)`
Mode and number of proofs:
`ancestors(-list)` - `one`

### `leaf/1`

Returns, by backtracking, all object leaves.

Compilation flags:
`static`
Template:
`leaf(Leaf)`
Mode and number of proofs:
`leaf(?object)` - `zero_or_more`

### `leaves/1`

List of all object leaves.

Compilation flags:
`static`
Template:
`leaves(Leaves)`
Mode and number of proofs:
`leaves(-list)` - `one`

### `descendant/1`

Returns, by backtracking, all object descendants.

Compilation flags:
`static`
Template:
`descendant(Descendant)`
Mode and number of proofs:
`descendant(?object)` - `zero_or_more`

### `descendants/1`

List of all object descendants.

Compilation flags:
`static`
Template:
`descendants(Descendants)`
Mode and number of proofs:
`descendants(-list)` - `one`

## Protected interface

(none)

## Private predicates

(none)

## Operators

(none)

## Remarks

(none)