(* surjectivité de iad_conv *)

Definition iad_conv_prop (p : positive) : Prop :=
  (exists q : positive, p = iad_conv_aux_0 q) \/
  (exists q : positive, p = iad_conv_aux_1 q) \/
  (exists q : positive, (exists r : positive, p = iad_conv_aux_2 q r)).

(* Specifications: *)
Lemma iad_conv_surj_0 : forall p : positive, iad_conv_prop p -> iad_conv_prop (xO (xO p)).
Lemma iad_conv_surj_1 : forall p : positive, iad_conv_prop p -> iad_conv_prop (xO (xI p)).
Lemma iad_conv_surj_2 : forall p : positive, iad_conv_prop p -> iad_conv_prop (xI (xO p)).
Lemma iad_conv_surj_3 : forall p : positive, iad_conv_prop p -> iad_conv_prop (xI (xI p)).
Lemma iad_conv_surj_4 : forall p : positive, iad_conv_prop p /\ iad_conv_prop (xO p) /\ iad_conv_prop (xI p).
Lemma iad_conv_surj_5 : forall p : positive, iad_conv_prop p.
Lemma iad_conv_surj : forall a : ad, exists b : ad, (exists c : ad, a = iad_conv b c).