Hello
Sorry, I missed your question.
Actually, you can extend Choco with new variables, but that requires a lot of work:
1. Declaring a new class which extends AbstractVariable and implements Variable (or possibly an intermediate interface).
You can have a look at SetVarImpl and SetVar if you want to start with something simper than IntVar. In particular, you will have to define:
a. ISetDelta getDelta() : might be needed if removed values are to be stored to react to fine event,
b. ISetDeltaMonitor monitorDelta(ICause propagator) : complementary to the previous method
c. int getTypeAndKind() : to define the type (int, set, graph, ...) and the kind (var, view, constant) of the new variable
d. EvtScheduler<?> getEvtScheduler() : depending on the events to which the variable's propagators react, they can be finely scheduled
e. you possibly need to declare a backtrackable structure (like IStateInt or IStateBitset) to store the values.
2. Declaring the propagators for the new type of variable
3. Declaring the new type of decision (see IntDecision) and new search strategies.
4. If you want to deal with COP you'll probably have to change some things in the solver too.
Best
Charles