Section BIJECTION.
Variable A B : Type.
Variable ag: ageable A.
Variable bijAB: bijection A B.
Let levelB (x:B) : nat :=
level (bij_g _ _ bijAB x).
Let age1B  (x: B) : option B :=
match age1 (bij_g _ _ bijAB x) with
| Some y => Some (bij_f _ _ bijAB y)
| None => None
end.
Let ageB (x y: B) :=age1B x = Some y.

(* Specifications: *)
Lemma age_bij_unage :
forall x', exists x, age1B x = Some x'.
Lemma age_bij_level1 :
forall x, age1B x = None <-> levelB x = 0.
Lemma age_bij_level2 :
forall x y, age1B x = Some y -> levelB x = S (levelB y).
Lemma ag_bij_facts : ageable_facts B levelB age1B.
Definition ag_bij : ageable B :=
mkAgeable B levelB age1B ag_bij_facts.