// equality for various classes Constraint { public int hashCode() {{ return toString().hashCode(); }} public boolean equals(Object o) {{ EqualVisitor ev = new EqualVisitor(o); toAll(ev); return ev.get_is_equal(); }} } Weight { public boolean equals(Object o) {{ return (o instanceof Weight) && ((Weight)o).get_weight() == weight; }} public int hashCode() {{ return weight; }} } Relation { public boolean equals(Object o) {{ return (o instanceof Relation) && ((Relation)o).get_relationNumber() == relationNumber; }} public int hashCode() {{ return relationNumber; }} } Variable { public int hashCode() {{ return variable; }} public boolean equals(Object o) {{ return (o instanceof Variable) && ((Variable)o).get_variable() == variable; }} public String toString() {{ return new Integer(variable).toString(); }} } Literal { public boolean equals(Object o) {{ return o instanceof Literal && o.toString().equals(toString()); }} }