Use the Eq type class instead of requiring `eq` in the DisjointSet type class
Implement constraint generation