Natural restrictions on the syntax of the second-order (i.e., polymorphic)
lambda calculus are of interest for programming language theory. One of the authors showed in
Leivant (1991) that when type abstraction in that calculus is stratified into levels, the
definable numeric functions are precisely the super-elementary functions (level
[Escr ]4 in the
Grzegorczyk Hierarchy). We define here a second-order lambda calculus in which type
abstraction is stratified to levels up to ωω, an ordinal that permits highly uniform (and
finite) type inference rules. Referring to this system, we show that the numeric functions
definable in the calculus using ranks < ω[lscr ] are precisely Grzegorczyk's class
[Escr ][lscr ]+3 ([lscr ] [ges ] 1).
This generalizes Leivant (1991), where this is proved for [lscr ] = 1. Thus, the numeric functions
definable in our calculus are precisely the primitive recursive functions.