for (int j = vars[i].getEnvelopeFirst(); j != SetVar.END; j = vars[i].getEnvelopeNext())
if (!union.envelopeContains(j))
vars[i].removeFromEnvelope(j, aCause);
}
for (int j = union.getEnvelopeFirst(); j != SetVar.END; j = union.getEnvelopeNext()) {
if (union.kernelContains(j)) {
int mate = -1;
for (int i = 0; i < k && mate != -2; i++) {
if (vars[i].envelopeContains(j)) {
if (mate == -1) {
mate = i;