intros ni1 ni2 ni3 ni4 x.
generalize ni3; clear ni3.
elim ni1; clear ni1.
intros ni3; case ni3; clear ni3.
simpl in |- *; intros len le.
apply Le_NI_Cons_NN; assumption.
intros y ni3 len le.
inversion_clear len.
intros y ni1 ih.
intros ni3; case ni3; clear ni3.
simpl in |- *; intros len le; inversion_clear len.
simpl in |- *; intros y' ni3 len le.
inversion_clear le.
apply Le_NI_Cons_NN.
apply ih.
injection len; intros; assumption.
assumption.
apply Le_NI_Cons_DN.
apply ih.
injection len; intros; assumption.
assumption.
apply Le_NI_Cons_DD.
apply ih.
injection len; intros; assumption.
assumption.
Qed.

Lemma le_ni_app_dn :
forall (ni1 ni2 ni3 ni4 : nested_imps) (x : nimp) (k : kripke_tree),
length ni1 = length ni3 ->
le_ni (ni1 ++ ni2) (ni3 ++ ni4) ->
le_ni (ni1 ++ Decorated x k :: ni2) (ni3 ++ Undecorated x :: ni4).