Re: "Disjoint" relation
Nate: disjoint(A,B) = ( A \prec B ) or ( B \prec A )
Arnold: disjoint(A,B) = (A.sup<B.inf) or (B.sup<A.inf)
Both are probably incomplete with respect to the handling of Empty.
Nate's form explicitly defines behaviour for Empty because that is
defined for the interval comparison primitive. If Empty was out of
the picture the two forms would most likely compile to the same code.
Nate's form yields FALSE if \prec is defined as in M0013.04, whereas
Arnold's form depends on the encoding of Empty, but if we assume some
form of [Nan,NaN] it too would return FALSE if one or both operands
are Empty -- though it depends on whether UNORDERED is mapped quietly
to FALSE, or whether an exception is raised.
Yet if we define Disjoint logically as "no elements in common", then
Disjoint should be (vacuously) TRUE if at least one operand is Empty.
This last observation is actually a strong motivation for defining
Disjoint as a required primitive!
Michel.
---Sent: 2010-10-04 16:45:53 UTC