#### 11.3.71 `^ /2`

#### Synopsis

`+X` `^`

`+P`

Equivalent to “there exists an `X` such that `P` is
true”, thus `X` is normally an unbound variable. The use of the
explicit existential quantifier outside `setof/3`

and `bagof/3`

is superfluous.

#### Arguments

`X`- term

`:P`- callable, must be nonvar

#### Description

Equivalent to simply calling `P`.

#### Backtracking

Depends on `P`.

#### Exceptions

Call errors (see ref-sem-exc).

#### Examples

Using `bagof/3`

without and with the existential quantifier:

| ?- `bagof(X, foo(X,Y), L).`
X = _3342,
Y = 2,
L = [1,1] `;`
X = _3342,
Y = 3,
L = [2] `;`
no
| ?- `bagof(X, Y^foo(X,Y), L).`
X = _3342,
Y = _3361,
L = [1,1,2] `;`
no

#### See Also

`setof/3`

, `bagof/3`

, ref-all.

Send feedback on this subject.