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