{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $(P, \\le)$ be an [[omega-complete partial order|T4BCQHR68Y]]: every increasing sequence $x_0 \\le x_1 \\le x_2 \\le \\cdots$ in $P$ has a [[supremum|0R3H5PANRQ]] in $P$.\nAssume that $P$ has a [[least element|0AANKKNHS4]] $\\bot$.\nLet $f \\colon P \\to P$ be [[continuous|C6GAHS1Z2P]] in this sense: $f$ is monotone, and $f\\left(\\sup_n x_n\\right) = \\sup_n f(x_n)$ for every increasing sequence $(x_n)$.\nThen $f$ has a [[least fixed point|DBD64TH52D]], and\n$$\\operatorname{lfp}(f) = \\sup_{n \\ge 0} f^n(\\bot),$$\nwhere $f^0(\\bot) = \\bot$ and $f^{n+1}(\\bot) = f(f^n(\\bot))$.\n\n## Remarks\n\nProof idea: $\\bot \\le f(\\bot)$, and monotonicity gives $f^n(\\bot) \\le f^{n+1}(\\bot)$ by induction, so the iterates form an increasing sequence with supremum $x$.\nContinuity gives $f(x) = \\sup_n f^{n+1}(\\bot) = x$.\nIf $y$ is any fixed point, then $\\bot \\le y$ and induction gives $f^n(\\bot) \\le f^n(y) = y$, so $x \\le y$.\nThe same statement holds for a directed-complete partial order with least element and a Scott-continuous $f$.\nExample: on the power set of $\\N$, the map $f(S) = \\set{0} \\cup \\set{n + 2 : n \\in S}$ preserves unions of increasing sequences.\nIts iterates from $\\emptyset$ are $\\set{0}$, $\\set{0, 2}$, $\\set{0, 2, 4}$, and so on, and their union, the even numbers, is the least fixed point.\nContinuity cannot be dropped from the formula: on the chain $\\N \\cup \\set{\\omega, \\omega + 1}$, the monotone map with $f(n) = n + 1$, $f(\\omega) = \\omega + 1$ and $f(\\omega + 1) = \\omega + 1$ has least fixed point $\\omega + 1$, while $\\sup_n f^n(0) = \\omega$.\n\n## Explanations\n\n### L1 human\n\nStart at the bottom and apply $f$ again and again.\nThe values climb up step by step, and their limit is the least fixed point of $f$.\nThis gives a way to compute least fixed points, not only to know that they exist.\nIt is how the meaning of a recursive program is defined: run the recursion $0, 1, 2, \\ldots$ levels deep and take the limit.\n\n### L2 human\n\nThe theorem is the main tool of denotational semantics, where recursive definitions are interpreted as least fixed points of continuous maps on domains.\nCompared with the [[Knaster–Tarski theorem|RHXP3HA64M]], it needs less of the order, only suprema of increasing sequences, but more of the map, namely continuity, and it gives an explicit construction.\nFor a monotone map that is not continuous, the iteration has to continue transfinitely, through $f^\\omega(\\bot) = \\sup_n f^n(\\bot)$, $f^{\\omega + 1}(\\bot)$, and so on, until it stabilises.\nIn Datalog and in dataflow analysis on finite lattices, the iteration stops after finitely many steps.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "DBD64TH52D"
    ],
    "kind": "statement",
    "msc": [
      "06B35",
      "03B70",
      "68Q55"
    ],
    "name": "Kleene fixed-point theorem",
    "role": "theorem",
    "same_as": {
      "wikidata": "Q3527263",
      "wikipedia": "Kleene fixed-point theorem"
    },
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Kleene_fixed-point_theorem"
      }
    ],
    "tag": "DDAHG7QRY8",
    "uses": [
      "T4BCQHR68Y",
      "C6GAHS1Z2P",
      "DBD64TH52D",
      "0R3H5PANRQ",
      "0AANKKNHS4"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/DDAHG7QRY8/",
  "links": [
    {
      "field": "about",
      "target": "DBD64TH52D"
    },
    {
      "field": "uses",
      "target": "T4BCQHR68Y"
    },
    {
      "field": "uses",
      "target": "C6GAHS1Z2P"
    },
    {
      "field": "uses",
      "target": "DBD64TH52D"
    },
    {
      "field": "uses",
      "target": "0R3H5PANRQ"
    },
    {
      "field": "uses",
      "target": "0AANKKNHS4"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/DDAHG7QRY8.md",
  "msc": [
    "06B35",
    "03B70",
    "68Q55"
  ],
  "name": "Kleene fixed-point theorem",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/DDA/DDAHG7QRY8.md",
  "status": null,
  "tag": "DDAHG7QRY8",
  "uri": "m2://DDAHG7QRY8",
  "url": "https://tamnd.github.io/math2/wiki/kleene-fixed-point-theorem/",
  "writing": {
    "tag": "DDAHG7QRY8",
    "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
      }
    ]
  }
}
