(* PERIODICITY + n TIMES: *)

(* Specifications: *)
Lemma Iter_plus_mult:forall(m:fmap)(z:dart)(n p i:nat),
inv_hmap m -> exd m z ->
Iter (f m) p z = z ->
Iter (f m) (i + n*p)%nat z = Iter (f m) i z.
Lemma Iter_comp:forall(m:fmap)(i j:nat)(z:dart),
Iter (f m) (i+j)%nat z = Iter (f m) i (Iter (f m) j z).
Lemma f_1_Iter_f:forall(m:fmap)(i:nat)(z:dart),
inv_hmap m -> exd m z ->
(f_1 m) (Iter (f m) (S i) z) = Iter (f m) i z.
Lemma Iter_f_f_1  :forall(m:fmap)(i j:nat)(z:dart),
inv_hmap m -> exd m z -> (j <= i)%nat ->
Iter (f_1 m) j (Iter (f m) i z) =
Iter (f m) (i - j)%nat z.
Lemma Iter_f_f_1_i:forall(m:fmap)(i:nat)(z:dart),
inv_hmap m -> exd m z ->
Iter (f_1 m) i (Iter (f m) i z) = z.