Section LEGAL_NO_COPY.
(** this inductive definition defines legal_no_copy as a predicate over a configuration c, which is accessible with legal transitions from a legal config c0, without using any copy transition *)
Variable c0 : Config.
Inductive legal_no_copy : Config -> Prop :=
| no_copy_init : legal c0 -> legal_no_copy c0
| after_no_copy :
forall (c : Config) (t : class_trans c),
~ copy_p c t -> legal_no_copy c -> legal_no_copy (transition c t).
End LEGAL_NO_COPY.
Definition no_message (c : Config) :=
forall s1 s2 : Site, In s1 LS -> In s2 LS -> bm c s1 s2 = empty Message.

Lemma exist_non_empty_queue :
forall c : Config,
legal c ->
~ no_message c ->
exists s1 : Site,
(exists s2 : Site, s1 <> s2 /\ bm c s1 s2 <> empty Message).