[std-interval] Mathematical relations and default initialization

Frédéric Goualard Frederic.Goualard at univ-nantes.fr
Fri Sep 15 00:06:07 PDT 2006


Guillaume Melquiond wrote:
> Le jeudi 14 septembre 2006 à 10:21 +0200, Frédéric Goualard a écrit :
> 
>> The nth_root_rel() operator does not appear in the standard. Is this
>> omission on purpose? If indeed it is, why is it so?
> 
> The nth_root_rel is purposely out of the proposal because nth_root is
> out too :-). I don't think the omission is on purpose though. If people
> feel it is useful, it can be added.

In my experience, nth_root() may safely be excluded from the standard 
because it is seldom used. On the other hand, nth_root_rel() is *very* 
important since it is necessary to handle constraints with 
exponentiations, such as constraints on polynomials!

For example, to handle the constraint

x^5 = y

with a backward/forward algorithm (see "Revising hull and box 
consistency". F. Benhamou, F. Goualard, L. Granvilliers, and J.-F. 
Puget, Procs. of ICLP'99, pp. 230-244, MIT Press), we would use:

y <- y \cap pow(x,5)
x <- x \cap nth_root_rel(y,5,x)

Excluding nth_root_rel() from the standard makes the introduction of the 
other relational operators basically useless since I believe we have 
more often to deal with constraints containing exponentiations than with 
constraints involving, say, trigonometric functions.

> 
>> Side notes:
>>   - on Page 12, the signatures for the mathematical relations are wrong
>> (compare with page 27).
>>   - div_rel() does not appear on page 27 while it is listed on page 12
> 
> Thanks, I will take a look.
> 
>> * Default initialization
>> I see on page 15 that the default constructor creates an empty interval.
>>  At some point in the discussion, Sylvain gave 6 possible ways of
>> implementing this constructor:
>>
>> 1- no default constructor at all
>> 2- [0,0]
>> 3- empty
>> 4- whole
>> 5- uninitialized tag
>> 6- see below (something a la "singular iterator")
>>
>> Possibility 4 was brushed away from the start, and the remaining
>> possibilities heavily debated. In my opinion, it makes sense to have the
>> default constructor return "whole" since interval arithmetic is often
>> used in processes that try to gain some information on the possible
>> value of a variable (that is, we start from a wide interval and narrow
>> it down to some reasonably small one).
> 
> I don't remember 4 being brushed right away (proposition 1 was). As a
> matter of fact, propositions 3 and 4 have reached a point in my opinion
> where I consider them to be equally useful. So, at least on my side, it
> is still 4 in the proposal, only because of inertia.

You mean "3" of course :o)



Cheers,

FG.
-- 
Frédéric Goualard                                 LINA - FRE CNRS 2729
Tel.: +33 2 51 12 58 38    Univ. of Nantes - Ecole des Mines de Nantes
Fax.: +33 2 51 12 58 12            2, rue de la Houssinière - BP 92208
http://goualard.free.fr/                        F-44322 NANTES CEDEX 3



More information about the Std-interval mailing list