if (!this.variableValues.keySet().equals(other.variableValues.keySet()))
throw new DomainException("Join only allowed with the same variables!!, mine: "+this +", other:"+other);
Map<Variable, DI> result = new HashMap<Variable, DI>();
for(Map.Entry<Variable, DI> entry: variableValues.entrySet()) {
Variable var = entry.getKey();
DI value = entry.getValue();
DI resultValue = value.widen(other.variableValues.get(var));
result.put(var, resultValue);
}
//