`forall/2`

¶

## Description¶

```
forall(Generator, Test)
```

For all solutions of `Generator`

, `Test`

is true. This meta-predicate
implements a *generate-and-test* loop using a definition equivalent to
`\+ (Generator, \+ Test)`

.

This built-in meta-predicate is declared as a private method and thus cannot be used as a message to an object.

## Modes and number of proofs¶

```
forall(@callable, @callable) - zero_or_one
```

## Errors¶

Either

`Generator`

or `Test`

is a variable:`instantiation_error`

`Generator`

is neither a variable nor a callable term:`type_error(callable, Generator)`

`Test`

is neither a variable nor a callable term:`type_error(callable, Test)`