(** ** SF_sorted *)
Definition SF_sorted (Ord : R -> R -> Prop) (s : SF_seq) :=
sorted Ord (SF_lx s).
End SF_seq.
(** ** SF_map *)
Section SF_map.
Context {T T0 : Type}.
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.