{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nStart from [[intuitionistic type theory|KCV8RKBATN]] with intensional identity types, dependent function and pair types, and a hierarchy of universes.\n*Homotopy type theory* is this theory extended by two principles.\n\n1. The *univalence axiom*: for each universe $U$ and all types $A, B : U$, the canonical map $\\mathrm{idtoeqv} \\colon (A =_U B) \\to (A \\simeq B)$ is an equivalence.\n2. *Higher inductive types*: types given by generators for points and also for paths. An example is the circle $S^1$, generated by a point $\\mathrm{base} : S^1$ and a path $\\mathrm{loop} : \\mathrm{base} =_{S^1} \\mathrm{base}$.\n\nHere $A \\simeq B$ is the type of equivalences, that is, of functions $f \\colon A \\to B$ that have a two-sided inverse up to identification.\nThe theory is read homotopically.\nA type is a space, a term $a : A$ is a point, and a term $p : a =_A b$ is a path from $a$ to $b$.\n\n## Remarks\n\nExample: in homotopy type theory one proves that the type of loops $\\mathrm{base} =_{S^1} \\mathrm{base}$ is equivalent to the integers $\\Z$.\nThis matches the classical fact that the fundamental group of the circle is $\\Z$.\nNon-example: intuitionistic type theory with extensional identity types, where any two terms of $a =_A b$ are equal, is not compatible with univalence.\nThe type $\\mathbf{2}$ of booleans has two self-equivalences, the identity and the swap.\nWith univalence they give two paths $\\mathbf{2} = \\mathbf{2}$, and extensional identity types make these paths equal.\nThen the identity and the swap would be equal, which is false.\nUnivalence implies function extensionality: two [[functions|0XHDTE5YMZ]] that agree at each point are equal.\n",
  "commit": "547b6eddb8f2feb8d579f2d633d22a27b7e132fc",
  "front": {
    "defines": "EPAAKD80H9",
    "kind": "definition",
    "msc": [
      "03B38",
      "55U35",
      "03F55"
    ],
    "name": "Homotopy type theory",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Homotopy_type_theory"
      }
    ],
    "tag": "JCCTFJV9CN",
    "uses": [
      "KCV8RKBATN",
      "ESVYD9CZ8C",
      "0XHDTE5YMZ"
    ]
  },
  "kind": "definition",
  "link": "https://math2.tamnd.com/node/JCCTFJV9CN/",
  "links": [
    {
      "field": "defines",
      "target": "EPAAKD80H9"
    },
    {
      "field": "uses",
      "target": "KCV8RKBATN"
    },
    {
      "field": "uses",
      "target": "ESVYD9CZ8C"
    },
    {
      "field": "uses",
      "target": "0XHDTE5YMZ"
    }
  ],
  "markdown": "https://math2.tamnd.com/node/JCCTFJV9CN.md",
  "msc": [
    "03B38",
    "55U35",
    "03F55"
  ],
  "name": "Homotopy type theory",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/JCC/JCCTFJV9CN.md",
  "status": null,
  "tag": "JCCTFJV9CN",
  "uri": "m2://JCCTFJV9CN",
  "url": "https://math2.tamnd.com/wiki/homotopy-type-theory-definition/",
  "writing": {
    "tag": "JCCTFJV9CN",
    "kind": "definition",
    "level": "W0",
    "next": [
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
