Definition union_str_def (s0 : state) : Prop :=
forall (s1 : state) (d : preDTA) (c : ad) (tl : term_list),
mpl_compat s0 s1 ->
state_reconnait d (union_mpl s0 s1) (app c tl) \/
state_reconnait d (union_mpl s1 s0) (app c tl) ->
state_reconnait d s0 (app c tl) \/ state_reconnait d s1 (app c tl).

(* Specifications: *)
Lemma union_str_0 : union_str_def (M0 prec_list).
Lemma union_str_1 :
forall (a : ad) (a0 : prec_list), union_str_def (M1 prec_list a a0).
Lemma union_str_2 :
forall m : state,
union_str_def m ->
forall m0 : state, union_str_def m0 -> union_str_def (M2 prec_list m m0).
Lemma union_str_3 : forall m : state, union_str_def m.
Lemma union_str :
forall (s0 s1 : state) (d : preDTA) (c : ad) (tl : term_list),
mpl_compat s0 s1 ->
state_reconnait d (union_mpl s0 s1) (app c tl) \/
state_reconnait d (union_mpl s1 s0) (app c tl) ->
state_reconnait d s0 (app c tl) \/ state_reconnait d s1 (app c tl).
Lemma union_state :
forall (s0 s1 : state) (d : preDTA) (t : term),
mpl_compat s0 s1 ->
(state_reconnait d (union_mpl s0 s1) t <->
state_reconnait d s0 t \/ state_reconnait d s1 t).