Section before.
Variable A : Type.
Proof using.
induction l; intros; simpl in *; intuition.
Qed.
Proof using.
induction l; intros; simpl in *; intuition; subst; try congruence.
- exists nil. simpl. find_apply_lem_hyp in_split. break_exists. subst. eauto.
- exists nil. simpl. find_apply_lem_hyp in_split. break_exists. subst. eauto.
- exists nil. simpl. find_apply_lem_hyp in_split. break_exists. subst. eauto.
- eapply_prop_hyp In In; eauto. break_exists. subst.
exists (a :: x0), x1, x2. auto.
Qed.
Proof using.
induction xs; intros; simpl in *; intuition.
Qed.
Proof using.
induction xs; intros; simpl in *; intuition.
induction ys; intros; simpl in *; intuition.
Qed.
Proof using.
intros.
induction xs; intros; simpl in *; intuition.
Qed.
Proof using.
induction xs; intros; simpl in *; intuition; try congruence; eauto.
induction ys; intros; simpl in *; intuition; try congruence.
Qed.
Proof using.
induction xs; intros; simpl in *; intuition; try congruence; eauto.
Qed.
Proof using.
induction l; intros; simpl in *; intuition.
break_if; subst; simpl in *; intuition eauto.
Qed.
Proof using.
induction l; intros; simpl in *; intuition;
break_if; subst; simpl in *; intuition eauto.
Qed.

Lemma before_app :
forall x y l' l,
before (A := A) x y (l' ++ l) ->
~ In x l' ->
before (A := A) x y l.