This function that returns a Domain has the side-effect of declaring x and y:
axiom
MyPair(T:Domain):Domain=Record(x:T,y:T)
Category, domain or package constructor = is not available.
w:MyPair(Float)
Category, domain or package constructor MyPair is not available.
x
Type: Variable x
Type: Variable y
Type: Variable w
But this does not happen for Union
axiom
MyAlt(T:Domain):Domain=Union(p:T,q:T)
Category, domain or package constructor = is not available.
r:MyAlt(Float)
Category, domain or package constructor MyAlt is not available.
p
Type: Variable p
Type: Variable q
Type: Variable r