object

# `streamvars`

Stream variables (supporting logical, backtracable, adding and retrieving of terms).

Author: Nobukuni Kino and Paulo Moura
Version: 1.3
Date: 2019/6/15
Compilation flags:
`static, context_switching_calls`
Dependencies:
(none)
Remarks:
(none)

- Public predicates

  - `new/1`

  - `new/2`

  - `(<=)/2`

  - `(=>)/2`

- Protected predicates

- Private predicates

- Operators

  - `op(100,xfx,<=)`

  - `op(100,xfx,=>)`

## Public predicates

### `new/1`

Makes `Variable` a stream variable. Initial state will be empty.

Compilation flags:
`static`
Template:
`new(Variable)`
Mode and number of proofs:
`new(--streamvar)` - `one`
Exceptions:
Variable is not a variable:
`type_error(variable,Variable)`

### `new/2`

Makes `Variable` a stream variable and sets its initial state to `Value`.

Compilation flags:
`static`
Template:
`new(Variable,Value)`
Mode and number of proofs:
`new(--streamvar,@nonvar)` - `one`
Exceptions:
Variable is not a variable:
`type_error(variable,Variable)`

### `(<=)/2`

Sets the state of the stream variable `Variable` to `Value` (initializing the variable if needed).

Compilation flags:
`static`
Template:
`Variable<=Value`
Mode and number of proofs:
`(?streamvar)<=(@nonvar)` - `one`

### `(=>)/2`

Unifies `Value` with the current state of the stream variable `Variable`.

Compilation flags:
`static`
Template:
`Variable=>Value`
Mode and number of proofs:
`(+streamvar)=>(?nonvar)` - `zero_or_one`

## Protected predicates

(none)

## Private predicates

(none)

## Operators

### `op(100,xfx,<=)`

Scope:
`public`

### `op(100,xfx,=>)`

Scope:
`public`