Var{Name1:Attr1, Name2:Attr2, …, Namen:Attrn}where the syntax of Var is like that of a variable, Namei are attribute names and Attri are the values of the corresponding attributes. The expression Var{Attr} is a shorthand for Var{Module:Attr} where Module is the current module name. The former is called unqualified and the latter qualified attribute specification. As the attribute name is usually identical with the source module name, all occurrences of an attributed variable in the source module may use the unqualified specification.
orp(X, X{attr:Attr})
both describe the same term, which has two occurrences of a single attributed variable with attribute attr:Attr. The following is a syntax error (even when the attributes are identical):p(X{attr:Attr}, X)
p(X{attr:Attr}, X{attr:Attr})