Simply Typed Lambda Calculus: Termination and Types

Added:

Core Types
Typing Rules
Self-Application
Expressiveness
Extend Types
Modern Impact

Core Types

0:00
Playing Section
  • 1

    Lambda calculus from functions alone allows infinite loops.

  • 2

    Introduces base types and arrow types for function signatures.

  • 3

    Establishes the foundation for a simple type system.

Untyped Lambda Calculus: Familiarity with variables, lambda abstraction, application, and beta-reduction.
Basic Mathematical Induction: Understanding structural induction, which is crucial for proving properties of type systems.
The Halting Problem and Computability: Knowing why general termination is undecidable in Turing-complete systems.
Basic concepts of Static vs. Dynamic Typing: A foundational understanding of how types restrict program behavior before execution.
System F (Polymorphic Lambda Calculus): Learning how to introduce parametric polymorphism to overcome STLC's expressiveness limits.
The Curry-Howard Isomorphism: Exploring the deep connection between intuitionistic logic and type systems (propositions-as-types).
Type Safety Proofs: Mastering the formal proofs of Progress and Preservation theorems for STLC.
Dependent Type Systems: Investigating advanced type systems (like Martin-Löf Type Theory) where types can depend on terms.
The Barendregt Lambda Cube: Understanding how different dimensions of lambda calculi (polymorphism, type operators, and dependency) relate.
111 views15likes10:05@computablesecretsOriginal Release: 2026-04-02

The simply typed lambda calculus adds type constraints to the untyped lambda calculus, where every expression must have a type (base types, arrow types, and three typing rules for variables, abstraction, and application). This single constraint guarantees that every well-typed term terminates (proven by William Tait's normalization theorem in 1967), because self-application—which enables non-terminating terms like Omega—is untypable. While this sacrifices Turing completeness (preventing general recursion via the Y combinator), it provides a mathematical guarantee of termination that no amount of testing could provide. This trade-off between expressiveness and termination guarantees forms the foundation for all statically typed programming languages, from ML to Rust, and connects to the Curry-Howard correspondence where types are propositions and programs are proofs.