attached mail follows:
Hello All,
I'm trying to make some modifications to the RI module in order to
create a constraint system a bit different. The RI module assumes that
floating point numbers are the elements of the constraint system, in
the constraint system i am trying to build elements are real numbers;
since real numbers can't be represented then i can say that the
elements of the constraint system are intervals.
I am a bit familiar with the classes needed to implement a new
constraint system, according to the documentation those are:
- A class extending OZ_CtDefinition
- A class extending OZ_CtWakeUp
- A class extending OZ_CtProfile
- A class extending OZ_Ct
- A class extending OZ_CtVar
In the documentation you can find as example the Real Interval
constraint system and an explanation of the classes above. Also there
are some methods whose are not implemented in the module, for example
documentation describes the methods:
virtual OZ_Ct * unify(OZ_Ct * r)
virtual OZ_Boolean unify(OZ_Term rvt)
but those methods are not implemented in the RI module.
Looking at mozart sources, the class OZ_Ct, from RI class inherits,
doesn't have any virtual methods called
virtual OZ_Ct * unify(OZ_Ct * r)
virtual OZ_Boolean unify(OZ_Term rvt)
but there is a *commented* class OZ_Ct declaring those methods.
What do that means?, may be those methods are not needed or deprecated?
if that how Mozart unify two variables of the new constraint system?
The RI module has float numbers as elements of the CS and OZ has the
basic type float for which it provides operations such OZ_isFloat,
OZ_floatToC, etc.
What happen with a constraint system that do not have elements that can
be represented by a OZ basic type?, for example in my case, OZ doesn't
have the basic type interval, so what i need to return in the method
OZ_Term RI::toValue(void) ?
I try to look at the FS implementation, but it seems that the class
FSetValue doesn't inherit from OZ_Ct. The class OZ_FSetValue has a
method called
int oz_isFsetValue(TaggedRef t) which is used by the method OZ_Boolean
FSetValue::unify(OZ_Term t). Notice that FSetValue (in my opinion) is
analog to the RI class and the first one provides a unification method
but the second one don't. Why??
Is there any document presenting the Mozart design, may be a class
diagram or something like that? I am very interested in how FD and FS
are implemented.
Thanks in advance for your answer and excuse me for the message length.
Regards,
Gustavo Gutierrez
-
Please send submissions to users@mozart-oz.org
and administriva mail to users-request@mozart-oz.org.
The Mozart Oz web site is at http://www.mozart-oz.org/.
Please send bug reports to bugs@mozart-oz.org.
-
Please send submissions to hackers@mozart-oz.org
and administriva mail to hackers-request@mozart-oz.org.
The Mozart Oz web site is at http://www.mozart-oz.org/.