System F
https://en.wikipedia.org/wiki/System_F
First there was the completely unconstrained lambda calculus which proved paradox prone, so, as before, types were thrown in, trading one problem for a myriad more.
System F
, aka the Girard-Reynolds polymorphic λ-calculus or the second-order λ-calculus, is a typed λ-calculus that differs from the STLC by the introduction of a mechanism of universal quantification over types. System F thus formalizes the notion of parametric polymorphism. System F was discovered independently by logician Jean-Yves Girard (1972) and computer scientist John C. Reynolds (1974).
Whereas STLC has variables ranging over terms, and binders for them, System F additionally has variables ranging over types, and binders for them.
As an example, the fact that the identity function can have any type of the form A -> A
would be formalized in System F as the judgment:
-- judgment
⊢ Λα. λxᵃ. x : ∀α. α → α
-- one line definition
Λα. λxᵃ. x : ∀α. α → α
-- split into type signature and definition
id :: Λa. ∀a. (a -> a)
id :: λxᵃ. x
where
Λa.
is type-level binder∀a.
is the universal quantifier (binder?)α
is a type variableλx.
is term-level binderx
is a term variablexᵃ
is a term variable x of type αa -> a
is a type-level functionλx. x
is a term-level function (lambda abstraction)
The Λ
is traditionally used to denote type-level functions, as opposed to the λ
which denotes term-level functions. (the superscripted xᵃ
means that the bound x
is of type α
).
As a term rewriting system, System F is strongly normalizing. However, type inference in System F (without explicit type annotations) is undecidable.
Under the Curry-Howard isomorphism, System F corresponds to the fragment of second-order intuitionistic logic that uses only universal quantification.
System F can be seen as part of the lambda cube, together with even more expressive typed lambda calculi, including those with dependent types.
Typing rules
The typing rules of System F are the rule 1-4 of Simply Typed Lambda Calculus with the addition of rules 5-6
𝔁:σ ∈ Γ
(1) --------
Γ |- 𝔁:σ
𝚌𝚘𝚗𝚜𝚝 𝓬:T (𝓬 is a constant of type T)
(2) ---------
Γ |- 𝓬:T
Γ, 𝔁:σ |- 𝓮:τ
(3) --------------------
Γ |- (λ𝔁:σ.𝓮):σ -> τ
Γ |- 𝓮₁:σ -> τ Γ |- 𝓮₂:σ
(4) --------------------------
Γ |- 𝓮₁𝓮₂:τ
Γ |- M:∀α.σ
(5) --------------------
Γ |- Mτ:σ[τ/α]
Γ,α type |- M:σ
(6) --------------------
Γ |- Λα.M:∀α.σ
where α type
in the context indicates that α is bound (rule 6) .
The 5th rule is that of application, and the 6th of abstraction.
TYPES Summer School 2005
Proofs of Programs and Formalisation of Mathematics - Lecture Notes Vol I
Last updated
Was this helpful?