protocol

# `hierarchyp`

Common hierarchy protocol for prototype and class hierarchies.

Author: Paulo Moura
Version: 1:0:0
Date: 2000-07-24
Compilation flags:
`static`
Dependencies:
(none)
Remarks:
(none)
Inherited public predicates:
(none)

- Public predicates

  - `ancestor/1`

  - `ancestors/1`

  - `leaf/1`

  - `leaves/1`

  - `descendant/1`

  - `descendants/1`

- Protected predicates

- Private predicates

- Operators

## Public predicates

### `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 predicates

(none)

## Private predicates

(none)

## Operators

(none)