(* THERE EXISTS j <= n S.T. zj = t: INDUCTIVE DEF. *)

Fixpoint ex_j
 (m:fmap)(z t:dart)(n:nat){struct n}:Prop:=
match n with
   0%nat => z = t
 | S n0 => Iter (f m) n z = t \/ ex_j m z t n0
end.

Theorem period_lub : forall(m:fmap)(z:dart), inv_hmap m -> exd m z -> let nr:= Iter_upb m z in 0 < nr /\ Iter (f m) nr z = z /\ forall i:nat, 0 < i < nr -> Iter (f m) i z <> z.