Β« Home

Polymorphic lambda calculus (SOGAT) [ag-0009]

{-# OPTIONS --safe --without-K #-}
module ag-0009 where

open import MLTT.Spartan
record polymorphic-lambda-calculus : 𝓀₁ Μ‡  where
  field
    Ty : 𝓀₀ Μ‡
    Tm : Ty β†’ 𝓀₀ Μ‡
    _β‡’_ : Ty β†’ Ty β†’ Ty
    lam : {𝐴 𝐡 : Ty} β†’ (Tm 𝐴 β†’ Tm 𝐡) β†’ Tm (𝐴 β‡’ 𝐡)
    _Β·_ : {𝐴 𝐡 : Ty} β†’ Tm (𝐴 β‡’ 𝐡) β†’ (Tm 𝐴 β†’ Tm 𝐡)
    All : (Ty β†’ Ty) β†’ Ty
    Lam : {𝐴 : Ty β†’ Ty} β†’ ((𝑋 : Ty) β†’ Tm (𝐴 𝑋)) β†’ Tm (All 𝐴)
    _β€’_ : {𝐴 : Ty β†’ Ty} β†’ Tm (All 𝐴) β†’ ((𝑋 : Ty) β†’ Tm (𝐴 𝑋))

一樣參照 first-order lambda calculus ηš„ιŽη¨‹οΌŒεŠ δΈŠ contextsγ€εŠ δΈŠ substitutionsοΌŒη›Έζ‡‰ηš„ first-order η­‰εΌθ·Ÿζ”Ήε―«γ€‚