intros.
elim H.
intros.
elim H1.
intros.
elim H3.
intros.
elim H5.
intros.
elim H7.
intros.
unfold cond_irr in |- *.
split.
unfold no_pairs in |- *.
intros.
unfold pair_free_left in H6.
red in |- *.
intro.
apply (H6 M1 M2 (MPair N1 N2)).
trivial.
split.
unfold op_synthesis_left in H4.
unfold no_syn_ops in |- *.
intros.
apply (H4 o (Mop o M) (Mop o N)); trivial.
split.
unfold no_syn_cyph in |- *.
intros.
unfold enc_synthesis_left in H8.
apply (H8 (MEnc M K) (MEnc N L)); trivial.
unfold cyph_dec in |- *.
intros.
unfold enc_analysis_left in H9.
generalize (H9 (MEnc M K) (MEnc N L) H10 M K).
intros.
cut (exists N' : Msg, MEnc N L = MEnc N' L /\ synthesis h M N').
intro.
elim H13.
intro N'.
intro.
elim H14.
intros.
inversion H15; trivial.
apply H12; auto.
Qed.

(* Specifications: *)
Lemma left_consistent_impl_cond_irr :
forall h : hedge, is_left_consistent h -> cond_irr h.