Inductive SkipList: list T -> list T -> Prop :=
    | SkipList_head (x: T) l l': SkipList l l' -> SkipList (x :: l) (x :: l')
    | SkipList_tail (x: T) l l': SkipList l l' -> SkipList l (x :: l')
    | SkipList_nil l: SkipList nil l.Inductive SkipList: list T -> list T -> Prop :=
    | SkipList_head (x: T) l l': SkipList l l' -> SkipList (x :: l) (x :: l')
    | SkipList_tail (x: T) l l': SkipList l l' -> SkipList l (x :: l')
    | SkipList_nil l: SkipList nil l.Inductive SkipList: list T -> list T -> Prop :=
    | SkipList_head (x: T) l l': SkipList l l' -> SkipList (x :: l) (x :: l')
    | SkipList_tail (x: T) l l': SkipList l l' -> SkipList l (x :: l')
    | SkipList_nil l: SkipList nil l.Inductive SkipList: list T -> list T -> Prop :=
    | SkipList_head (x: T) l l': SkipList l l' -> SkipList (x :: l) (x :: l')
    | SkipList_tail (x: T) l l': SkipList l l' -> SkipList l (x :: l')
    | SkipList_nil l: SkipList nil l.

(* Specifications: *)
Lemma SkipList_refl (l: list T): SkipList l l.
Lemma SkipList_filter (p: T -> bool) (l: list T): SkipList (filter p l) l.
Lemma SkipList_incl (y x: list T): SkipList x y -> incl x y.
Lemma NoDup_SkipList (l: list T): NoDup l -> forall l', SkipList l' l -> NoDup l'.
Lemma SkipList_trans (y x: list T): SkipList x y -> forall z, SkipList y z -> SkipList x z.
Lemma SkipList_map (A: Set) (x y: list A): SkipList x y -> forall (B: Set) (f: A -> B), SkipList (map f x) (map f y).