End PROD'.
Fixpoint composeOptN (A: Type) (f: A -> option A)
(n: nat) (w: A) {struct n} : option A :=
match n  with
| S n' => match f w with Some w' => composeOptN A f n' w' | None => None end
| O => Some w
end.
Arguments composeOptN [A] _ _ _.
Definition ageN {A} `{ageable A}: nat -> A -> option A := composeOptN age1.

Lemma age_noetherian'  {A} `{agA : ageable A}:
forall phi, exists! n, exists phi', ageN n phi = Some phi' /\ age1 phi' = None.