unfold Derivestar_P_A_3, Rstar in |- *.
intros s1 s2 u1 u2 v1 v2 Derivestar_P_A_3_s1_v1_s2_v2.
change
((fun a b : Word * Conf =>
Append (fst a) (snd (snd a)) = Append (fst b) (snd (snd b)))
(s1, (u1, v1)) (s2, (u2, v2))) in |- *.
apply Derivestar_P_A_3_s1_v1_s2_v2.
trivial.
intros u v w.
elim u. intros uu1 uuc. elim uuc. intros uu2 uu3.
elim v. intros vv1 vvc. elim vvc. intros vv2 vv3.
simpl in |- *.
intros Der eg1.
rewrite <- eg1.
apply Conserve_App_s_u with uu2 vv2.
assumption.
Qed.

Lemma Derive_P_A_2_imp_Derive_P_A_3 :
forall (s : Word) (x y : Conf),
Derive_P_A_2 x y -> exists s2 : Word, Derive_P_A_3 (s, x) (s2, y).