Module pure_typable_intro_prenex_aux.

(* typing repeated application *)
Lemma pure_typing_fold_right_many_pure_app {Gamma x s' nss t M} :
nth_error Gamma x = Some
(fold_right (fun '(n, s) r => many_poly_abs n (poly_arr s r)) s' nss) ->
pure_typing
Gamma
(many_pure_app (pure_var x) (repeat M (length nss))) t ->
exists ns' ξ' nt' t',
t = many_poly_abs nt' t' /\
contains (many_poly_abs ns' (ren_poly_type ξ' s')) t'.