From: Richard A. O'Keefe <ok_at_cs.otago.ac.nz>

Date: Tue, 21 Nov 2006 16:54:05 +1300 (NZDT)

Date: Tue, 21 Nov 2006 16:54:05 +1300 (NZDT)

I have to leave in a few minutes, and the Department is closed tomorrow

for a funeral, so I don't have time to reply at once in full to

Joachim Schimpf's <js10_at_crosscoreop.com> important contribution to this

thread.

I am very fond of interval arithmetic, which is supported in the Fortran

compiler I sometimes use. I was disappointed that INTERVAL didn't make

it into F95 (nor, I think F04). But I don't buy his argument, for a very

important reason.

Actually, two reasons.

First, max/2 and min/2 are part of the algebra of LATTICES. They are

not about arithmetic, they are about ORDERING. And when we look at

intervals, we see that they form a PARTIAL order, not a total order.

So when we

Consider the comparison of two reals, whose values are not very

precisely known, but which are both in the vicinity of 1:

?- X is max(0.9__1.0, 0.8__1.1).

X = 0.9__1.1

Yes (0.00s cpu)

we see very clearly that the answer should be *NO*: NEITHER of the

arguments is greater than the other, so the maximum is simply undefined.

Obviously you *can* define an operation

f (LB1,UB1) (LB2,UB2) = (LB1 `max` LB2, UB1 `max` UB2)

and just as obviously it *will* satisfy the usual axioms for \/

considered by itself, BUT it won't satisfy the usual axioms relating

max and min to < and >.

Nothing stops someone defining "max" and "min" componentwise for

complex numbers, and those definitions would also satisfy the usual

associativity, commutativity, and idempotence axioms, and even the

usual axioms relating /\ and \/ to each other. But they would NOT

satisfy the usual axioms relating /\ and \/ to < <= > >= , because

complex numbers just don't satisfy the ordered field axioms.

(By the way, I have been arguing for the last 20 years or more that

we ought to allow underscores inside numbers to make them readable,

as Ada and some other languages do. It's rather upsetting to see

underscores used for separating the bounds of an interval.)

Because of the fuzziness, we don't really know which argument is

the larger one,

Which is why you are actually talking about a *different* operation.

The most precise result we can deliver is _not_ identical to

any of the arguments, it is a combination of information from

the arguments. With selection semantics, we would have to

raise an exception.

For *this* operation, yes, of course. That's the only reasonable thing

to do. I think you may have forgotten the mathmatical distinction

between a "maximum" and a "meet". I have been talking about the

"maximum" of a set (which must be exactly an element of that set);

you are talking about a "meet".

If we subscribe to the view that a float is an inaccurate

representation of a real that lies somewhere in the vicinity of

the float,

I don't, for fairly obvious and practical reasons.

_______________________________________________

prolog-standard mailing list

prolog-standard_at_neve.di.ubi.pt

http://neve.di.ubi.pt/mailman/listinfo/prolog-standard

Received on Mon Jul 14 2008 - 13:01:03 EST

*
This archive was generated by hypermail 2.2.0
: Wed Sep 08 2010 - 23:28:17 EST
*