protocol

# heapp

> Heap protocol.

author:
  `Richard O'Keefe; adapted to Logtalk by Paulo Moura and Victor Lagerkvist.`
version:
  `1.01`
date:
  `2010/11/13`

compilation flags:
  `static`

(no dependencies on other files)

## Public interface

### insert/4

> Inserts the new Key-Value pair into a heap, returning the updated heap.

compilation flags:
  `static`
template:
  `insert(Key,Value,Heap,NewHeap)`
mode – number of proofs:
  `insert(+key,+value,+heap,-heap) – one`

### insert_all/3

> Inserts a list of Key-Value pairs into a heap, returning the updated heap.

compilation flags:
  `static`
template:
  `insert_all(List,Heap,NewHeap)`
mode – number of proofs:
  `insert_all(@list(pairs),+heap,-heap) – one`

### delete/4

> Deletes and returns the top Key-Value pair in OldHeap and the resulting NewHeap.

compilation flags:
  `static`
template:
  `delete(Heap,Key,Value,NewHeap)`
mode – number of proofs:
  `delete(+heap,?key,?value,-heap) – zero_or_one`

### merge/3

> Merges two heaps.

compilation flags:
  `static`
template:
  `merge(Heap1,Heap2,NewHeap)`
mode – number of proofs:
  `merge(+heap,+heap,-heap) – one`

### empty/1

> True if the heap is empty.

compilation flags:
  `static`
template:
  `empty(Heap)`
mode – number of proofs:
  `empty(@heap) – zero_or_one`

### size/2

> Returns the number of heap elements.

compilation flags:
  `static`
template:
  `size(Heap,Size)`
mode – number of proofs:
  `size(+heap,?integer) – zero_or_one`

### as_list/2

> Returns the current set of Key-Value pairs in the Heap as a List, sorted into ascending order of Keys.

compilation flags:
  `static`
template:
  `as_list(Heap,List)`
mode – number of proofs:
  `as_list(+heap,-list) – one`

### as_heap/2

> Constructs a Heap from a list of Key-Value pairs.

compilation flags:
  `static`
template:
  `as_heap(List,Heap)`
mode – number of proofs:
  `as_heap(+list,-heap) – one`

### top/3

> Returns the top Key-Value pair in Heap. Fails if the heap is empty.

compilation flags:
  `static`
template:
  `top(Heap,Key,Value)`
mode – number of proofs:
  `top(+heap,?key,?value) – zero_or_one`

### top_next/5

> Returns the top pair, Key1-Value1, and the next pair, Key2-Value2, in Heap. Fails if the heap does not have at least two elements.

compilation flags:
  `static`
template:
  `top_next(Heap,Key1,Value1,Key2,Value2)`
mode – number of proofs:
  `top_next(+heap,?key,?value,?key,?value) – zero_or_one`

## Protected interface

(none)

## Private predicates

(none)

## Operators

### (none)

## Remarks

### (none)