Set Implicit Arguments.
Fixpoint before {A: Type} (x : A) y l : Prop :=
match l with
| [] => False
| a :: l' =>
a = x \/
(a <> y /\ before x y l')
end.
Section before.
Variable A : Type.

(* Specifications: *)
Lemma before_In :
forall x y l,
before (A:=A) x y l ->
In x l.