Definition In := InA X.eq.#[global]
  Instance In_compat : Proper (X.eq==>eq==> iff) In.Module L := MakeListOrdering X.Definition eq := L.eq.Definition eq_equiv := L.eq_equiv.Definition lt l1 l2 :=
    exists l1' l2', Ok l1' /\ Ok l2' /\ eq l1 l1' /\ eq l2 l2' /\ L.lt l1' l2'.#[global]
  Instance lt_strorder : StrictOrder lt.#[global]
  Instance lt_compat : Proper (eq==>eq==>iff) lt.

(* Specifications: *)
Lemma compare_spec_aux : forall s s', CompSpec eq L.lt s s' (compare s s').
Lemma compare_spec : forall s s', Ok s -> Ok s' -> CompSpec eq lt s s' (compare s s').