(* définition de l'union des supports de deux automates *)

Definition u_merge (p0 p1 : preDTA) : preDTA :=
  MapMerge state (udta_conv_0 p0) (udta_conv_1 p1).

(* Specifications: *)
Lemma u_merge_0 : forall (p0 p1 : preDTA) (a : ad) (s : state), MapGet state (udta_conv_0 p0) a = Some s -> MapGet state (u_merge p0 p1) a = Some s.
Lemma u_merge_1 : forall (p0 p1 : preDTA) (a : ad) (s : state), MapGet state (udta_conv_1 p1) a = Some s -> MapGet state (u_merge p0 p1) a = Some s.
Lemma u_merge_0r : forall (p0 p1 : preDTA) (a : ad) (s : state), MapGet state (u_merge p0 p1) a = Some s -> forall b : ad, a = uad_conv_0 b -> MapGet state (udta_conv_0 p0) a = Some s.
Lemma u_merge_1r : forall (p0 p1 : preDTA) (a : ad) (s : state), MapGet state (u_merge p0 p1) a = Some s -> forall b : ad, a = uad_conv_1 b -> MapGet state (udta_conv_1 p1) a = Some s.