End Inclusion.
Hint Resolve incl_shift.
Definition inclp (X : Type) (A : list X) (p : X -> Prop) : Prop :=
forall x, x el A -> p x.
(* Setoid rewriting with list inclusion and list equivalence *)
Instance in_equi_proper X :
Proper (eq ==> @equi X ==> iff) (@In X).
(* Equivalence *)
Section Equi.
Variable X : Type.
Implicit Types A B : list X.

(* Specifications: *)
Lemma equi_push x A :
x el A -> A === x::A.
Lemma equi_rotate x A :
x::A === A++[x].