Inductive dup_drop_step : list A -> list A -> Prop :=
  | DDS_dup : forall l p,
      In p l ->
      dup_drop_step l (p :: l)
  | DDS_drop : forall xs p ys,
      dup_drop_step (xs ++ p :: ys) (xs ++ ys).Inductive dup_drop_step : list A -> list A -> Prop :=
  | DDS_dup : forall l p,
      In p l ->
      dup_drop_step l (p :: l)
  | DDS_drop : forall xs p ys,
      dup_drop_step (xs ++ p :: ys) (xs ++ ys).Inductive dup_drop_step : list A -> list A -> Prop :=
  | DDS_dup : forall l p,
      In p l ->
      dup_drop_step l (p :: l)
  | DDS_drop : forall xs p ys,
      dup_drop_step (xs ++ p :: ys) (xs ++ ys).Definition dup_drop_step_star := clos_refl_trans_n1 _ dup_drop_step.

(* Specifications: *)
Lemma dup_drop_step_star_trans : forall l l' l'', dup_drop_step_star l l' -> dup_drop_step_star l' l'' -> dup_drop_step_star l l''.
Lemma dup_drop_step_star_step_n1 : forall l l' l'', dup_drop_step_star l l' -> dup_drop_step l' l'' -> dup_drop_step_star l l''.
Lemma dup_drop_step_star_step_1n : forall l l' l'', dup_drop_step l l' -> dup_drop_step_star l' l'' -> dup_drop_step_star l l''.
Lemma dup_drop_step_star_step_1 : forall l l', dup_drop_step l l' -> dup_drop_step_star l l'.
Lemma dup_drop_swap : forall l x y, dup_drop_step_star (x :: y :: l) (y :: x :: l).
Lemma dup_drop_cons : forall l l' x, dup_drop_step_star l l' -> dup_drop_step_star (x :: l) (x :: l').
Lemma dup_drop_Permutation : forall l l', Permutation l l' -> dup_drop_step_star l l'.
Lemma remove_not_in_nop : forall a l, ~ In a l -> remove A_eq_dec a l = l.
Lemma dup_drop_in : forall l l' a, dup_drop_step_star l l' -> In a l' -> In a l.
Lemma dup_drop_dup_early : forall l l' a, dup_drop_step_star l l' -> In a l -> dup_drop_step_star l (a :: l').
Lemma dup_drop_step_star_remove_In : forall l' l a, In a l' -> dup_drop_step_star l (remove A_eq_dec a l') -> dup_drop_step_star (a :: l) l'.
Lemma remove_In_elim : forall x a l, In x (remove A_eq_dec a l) -> x <> a /\ In x l.
Lemma dup_drop_reorder : forall l l' : list A, (forall x, In x l' -> In x l) -> dup_drop_step_star l l'.
Theorem step_failure_dup_drop_step : forall ps ps' Sigma f, dup_drop_step_star _ ps ps' -> step_failure_star (f, mkNetwork ps Sigma) (f, mkNetwork ps' Sigma) [].