Skip to content
Documentation out of dateLearn more

Basics

The first part of any language we must define is its syntax.

The most important layer of the syntax is that of terms

Here, we call the syntax of the terms ϕ\phi:

ϕ::=xAλxσ0.ϕ0(ϕ0ϕ1)σ::=SΠxσ0.σ1Λxσ0.σ1(σ0ϕ0)κ::=Πxσ0.κ0\phi ::= x | A | \lambda_x \sigma_0 . \phi_0 | (\phi_0 \phi_1) \\ \sigma ::= S | \Pi_x \sigma_0 . \sigma_1 | \Lambda_x \sigma_0 . \sigma_1 | (\sigma_0 \phi_0) \\ \kappa ::= \Pi_x \sigma_0 . \kappa_0 | \ast

The terms, in more detail, describe the proofs of judgements. In addition, they also describe the syntax of the object logic.

  1. Variables: a variable is a term bound in the context, Γ\Gamma. Ultimately, the techinical details are not important (in the end we end up using De Brujn indices).
  2. Constants: a constant is a term bound free in the signature. It must be bound to a valid σ\sigma,