Section Decomposition.
Context `{d : Decomposition}.
(* Fixpoint remove_one {A : Type} (A_eq_dec : forall x y : A, {x = y} + {x <> y}) a l := match l with | x :: xs => if A_eq_dec a x then xs else x :: remove_one A_eq_dec a xs | [] => [] end. *)
Definition packet_eq_dec :
forall p1 p2 : packet,
{p1 = p2} + {p1 <> p2}.
Proof using.
intros.
in_crush; destruct x; simpl in *; eauto.
Qed.
Proof using.
induction xs; intros; subst; simpl in *; intuition eauto; subst; eauto.
apply network_network_invariant_sym. eauto.
Qed.
Proof using.
induction xs; intros; subst; simpl in *; intuition eauto.
Qed.
Proof using.
induction l1; intros; simpl in *; intuition.
find_apply_lem_hyp in_app_or.
intuition eauto.
Qed.

Theorem decomposition_invariant :
inductive_invariant step_async step_async_init composed_invariant.