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)

Examples

To call both goals in the context of the object or category containing the call:
forall(Generator, Test)
To send both goals as messages to self:
forall(::Generator, ::Test)
To send both goals as messages to explicit objects:
forall(Object1::Generator, Object2::Test)