[ library(sd) | Reference Manual | Alphabetic Index ]
# ?X &= ?Y

X is the same atomic value as Y
*X*
- Variable or atomic value
*Y*
- Variable or atomic value

## Description

Constrains X and Y to be the same. This is very similar to unifying
X and Y, except in the case where X and Y are both variables. While
unification turns the two variables into one, this constraint preserves
the separate variables but constrains them to be equal.
## Examples

?- X &:: [red,green,blue], X &= red.
X = red
Yes (0.00s cpu)
?- X &:: [red,green,blue], X &= yellow.
No (0.00s cpu)
?- [X, Y] &:: [red,green,blue], X &= Y.
X = X{[blue, green, red]}
Y = Y{[blue, green, red]}
There is 1 delayed goal.
Yes (0.00s cpu)
?- X &:: [red,green,blue], X &= Y.
X = X{[blue, green, red]}
Y = Y{[blue, green, red]}
There is 1 delayed goal.
Yes (0.00s cpu)
?- X &:: [red,green,blue], Y &:: [blue,yellow,green], X &= Y.
X = X{[blue, green]}
Y = Y{[blue, green]}
There is 1 delayed goal.
Yes (0.00s cpu)
?- X &:: [red, green, blue], Y &:: [blue, yellow, brown], X &= Y.
X = blue
Y = blue
Yes (0.00s cpu)
?- red &= red.
Yes (0.00s cpu)
?- X &= red.
X = red
Yes (0.00s cpu)

## See Also

&= / 3, &\= / 2