Fixpoint fcat' (s1 : fmap) (s2 : seq (K * V)) {struct s2} : fmap :=
  if s2 is (k, v)::t then fcat' (ins k v s1) t else s1.Definition fcat s1 s2 := fcat' s1 (seq_of s2).

Lemma fcatA (s1 s2 s3 : fmap) : disj s2 s3 -> fcat (fcat s1 s2) s3 = fcat s1 (fcat s2 s3).