A.1.2 Dependent function types (Π-types)


We introduce a primitive constant cΠ, but write cΠ(A,λx.B) as ∏(x:A)B. Judgments concerning such expressions and expressions of the form λ⁢x.b are introduced by the following rules:

  • •

    if Γ⊢A:𝒰n and Γ,x:A⊢B:𝒰n, then Γ⊢∏(x:A)B:𝒰n

  • •

    if Γ,x:A⊢b:B then Γ⊢(λx.b):(∏(x:A)B)

  • •

    if Γ⊢g:∏(x:A)B and Γ⊢t:A then Γ⊢g⁢(t):B⁢[t/x]

If x does not occur freely in B, we abbreviate ∏(x:A)B as the non-dependent function type A→B and derive the following rule:

  • •

    if Γ⊢g:A→B and Γ⊢t:A then Γ⊢g⁢(t):B

Using non-dependent function types and leaving implicit the context Γ, the rules above can be written in the following alternative style that we use in the rest of this section of the appendix.

  • •

    if A:𝒰n and B:A→𝒰n, then ∏(x:A)B⁢(x):𝒰n

  • •

    if x:A⊢b:B then λx.b:∏(x:A)B(x)

  • •

    if g:∏(x:A)B⁢(x) and t:A then g⁢(t):B⁢(t)

Title A.1.2 Dependent function types (Π-types)
\metatable