{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $A$ be a finite set and let $d \\ge 1$.\nGive $A^{\\Z^d}$ the [[product topology|0Z57EC6YX3]] of the discrete topologies.\nFor $v \\in \\Z^d$ let $\\sigma_v \\colon A^{\\Z^d} \\to A^{\\Z^d}$ be the shift $\\sigma_v(x)_u = x_{u + v}$.\nLet $F \\colon A^{\\Z^d} \\to A^{\\Z^d}$ be a map.\nThen the following are equivalent:\n\n1. $F$ is [[continuous|0P27W9RW0G]] and $F \\circ \\sigma_v = \\sigma_v \\circ F$ for all $v \\in \\Z^d$.\n2. There are a finite set $N \\subseteq \\Z^d$ and a map $f \\colon A^N \\to A$ such that $F(x)_u = f\\big((x_{u + n})_{n \\in N}\\big)$ for all $x$ and all $u \\in \\Z^d$.\n\n## Remarks\n\nCondition 2 says that $F$ is a [[cellular automaton|5QXNC6NTVN]] with neighbourhood $N$ and local rule $f$.\nFor 2 implies 1, the value $F(x)_u$ depends only on finitely many coordinates of $x$, which gives continuity.\nThe same rule is used at every site, which gives commutation with shifts.\nFor 1 implies 2, the space $A^{\\Z^d}$ is compact, so $F$ is uniformly continuous.\nHence $F(x)_0$ is determined by the coordinates $x_n$ with $n$ in some finite set $N$, and this defines $f$.\nCommutation with the shifts then gives the formula at every site $u$.\nCompactness is essential: over an infinite alphabet there are continuous shift-commuting maps that are not given by a finite rule.\nThe same statement holds for maps between [[shift spaces|A1XE59ZHNM]], where condition 2 says that $F$ is a sliding block code.\n\n## Explanations\n\n### L1 human\n\nA cellular automaton updates every cell of a grid by looking at a few neighbours and applying a fixed rule.\nSuch a map treats all positions alike and changes only a little when the input changes far away.\nThe theorem says that these two properties characterise cellular automata.\nSo one can define cellular automata either by rules or by topology.\n\n### L2 human\n\nThe theorem lets one treat a cellular automaton as an endomorphism of the dynamical system $(A^{\\Z^d}, \\sigma)$.\nIt shows, for instance, that the inverse of a bijective cellular automaton is again a cellular automaton.\nA continuous bijection of a compact space onto a Hausdorff space has a continuous inverse, and that inverse commutes with the shifts.\nIn one dimension the theorem identifies the conjugacies between shift spaces with invertible sliding block codes.\nIt is a basic tool in the classification of [[subshifts of finite type|624XDXX8FN]].\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "5QXNC6NTVN",
      "A1XE59ZHNM"
    ],
    "kind": "statement",
    "msc": [
      "37B10",
      "37B15"
    ],
    "name": "Curtis–Hedlund–Lyndon theorem",
    "role": "theorem",
    "same_as": {
      "wikidata": "Q5195996",
      "wikipedia": "Curtis–Hedlund–Lyndon theorem"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Curtis%E2%80%93Hedlund%E2%80%93Lyndon_theorem"
      }
    ],
    "tag": "N35QM9G83G",
    "uses": [
      "A1XE59ZHNM",
      "0P27W9RW0G",
      "0Z57EC6YX3"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/N35QM9G83G/",
  "links": [
    {
      "field": "about",
      "target": "5QXNC6NTVN"
    },
    {
      "field": "about",
      "target": "A1XE59ZHNM"
    },
    {
      "field": "uses",
      "target": "A1XE59ZHNM"
    },
    {
      "field": "uses",
      "target": "0P27W9RW0G"
    },
    {
      "field": "uses",
      "target": "0Z57EC6YX3"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/N35QM9G83G.md",
  "msc": [
    "37B10",
    "37B15"
  ],
  "name": "Curtis–Hedlund–Lyndon theorem",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/N35/N35QM9G83G.md",
  "status": null,
  "tag": "N35QM9G83G",
  "uri": "m2://N35QM9G83G",
  "url": "https://tamnd.github.io/math2/wiki/curtis-hedlund-lyndon-theorem/",
  "writing": {
    "tag": "N35QM9G83G",
    "kind": "statement",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
