nLab higher-order abstract syntax

Contents

Context

Type theory

natural deduction metalanguage, practical foundations

  1. type formation rule
  2. term introduction rule
  3. term elimination rule
  4. computation rule

type theory (dependent, intensional, observational type theory, homotopy type theory)

syntax object language

computational trinitarianism =
propositions as types +programs as proofs +relation type theory/category theory

logicset theory (internal logic of)category theorytype theory
propositionsetobjecttype
predicatefamily of setsdisplay morphismdependent type
proofelementgeneralized elementterm/program
cut rulecomposition of classifying morphisms / pullback of display mapssubstitution
introduction rule for implicationcounit for hom-tensor adjunctionlambda
elimination rule for implicationunit for hom-tensor adjunctionapplication
cut elimination for implicationone of the zigzag identities for hom-tensor adjunctionbeta reduction
identity elimination for implicationthe other zigzag identity for hom-tensor adjunctioneta conversion
truesingletonterminal object/(-2)-truncated objecth-level 0-type/unit type
falseempty setinitial objectempty type
proposition, truth valuesubsingletonsubterminal object/(-1)-truncated objecth-proposition, mere proposition
logical conjunctioncartesian productproductproduct type
disjunctiondisjoint union (support of)coproduct ((-1)-truncation of)sum type (bracket type of)
implicationfunction set (into subsingleton)internal hom (into subterminal object)function type (into h-proposition)
negationfunction set into empty setinternal hom into initial objectfunction type into empty type
universal quantificationindexed cartesian product (of family of subsingletons)dependent product (of family of subterminal objects)dependent product type (of family of h-propositions)
existential quantificationindexed disjoint union (support of)dependent sum ((-1)-truncation of)dependent sum type (bracket type of)
logical equivalencebijection setobject of isomorphismsequivalence type
support setsupport object/(-1)-truncationpropositional truncation/bracket type
n-image of morphism into terminal object/n-truncationn-truncation modality
equalitydiagonal function/diagonal subset/diagonal relationpath space objectidentity type/path type
completely presented setsetdiscrete object/0-truncated objecth-level 2-type/set/h-set
setset with equivalence relationinternal 0-groupoidBishop set/setoid with its pseudo-equivalence relation an actual equivalence relation
equivalence class/quotient setquotientquotient type
inductioncolimitinductive type, W-type, M-type
higher inductionhigher colimithigher inductive type
-0-truncated higher colimitquotient inductive type
coinductionlimitcoinductive type
presettype without identity types
set of truth valuessubobject classifiertype of propositions
domain of discourseuniverseobject classifiertype universe
modalityclosure operator, (idempotent) monadmodal type theory, monad (in computer science)
linear logic(symmetric, closed) monoidal categorylinear type theory/quantum computation
proof netstring diagramquantum circuit
(absence of) contraction rule(absence of) diagonalno-cloning theorem
synthetic mathematicsdomain specific embedded programming language

homotopy levels

semantics

Contents

Idea

The term higher-order abstract syntax has been used to refer to several distinct, but related, concepts. In chronological order, and from least to most generality:

  1. A logical framework proposed by [Pfenning & Elliot (1988)] based on the simply-typed lambda-calculus with polymorphism.
  2. The logical framework technique of representing abstract syntax for theories with variable-binding operators? using the function types of another theory viewed as a meta-theory, popularised by LF and Pfenning–Elliot’s logical framework described in (1).
  3. Abstract syntax for theories with variable-binding operators, metavariable-binding operators, and so on. The logical framework technique in (2) is a particular representation of such abstract syntax.

Usage (1) does not appear to be in common usage. Usage (2) tends to be the convention in literature on logical frameworks; while usage (3) is the convention in literature on algebraic type theory, though note that authors often restrict to second-order abstract syntax?, which is sufficient for most type theories.

Examples of variable-binding operators are lambda-abstraction and quantifiers (e.g. in higher-order logic, whence the name).

Higher-order abstract syntax in logical frameworks

In logical frameworks, one formalizes languages supporting forms of name binding (such as function parameters or quantifiers) by using the meta-language function space rather than a more syntactic notion of bound variable.

Higher-order abstract syntax in algebraic type theory

Traditional approaches to abstract syntax, e.g. for algebraic theories, typically involve abstract syntax trees. However, it is not possibly directly to capture variable-binding operators? with such structures. Therefore, alternative structures are necessary to capture the syntax of theories with such operators, e.g. type theories.

One possible approach is via the logical framework approach described above.

References

See also:

Last revised on January 5, 2023 at 18:18:19. See the history of this page for a list of all contributions to it.