Section ALTERNATE.
Inductive alternate : queue Message -> Prop :=
| alt_null : alternate (empty Message)
| alt_single_inc :
forall s0 : Site,
alternate (input Message (inc_dec s0) (empty Message))
| alt_any_alt :
forall (qm : queue Message) (m : Message),
(forall s : Site, m <> inc_dec s) ->
alternate qm -> alternate (input Message m qm)
| alt_inc_dec :
forall (qm : queue Message) (s0 : Site),
alternate qm ->
alternate (input Message (inc_dec s0) (input Message dec qm)).

Lemma dec_is_not_inc : forall s : Site, dec <> inc_dec s.