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