Proof
fun X A a x x' H1 H2 E _ e =>
e x x' (eq_refl (opt X) (some X x')) (eq_refl (opt X) (none X)) H1 H2.

(* Specifications: *)
Lemma UNION_deloc :
forall (X : Typ1) (A : Rel X) (a : X),
deloc X A (opt X) (UNION X A a) (some X).
Lemma UNION_eqv :
forall (X : Typ1) (A : Rel X) (a x : X),
EQV X A x (opt X) (UNION X A a) (some X x).
Lemma union_intro :
forall (X : Typ1) (A : Rel X) (a : X) (Y : Typ1) (B : Rel Y)
(b : Y) (Z : Typ1) (C : Rel Z) (c : Z),
ELT Y B b Z C c ->
ELT Z C c X A a -> ELT Y B b (opt X) (UNION X A a) (none X).
Lemma union_elim :
forall (X : Typ1) (A : Rel X) (a : X) (Y : Typ1) (B : Rel Y) (b : Y),
ELT Y B b (opt X) (UNION X A a) (none X) ->
exG (fun Z C c => and (ELT Y B b Z C c) (ELT Z C c X A a)).
Lemma union :
forall (X : Typ1) (A : Rel X) (a : X) (Y : Typ1) (B : Rel Y) (b : Y),
iff (ELT Y B b (opt X) (UNION X A a) (none X))
(exG (fun Z C c => and (ELT Y B b Z C c) (ELT Z C c X A a))).