Parameter union: t -> elt -> elt -> t.

(* Specifications: *)
Axiom repr_union_1:
forall uf a b x, repr uf x <> repr uf a -> repr (union uf a b) x = repr uf x.
Axiom repr_union_2:
forall uf a b x, repr uf x = repr uf a -> repr (union uf a b) x = repr uf b.
Axiom repr_union_3:
forall uf a b, repr (union uf a b) b = repr uf b.
Axiom sameclass_union_1:
forall uf a b, sameclass (union uf a b) a b.
Axiom sameclass_union_2:
forall uf a b x y, sameclass uf x y -> sameclass (union uf a b) x y.
Axiom sameclass_union_3:
forall uf a b x y,
sameclass (union uf a b) x y ->
sameclass uf x y
\/ sameclass uf x a /\ sameclass uf y b
\/ sameclass uf x b /\ sameclass uf y a.
Axiom repr_union_1:
forall uf a b x, repr uf x <> repr uf a -> repr (union uf a b) x = repr uf x.
Axiom repr_union_2:
forall uf a b x, repr uf x = repr uf a -> repr (union uf a b) x = repr uf b.
Axiom repr_union_3:
forall uf a b, repr (union uf a b) b = repr uf b.
Axiom sameclass_union_1:
forall uf a b, sameclass (union uf a b) a b.
Axiom sameclass_union_2:
forall uf a b x y, sameclass uf x y -> sameclass (union uf a b) x y.
Axiom sameclass_union_3:
forall uf a b x y,
sameclass (union uf a b) x y ->
sameclass uf x y
\/ sameclass uf x a /\ sameclass uf y b
\/ sameclass uf x b /\ sameclass uf y a.