Module E := O.Module Import MO := OrderedTypeFacts O.Definition eq : t -> t -> Prop := Equal.#[global]
 Instance eq_equiv : Equivalence eq.#[global]
 Instance : Proper (O.eq==>O.eq==>eq==>iff) EmptyBetween.Definition Below x s := forall y, In y s -> O.lt y x.Definition Above x s := forall y, In y s -> O.lt x y.Definition EquivBefore x s s' :=
   forall y, O.lt y x -> (In y s <-> In y s').Definition EmptyBetween x y s :=
   forall z, In z s -> O.lt z y -> O.lt z x.Definition lt s s' := exists x, EquivBefore x s s' /\
   ((In x s' /\ Below x s) \/
    (In x s  /\ exists y, In y s' /\ O.lt x y /\ EmptyBetween x y s')).#[global]
 Instance lt_compat : Proper (eq==>eq==>iff) lt.#[global]
 Instance lt_strorder : StrictOrder lt.

(* Specifications: *)
Lemma lt_empty_r : forall s s', Empty s' -> ~ lt s s'.