Record SF_seq := mkSF_seq {SF_h : R ; SF_t : seq (R * T)}.Record SF_seq := mkSF_seq {SF_h : R ; SF_t : seq (R * T)}.Record SF_seq := mkSF_seq {SF_h : R ; SF_t : seq (R * T)}.Record SF_seq := mkSF_seq {SF_h : R ; SF_t : seq (R * T)}.Definition SF_lx (s : SF_seq) : seq R := (SF_h s)::(unzip1 (SF_t s)).Definition SF_ly (s : SF_seq) : seq T := unzip2 (SF_t s).Definition SF_make (lx : seq R) (ly : seq T) (Hs : size lx = S (size ly)) : SF_seq :=
  mkSF_seq (head 0 lx) (zip (behead lx) ly).

Lemma SF_seq_bij (s : SF_seq) : SF_make (SF_lx s) (SF_ly s) (SF_size_lx_ly s) = s.