(* Apply [age1] n times (meaningful when [n <= level x] *)

Definition age1' {A} `{agA : ageable A} : A -> A :=
  fun x => match age1 x with Some y => y | None => x end.Definition age_by n {A} `{agA : ageable A} : A -> A := Nat.iter n age1'.

(* Specifications: *)
Lemma level_age1' {A} `{agA : ageable A} x : level (age1' x) = level x - 1.
Lemma level_age_by n {A} `{agA : ageable A} x : level (age_by n x) = level x - n.
Lemma age_age_by n {A} `{agA : ageable A} (x y : A) : age x y -> age_by (S n) x = age_by n y.