Definition UNION (X : Typ1) (A : Rel X) (a : X) (z' z : opt X) :=
  forall E : Prop,
  (forall x x' : X,
   eq (opt X) z' (some X x') -> eq (opt X) z (some X x) -> A x' x -> E) ->
  (forall x x' : X,
   eq (opt X) z' (some X x') -> eq (opt X) z (none X) -> A x' x -> A x a -> E) ->
  E.

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)).