From: Matthew Skala <mskala_at_cs.toronto.edu>

Date: Tue, 11 Jan 2011 08:34:33 -0600 (CST)

Date: Tue, 11 Jan 2011 08:34:33 -0600 (CST)

On Tue, 11 Jan 2011, Oliver Shycle wrote: > "sameset(Set1,Set2)" that makes the two sets the same. But how does the > syntax look like, when I want the two sets to be different? If I use "neg The solver probably doesn't support such constraints. Note that solving the negated version of a constraint may in general be much harder than solving the non-negated version; it's not a symmetrical situation by any means, so you can't generally expect that a given solver will support the negated version of each constraint it does support. You should also be aware that problems that use these constraints may take much longer to solve than problems that don't. When I ran into a similar situation, where I wanted a "neither of these sets is a subset of the other" constraint in ic_sets, I ended up adding a customized constraint like this: set_nsub_cst(P,Q):-var(P),!,suspend(set_nsub_cst(P,Q),2,P->inst). set_nsub_cst(P,Q):-var(Q),!,suspend(set_nsub_cst(P,Q),2,Q->inst). set_nsub_cst(P,Q):-lists:subset(P,Q),!,fail. set_nsub_cst(P,Q):-lists:subset(Q,P),!,fail. set_nsub_cst(_,_). It shouldn't be difficult to create something similar for "set not equal," depending on how much propagation you need. The above code doesn't really do any propagation; it waits until the sets are fully instantiated before testing them. On the other hand, with this kind of constraint there may not be much propagation possible anyway, and it worked well in practice in my application. -- Matthew Skala Postdoctoral Fellow, University of Manitoba mskala_at_cs.umanitoba.caReceived on Tue Jan 11 2011 - 14:50:59 CET

*
This archive was generated by hypermail 2.2.0
: Thu Feb 02 2012 - 02:31:58 CET
*