SetVar union = vars[k];
for (int i = 0; i < k; i++) {
for (int j = vars[i].getKernelFirst(); j != SetVar.END; j = vars[i].getKernelNext())
union.addToKernel(j, aCause);
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;