System F

E807603

System F is a polymorphic lambda calculus that extends simple type systems with universal quantification over types, forming a foundational framework for studying typed functional programming and type theory.

Try in SPARQL Jump to: Statements Referenced by

Statements (50)

Predicate Object
instanceOf formal system
polymorphic lambda calculus
type theory
typed lambda calculus
alsoKnownAs Girard–Reynolds polymorphic lambda calculus NERFINISHED
polymorphic lambda calculus NERFINISHED
second-order lambda calculus NERFINISHED
basedOn lambda calculus NERFINISHED
correspondsTo second-order intuitionistic logic
decidabilityOfTyping undecidable in general
expressivePower can encode many data types and control structures
extends simply typed lambda calculus
feature impredicative polymorphism
parametric polymorphism
type abstraction
type application
universal quantification over types
frameworkFor studying parametricity
studying polymorphism
studying type abstraction
generalizes monomorphic type systems
hasProperty confluence of beta-reduction
strong normalization (for well-typed terms)
subject reduction
type safety
hasSemantics denotational semantics in categorical models
proof-theoretic semantics via natural deduction
hasTypeConstructor universal type (forall type)
influenced Calculus of Constructions NERFINISHED
GHC Haskell type system extensions
Hindley–Milner type system NERFINISHED
ML-style polymorphism theory
System Fω NERFINISHED
introducedBy Jean-Yves Girard NERFINISHED
John C. Reynolds NERFINISHED
logicalOrder second-order
publicationYear 1972
quantifiesOver types
relatedSystem Calculus of Constructions NERFINISHED
System Fω NERFINISHED
relatedTo Curry–Howard correspondence NERFINISHED
supports Church encodings of data structures
encoding of algebraic data types
higher-order functions
polymorphic functions
usedIn programming language semantics
proof assistants design
proof theory
type theory research
typed functional programming

Referenced by (2)

Full triples — surface form annotated when it differs from this entity's canonical label.