obj X = any; obj Y = x:X; obj Z = X; obj W = Z; op f(y:Y, z:Z); (* ^^^^^^^^ Problem here is that Z is said to be undefined, but Y isnt. This * is evidently due to the one-tuple wrapper that's put around Y. * **NOTE**: The problem is no longer *) op g(w:W); (* ^^^ W shows as undef'd as well. Hmm. *)