 when(@Condition, 
:Goal)
when(@Condition, 
:Goal)?=(X, Y), nonvar(X), ground(X),
,(Cond1, Cond2);(Cond1, 
Cond2)
The when/2 
predicate is realised using attributed variables associated with the 
module when. It is defined in the autoload library
library(when).