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.

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''.