Proof using.
unfold message_delivered_label.
intros.
invcs H.
- repeat find_rewrite.
find_eapply_lem_hyp In_split_not_In; eauto. subst.
monad_unfold. simpl in *.
handler_unfold. repeat break_match; repeat find_inversion; auto.
- unfold not in *. find_false.
apply in_app_iff; auto.
- intuition.
Qed.
Definition label_eq_dec :
forall x y : label,
{x = y} + {x <> y}.
Proof using.
decide equality; apply fin_eq_dec.
Qed.

(* Specifications: *)
Lemma messages_trigger_labels :
forall l p,
message_enables_label p l ->
message_delivered_label p l ->
forall s,
lb_step_execution lb_step_async s ->
In p (nwPackets (evt_a (hd s))) ->
weak_until (now (enabled lb_step_async l))
(now (occurred l))
s.