intros.
elim inf_rule with x1 x2; intros; auto with arith pts.
split with x.
split; intros.
split with x1; simpl in |- *; auto with arith pts.
split with x2; simpl in |- *; auto with arith pts.
cut (rt_univ x y); auto with arith pts.
inversion_clear H.
inversion_clear H1.
simpl in H0, H, H2.
apply q with x0 x3; auto with arith pts.
cut (cumul_hn_inv e (Srt x1) (Srt x0)); intros.
inversion_clear H1; trivial with arith pts.
apply inv_cumul_hn with (Srt x1) (Srt x0); auto with arith pts.
cut (cumul_hn_inv e (Srt x2) (Srt x3)); intros.
inversion_clear H1; trivial with arith pts.
apply inv_cumul_hn with (Srt x2) (Srt x3); auto with arith pts.
Qed.

(* Specifications: *)
Lemma cumul_topsort_untyped :
forall (e : env) (s s' : sort) (t : term),
rt_cumul e (Srt s) t ->
typ cts_pts_functor e t (Srt s') -> typed_sort axiom s.