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.Definition ageN {A} `{ageable A}: nat -> A -> option A := composeOptN age1.

Lemma ageable_ext: forall A (B C: ageable A), @age1 _ B = @age1 _ C -> @level _ B = @level _ C -> B=C.