Definition SF_cons (h : R*T) (s : SF_seq) :=
  mkSF_seq (fst h) ((SF_h s,snd h)::(SF_t s)).Definition SF_rcons (s : SF_seq) (t : R*T) :=
  mkSF_seq (SF_h s) (rcons (SF_t s) t).

(* Specifications: *)
Lemma SF_cons_dec (P : SF_seq -> Type) : (forall x0 : R, P (SF_nil x0)) -> (forall h s, P (SF_cons h s)) -> (forall s, P s).
Lemma SF_cons_ind (P : SF_seq -> Type) : (forall x0 : R, P (SF_nil x0)) -> (forall h s, P s -> P (SF_cons h s)) -> (forall s, P s).
Lemma SF_rcons_dec (P : SF_seq -> Type) : (forall x0 : R, P (SF_nil x0)) -> (forall s t, P (SF_rcons s t)) -> (forall s, P s).
Lemma SF_rcons_ind (P : SF_seq -> Type) : (forall x0 : R, P (SF_nil x0)) -> (forall s t, P s -> P (SF_rcons s t)) -> (forall s, P s).
Lemma SF_cons_rcons (h : R*T) (s : SF_seq) (l : R*T) : SF_cons h (SF_rcons s l) = SF_rcons (SF_cons h s) l.
Lemma SF_lx_cons (h : R*T) (s : SF_seq) : SF_lx (SF_cons h s) = (fst h) :: (SF_lx s).
Lemma SF_ly_cons (h : R*T) (s : SF_seq) : SF_ly (SF_cons h s) = (snd h) :: (SF_ly s).
Lemma SF_lx_rcons (s : SF_seq) (h : R*T) : SF_lx (SF_rcons s h) = rcons (SF_lx s) (fst h).
Lemma SF_ly_rcons (s : SF_seq) (h : R*T) : SF_ly (SF_rcons s h) = rcons (SF_ly s) (snd h).
Lemma SF_lx_surj (s s0 : SF_seq) : s = s0 -> SF_lx s = SF_lx s0.
Lemma SF_ly_surj (s s0 : SF_seq) : s = s0 -> SF_ly s = SF_ly s0.
Lemma SF_lx_ly_inj (s s0 : SF_seq) : SF_lx s = SF_lx s0 -> SF_ly s = SF_ly s0 -> s = s0.