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 decide_exist_non_empty_queue1 :
forall (c : Config) (a : Site),
legal c ->
{(forall s2 : Site, In s2 LS -> bm c a s2 = empty Message)} +
{~ (forall s2 : Site, In s2 LS -> s2 <> a -> bm c a s2 = empty Message)}.