 # Boost :

From: David Bergman (davidb_at_[hidden])
Date: 2002-09-04 13:35:59

Joel,

I totally agree. Why complicate matters with obscure orderings and
tribools, when we have quite concrete elements to work with.

I underline Joel's sumbission.

Thanks,

David

-----Original Message-----
From: boost-bounces_at_[hidden]
[mailto:boost-bounces_at_[hidden]] On Behalf Of Joel Young
Sent: Wednesday, September 04, 2002 2:07 PM
To: boost_at_[hidden]
Cc: jdy_at_[hidden]
Subject: [boost] Interval comparison operators

Why try to map point based comparison operators onto intervals?

There are already well defined comparisons for interval-interval
relations, interval-point relations, and point-interval relations.

Use them (see my previous post).

interval-interval
([a,a] is not interval--it is a point,
[a,b] is an interval iff a < b)

equals:
[a,b] == [c,d] iff a == c .and. b == d

less than, aka precedes, aka <:
[a,b] < [c,d] iff b < c
greater than, aka follows, aka >:
[a,b] > [c,d] iff d < a

meets, aka m:
[a,b] m [c,d] iff b == c
met by, aka mi:
[a,b] mi [c,d] iff d == a

overlaps, aka o:
[a,b] o [c,d] iff (a < c) .and. (c < b < d)
overlapped by, aka oi:
[a,b] oi [c,d] iff (c < a) .and. (a < d < b)

starts, aka s:
[a,b] s [c,d] iff (a == c) .and. (b < d)
started by, aka si:
[a,b] si [c,d] iff (a == c) .and. (d < b)

during, aka d:
[a,b] d [c,d] iff (a > c) .and. (a < d < b)
contains, aka di:
[a,b] di [c,d] iff (c > a) .and. (c < b < d)

finishes, aka f:
[a,b] f [c,d] iff (b == d) .and. (a > c)
finish by, aka fi:
[a,b] fi [c,d] iff (b == d) .and. (c > a)

Since these relations are mutually exclusive for intervals, and these
thirteen relations are exhaustive we define a universe A which is the
set of all these relations.

A = {==, <, >, m, mi, o, oi, s, si, d, di, f, fi}

Then we can say for all intervals B and C
B A C

Then the meaning of "not" becomes clear. if we say not(B < C) what we
mean is (B (A-{<}) C)

we can name these sets of relations. For example

shares-with (meaning two intervals have some interval in common)

shares-with = {==, d, di, s, si, f, fi, o, oi}
!shares-with = {<, >, m, mi}

by the way, (sorry for the TeX but I am lazy)

A set $\cR$ of interval relations is said to be \emph{monotonic} if
and only if for all $R$ in $\cR$, $\overline{R}^c \cap ({\overline{R}^c})^{-1} = \emptyset$ where $\overline{R} = \cup_{R \in \cR} R$ and $\overline{R}^c$ is the transitive closure of $R$ and
${\overline{R}^c}^{-1}$ is the inverse of the transitive closure of
$R$.

an example monotonic set is:
{<, o, s, fi, di, m}

I submit that an interval class should have these relations defined.
Also, the interval-point and point-interval relations should also be
defined.

Joel
_______________________________________________
Unsubscribe & other changes:
http://lists.boost.org/mailman/listinfo.cgi/boost