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 fmap_ind2 (P : fmap -> fmap -> Prop) : P nil nil -> (forall k v1 v2 s1 s2, path ord k (supp s1) -> path ord k (supp s2) -> P s1 s2 -> P (ins k v1 s1) (ins k v2 s2)) -> forall s1 s2, supp s1 =i supp s2 -> P s1 s2.