As of 2.0.1 the getSwap(var{int},var{int}) and getAssignDelta(var{int}[],int[]) seem to work fine, the getSwap(var{int},var{int},var{int},var{int}) and getAssign(var{int},int,var{int},int) still cause Internal Errors. This isn't such a problem because you can emulate their behaviour using the getAssignDelta(var{int}[],int[]).
Another bug I've found which causes a library exception: [DisequationSystem: Unknown Variable] is if you try to differentiate a variable which isn't part of the DisequationSystem. This is at odds with the way other classes (thinking primarily of ConstraintSystems) behave. They simply return a delta of 0 and don't cause an error.
Code:
import cotls;
range r = 1..5;
Solver<LS> ls();
var{int} x[i in r](ls, r) := 2;
var{int} y(ls, r) := 1;
DisequationSystem<LS> D(x);
ConstraintSystem<LS> S(ls);
forall(i in r, j in r: j > i){
D.post(x[i],x[j]);
S.post(x[i] != x[j]);
}
D.close();
S.close();
ls.close();
cout << D.getAssignDelta(x[1], 4) << endl;
var{int} vars[1..2] = [x[1],x[2]];
int vals[1..2] = [4,5];
cout << D.getAssignDelta(vars,vals) << endl;
cout << D.getSwapDelta(x[1],x[2]) << endl;
// These will crash Comet
//cout << D.getAssignDelta(x[1], 4, x[2], 5) << endl;
//cout << D.getSwapDelta(x[1],x[2],x[3],x[4]) << endl;
cout << S.getAssignDelta(y,2) << endl;
//cout << D.getAssignDelta(y, 2) << endl;
Cheers,
Alastair