Module Type UNIONFIND.
Parameter elt: Type.
Parameter elt_eq: forall (x y: elt), {x=y} + {x<>y}.
Parameter t: Type.
Parameter repr: t -> elt -> elt.
Definition sameclass (uf: t) (a b: elt) : Prop := repr uf a = repr uf b.
Parameter empty: t.
Parameter find: t -> elt -> elt * t.

Axiom sameclass_find_1:
forall uf a x y, sameclass (snd (find uf a)) x y <-> sameclass uf x y.