Skip to content
David Nolen edited this page Feb 9, 2013 · 12 revisions

The nominal logic work currently needs far too much access to implementation details in order to integrate well with the finite domain portion of the library. Moreover the finite domain functionality is just one instance of an extension that needs to deal with logic vars that may take a domain of values - CLP(Set) for example, or more ambitiously CLP(EDN).

The issue is that nominal logic needs to create a var that will be swapped with original - but this var must retain all the properties and constraints of the original.

One way to eliminate any knowledge of other constraint domains from the nominal support would be some notion of var "entanglement". That is any domain or constraint that is applied to one var must be applied to another.

Currently in the nominal work there is a bit of quick fix to ensure that if a domain exists on one or the other term, a domain constraint is applied to one, the other term, or both terms. the -suspc constraint watches both terms to see if one the terms is ground or if the finite domains between the two terms are no longer equal.