I did not read your entire treatise yet :-) but my impression is that
the problem you describe is rather like the problem of "lexical
ambiguity" in computational linguistics, if one likens classes to
lexical entries.
What is lexical ambiguity? In computing the analysis of a sentence, we
are confronted with the problem that each word may have several
entries in the lexicon, e.g.. several possible syntactic and/or
semantic descriptions. The question is which one to choose for each
word in order to be able to construct a complete analysis on the
sentence.
My answer is to NOT choose, but instead let the constraints of the
problem remove inconsistent options from consideration. In the end,
you may have to choose, but it should only be done as a last resort,
if constrains are not sufficient to automatically resolve all
ambiguities.
How can this be done?
I assume that a lexical entry (in your case a class), can be
represented as a record mapping features to integers or finite set
constants; the latter are encodings of symbolic values.
For example, if I have the possible genders "masculine", "femine", and
"neutral", these could be respectively encoded as 1,2,3. I could
encode the alternative gender options licensed by a lexical entry as a
finite set. For example, a lexical entry that permitted either
"masculine" or "neutral" would have a feature:
possibleGenders : {FS.value.make [1 3]}
OK. So now, for one word, we have a choice of lexical entries
e1,...,eN. Let's introduce the FD variable I to denote the index of
the lexical that we will eventually choose from this list. I ranges
in 1..N. We can obtain a representation of the lexical entry that
will eventually be chosen by using selection constraints. I write:
X = <Y_1,...,Y_N>[I]
for the selection constraint with declarative semantics X=Y_I.
Let the features of a lexical entry be f1,...,fk. The features of the
lexical entry that will eventually be chosen can be obtained as
follows:
[f1 : <e1.f1,...,eN.f1>[I]
...
fk : <e1.fk,...,eN.fk>[I]]
Now these features are available to the rest of your constraint
problem and you can post constraints on them, thus constraining the
consistent choices that you can make for I.
In your case, this would work if you can characterize at least
important parts of your classes in the same fashion. Your problem
would be to choose an appropriate class and the selection could again
be addressed using the technique outlined above. You probably would
have to provide constraints that reflect how being a member of a class
constrains an instance.
Does this make any sense?
Cheers,
-- Denys Duchier - Équipe Calligramme - LORIA, Nancy, France - 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.