proposition: Lemma ordinals_non_coll1 r: worder_rc r -> (non_coll (fun x => r x x)) -> (forall a, ordinalp a -> exists2 x, r x x & a = ordinalr r x).
proof: Proof. move => pa pb a oa; ex_middle npa; case: pb. exists (Zo (fun_image a (ordinals r)) (fun z => r z z)). move => x; split; first by move /Zo_hi. move => rxx; apply /Zo_P; split => //; apply /funI_P. rewrite - (ordinalsrP pa rxx). case: (oleT_el oa (OS_ordinalr pa rxx));first by move/(ordinalr_segment pa rxx). by move /oltP0 => [_ _ za]; ex_tac. Qed.
imports: mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat)