Constructivism, Realizability, Computability

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

logiccategory theorytype theory
trueterminal object/(-2)-truncated objecth-level 0-type/unit type
falseinitial objectempty type
proposition(-1)-truncated objecth-proposition, mere proposition
proofgeneralized elementprogram
cut rulecomposition of classifying morphisms / pullback of display mapssubstitution
cut elimination for implicationcounit for hom-tensor adjunctionbeta reduction
introduction rule for implicationunit for hom-tensor adjunctioneta conversion
logical conjunctionproductproduct type
disjunctioncoproduct ((-1)-truncation of)sum type (bracket type of)
implicationinternal homfunction type
negationinternal hom into initial objectfunction type into empty type
universal quantificationdependent productdependent product type
existential quantificationdependent sum ((-1)-truncation of)dependent sum type (bracket type of)
equivalencepath space objectidentity type/path type
equivalence classquotientquotient type
inductioncolimitinductive type, W-type, M-type
higher inductionhigher colimithigher inductive type
-0-truncated higher colimitquotient inductive type
coinductionlimitcoinductive type
completely presented setdiscrete object/0-truncated objecth-level 2-type/preset/h-set
setinternal 0-groupoidBishop set/setoid
universeobject classifiertype of types
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




Metamath is a proof assistant for creating databases of formally verified proofs. The proof language is extremely parsimonious using textual substitution as its only rule of inference (augmented by distinct variable constraints so that unfortunate variable captures can be prohibited).

One disadvantage of this philosophy is that definitions, syntax and axioms are all axioms. In particular, the user is responsible for ensuring that no ambiguities or contradictions are inadvertently introduced.

Metamath proof verifiers can be very small and simple, so many have been implemented in a wide variety of computer languages. Perhaps the most interesting was created by Stephen O’Rear using a language that makes Turing machines optimised for few states. This was used to reduce the bound of the smallest Busy Beaver Number that ZFC cannot prove to exist. A side effect was a small turing machine that halts iff the Riemann Hypothesis is False (and gives the smallest counterexample)

proof assistants:

based on plain type theory/set theory:

based on dependent type theory/homotopy type theory:

For monoidal category theory:

For higher category theory:

projects for formalization of mathematics with proof assistants:

Historical projects that died out:


Metamath was originally designed by Norman Megill, but many people have contributed over the years.

There are several Metamath databases on the Metamath website. The most developed covers classical ZFC set theory, but there is a very nice NF set theory database and a couple of other less well developed ones.

See also

Last revised on June 12, 2021 at 11:46:39. See the history of this page for a list of all contributions to it.