(* invariant sur union_mpl_0, sens direct, 0 *)

(* Specifications: *)
Lemma union_s0d_0 :
forall (d : preDTA) (c : ad) (pl : prec_list) (tl : term_list),
mpl_compat (M1 prec_list c pl) (M0 prec_list) ->
state_reconnait d (M1 prec_list c pl) (app c tl) ->
state_reconnait d (union_mpl_0 c pl (M0 prec_list)) (app c tl).
Lemma union_s0d_1_0 :
forall (d : preDTA) (c : ad) (pl pl0 : prec_list) (tl : term_list),
mpl_compat (M1 prec_list c pl) (M1 prec_list c pl0) ->
state_reconnait d (M1 prec_list c pl) (app c tl) ->
state_reconnait d (union_mpl_0 c pl (M1 prec_list c pl0)) (app c tl).
Lemma union_s0d_1_1 :
forall (d : preDTA) (c : ad) (pl : prec_list) (c0 : ad)
(pl0 : prec_list) (tl : term_list),
mpl_compat (M1 prec_list c pl) (M1 prec_list c0 pl0) ->
c <> c0 ->
state_reconnait d (M1 prec_list c pl) (app c tl) ->
state_reconnait d (union_mpl_0 c pl (M1 prec_list c0 pl0)) (app c tl).
Lemma union_s0d_2_0 :
forall (d : preDTA) (pl : prec_list) (s0 s1 : state) (tl : term_list),
mpl_compat (M1 prec_list N0 pl) (M2 prec_list s0 s1) ->
state_reconnait d (M1 prec_list N0 pl) (app N0 tl) ->
state_reconnait d (union_mpl_0 N0 pl (M2 prec_list s0 s1)) (app N0 tl).
Lemma union_s0d_2_1 :
forall (d : preDTA) (pl : prec_list) (s0 s1 : state) (tl : term_list),
mpl_compat (M1 prec_list (Npos 1) pl) (M2 prec_list s0 s1) ->
state_reconnait d (M1 prec_list (Npos 1) pl) (app (Npos 1) tl) ->
state_reconnait d (union_mpl_0 (Npos 1) pl (M2 prec_list s0 s1))
(app (Npos 1) tl).