unfold equal in |- *.
unfold inclusion in |- *.
intros.
unfold transpose in |- *.
split.
intros M N.
intro.
induction  H
as [M N H| M1 M2 N1 N2 H HrecH| M1 M2 N1 N2 H HrecH| M N K L H HrecH H0].
apply AnaInc; trivial.
apply (AnaSplitL h N1 N2 M1 M2).
trivial.
apply (AnaSplitR h N1 N2 M1 M2).
trivial.
apply (AnaDec h N M L K).
trivial.
generalize (synthesis_transpose_transpose_synthesis h).
unfold equal in |- *.
unfold inclusion in |- *.
intros.
elim H1.
intros.
unfold transpose in H2.
auto.
intros M N.
intro.
induction  H
as [M N H| M1 M2 N1 N2 H HrecH| M1 M2 N1 N2 H HrecH| M N K L H HrecH H0].
apply AnaInc; trivial.
apply (AnaSplitL (fun M N : Msg => h N M) N1 N2 M1 M2); trivial.
apply (AnaSplitR (fun M N : Msg => h N M) N1 N2 M1 M2); trivial.
apply (AnaDec (fun M N : Msg => h N M) N M L K); trivial.
generalize (synthesis_transpose_transpose_synthesis h).
unfold equal in |- *.
unfold inclusion in |- *.
intro.
elim H1.
intros.
unfold transpose in H3.
auto.
Qed.

Lemma stable_impl_transpose_stable :
forall h : hedge, stable_analysis h -> stable_analysis (transpose h).