(** the irreducibles I(h) of h is (reduce (A(h))) *)
Definition irreducible (h : hedge) := reduce (analysis_def h).

(* Specifications: *)
Lemma irreducible_enc : forall (h : hedge) (M N K L : Msg), irreducible h (MEnc M K) (MEnc N L) <-> analysis_def h (MEnc M K) (MEnc N L) /\ (~ synthesis (analysis_def h) M N \/ ~ synthesis (analysis_def h) K L).
Lemma irreducible_op : forall (h : hedge) (oM oN : op) (M N : Msg), irreducible h (Mop oM M) (Mop oN N) <-> analysis_def h (Mop oM M) (Mop oN N) /\ (oM <> oN \/ ~ synthesis (analysis_def h) M N).
Lemma irreducible_pair : forall (h : hedge) (M1 N1 M2 N2 : Msg), ~ irreducible h (MPair M1 M2) (MPair N1 N2).