(** ** SF_sorted *)

Definition SF_sorted (Ord : R -> R -> Prop) (s : SF_seq) :=
  sorted Ord (SF_lx s).Definition SF_map  (f : T -> T0) (s : SF_seq) : SF_seq :=
  mkSF_seq (SF_h s) (map (fun x => (fst x,f (snd x))) (SF_t s)).

(* Specifications: *)
Lemma SF_map_cons (f : T -> T0) (h : R*T) (s : SF_seq) : SF_map f (SF_cons h s) = SF_cons (fst h, f (snd h)) (SF_map f s).
Lemma SF_map_rcons (f : T -> T0) (s : SF_seq) (h : R*T) : SF_map f (SF_rcons s h) = SF_rcons (SF_map f s) (fst h, f (snd h)).
Lemma SF_map_lx (f : T -> T0) (s : SF_seq) : SF_lx (SF_map f s) = SF_lx s.
Lemma SF_map_ly (f : T -> T0) (s : SF_seq) : SF_ly (SF_map f s) = map f (SF_ly s).
Lemma SF_map_rev (f : T -> T0) s : SF_rev (SF_map f s) = SF_map f (SF_rev s).
Lemma SF_map_sort (f : T -> T0) (s : SF_seq) (Ord : R -> R -> Prop) : SF_sorted Ord s -> SF_sorted Ord (SF_map f s).
Lemma SF_size_map (f : T -> T0) s : SF_size (SF_map f s) = SF_size s.