End Laws.
Section Append.
Variable (K : ordType) (V : Type).
Notation fmap := (finMap K V).
Notation nil := (nil K V).

(* Specifications: *)
Lemma seqof_ins k v (s : fmap) :
path ord k (supp s) -> seq_of (ins k v s) = (k, v) :: seq_of s.
Lemma path_supp_ins_inv k1 k v (s : fmap) :
path ord k (supp s) -> path ord k1 (supp (ins k v s)) ->
ord k1 k && path ord k1 (supp s).
(* forward induction principle *)
Lemma fmap_ind' (P : fmap -> Prop) :
P nil -> (forall k v s, path ord k (supp s) -> P s -> P (ins k v s)) ->
forall s, P s.
(* backward induction principle *)
Lemma fmap_ind'' (P : fmap -> Prop) :
P nil -> (forall k v s, (forall x, x \in supp s -> ord x k) ->
P s -> P (ins k v s)) ->
forall s, P s.