(* 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).
(* invariants des MapGet au travers de u_merge *)

(* 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.