refine
(fun s : srt_ecc =>
match s return {sp : srt_ecc | ppal (axiom_ecc s) univ sp} with
| Sprop => exist _ (Stype 0) _
| Stype n => exist _ (Stype (S n)) _
end).
split; intros; auto with arith pts.
inversion_clear H; auto with arith pts.
split; intros; auto with arith pts.
inversion_clear H; auto with arith pts.
Qed.

Lemma ecc_inf_rule :
forall x1 x2 : srt_ecc,
{x3 : srt_ecc | rules_ecc x1 x2 x3 &
forall s1 s2 s3 : srt_ecc,
rules_ecc s1 s2 s3 -> univ x1 s1 -> univ x2 s2 -> univ x3 s3}.