Programming Language Theory

  1. Type Systems
    1. Foundations of Typing
      1. Purpose of Type Systems
        1. Error Prevention
          1. Program Documentation
            1. Optimization Enablement
              1. Abstraction Support
              2. Type Safety
                1. Progress Property
                  1. Preservation Property
                    1. Type Soundness
                  2. Basic Type Theory
                    1. Type Judgments
                      1. Typing Relations
                        1. Typing Rules
                          1. Derivation Trees
                          2. Type Checking
                            1. Algorithmic Type Checking
                              1. Type Checking vs Type Inference
                              2. Type Environments
                                1. Variable Typing
                                  1. Environment Extension
                                2. Simply Typed Lambda Calculus
                                  1. Type Syntax
                                    1. Base Types
                                      1. Function Types
                                      2. Typing Rules
                                        1. Variable Rule
                                          1. Abstraction Rule
                                            1. Application Rule
                                            2. Properties
                                              1. Subject Reduction
                                                1. Strong Normalization
                                                  1. Decidability
                                                2. Type System Extensions
                                                  1. Product Types
                                                    1. Pair Types
                                                      1. Record Types
                                                        1. Projection Operations
                                                        2. Sum Types
                                                          1. Variant Types
                                                            1. Tagged Unions
                                                              1. Case Analysis
                                                              2. Recursive Types
                                                                1. Inductive Types
                                                                  1. Coinductive Types
                                                                    1. Iso-Recursive vs Equi-Recursive
                                                                    2. Subtyping
                                                                      1. Subtype Relations
                                                                        1. Subsumption Rule
                                                                          1. Width and Depth Subtyping
                                                                        2. Polymorphism
                                                                          1. Parametric Polymorphism
                                                                            1. Type Variables
                                                                              1. Universal Quantification
                                                                                1. System F
                                                                                  1. Type Instantiation
                                                                                  2. Type Inference
                                                                                    1. Hindley-Milner System
                                                                                      1. Unification Algorithm
                                                                                        1. Principal Types
                                                                                          1. Let-Polymorphism
                                                                                          2. Ad-hoc Polymorphism
                                                                                            1. Overloading
                                                                                              1. Type Classes
                                                                                                1. Instance Resolution
                                                                                              2. Advanced Type Features
                                                                                                1. Dependent Types
                                                                                                  1. Types Depending on Terms
                                                                                                    1. Pi Types
                                                                                                      1. Sigma Types
                                                                                                      2. Linear Types
                                                                                                        1. Resource Tracking
                                                                                                          1. Linear Logic
                                                                                                            1. Affine Types
                                                                                                            2. Effect Systems
                                                                                                              1. Effect Annotations
                                                                                                                1. Effect Inference
                                                                                                                  1. Monadic Effects