Inductive D_queue : queue Message -> Prop :=
  | D_empty : D_queue (empty Message)
  | D_dec :
      forall qm : queue Message,
      alternate qm -> In_queue_before Message dec is_inc_dec qm -> D_queue qm.Inductive D_queue : queue Message -> Prop :=
  | D_empty : D_queue (empty Message)
  | D_dec :
      forall qm : queue Message,
      alternate qm -> In_queue_before Message dec is_inc_dec qm -> D_queue qm.Inductive D_queue : queue Message -> Prop :=
  | D_empty : D_queue (empty Message)
  | D_dec :
      forall qm : queue Message,
      alternate qm -> In_queue_before Message dec is_inc_dec qm -> D_queue qm.

Lemma D_shuffle_copy1 : forall q1 q2 : queue Message, D_queue (input Message copy (append Message q1 q2)) -> D_queue (append Message q1 (input Message copy q2)).