{
  "aliases": null,
  "backlinks": [
    {
      "field": "defines",
      "target": "RWNTZ2AYA7"
    }
  ],
  "body": "\n## Summary\n\nZeilberger's algorithm, also called the method of creative telescoping, takes a definite sum $f(n) = \\sum_k F(n, k)$ of a hypergeometric term.\nIt finds a linear [[recurrence|0FYX44GP92]] in $n$ with polynomial coefficients that $f$ satisfies.\nIt works by running a parametrised version of [[Gosper's algorithm|NHMJQBS04M]] on a combination of shifts $F(n + j, k)$.\nWith the recurrence and a few initial values, identities for definite sums can be proved or discovered automatically.\nIt is a main tool of the \"A = B\" approach to hypergeometric identities.\n\n## Explanations\n\n### L1 human\n\nMany identities say that a sum over $k$ of binomial-like terms has a simple value depending on $n$.\nZeilberger's algorithm does not guess the value; it finds a recurrence in $n$ that the sum must satisfy.\nFor $\\sum_k \\binom{n}{k}$ it finds $f(n + 1) = 2f(n)$, and with $f(0) = 1$ this gives $2^n$.\nIf the claimed value satisfies the same recurrence and the same initial values, the identity is proved.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "kind": "concept",
    "msc": [
      "33F10",
      "05A19",
      "68W30"
    ],
    "name": "Zeilberger's algorithm",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Wilf%E2%80%93Zeilberger_pair"
      }
    ],
    "tag": "VA7MH05Z3B"
  },
  "kind": "concept",
  "link": "https://tamnd.github.io/math2/node/VA7MH05Z3B/",
  "links": null,
  "markdown": "https://tamnd.github.io/math2/node/VA7MH05Z3B.md",
  "msc": [
    "33F10",
    "05A19",
    "68W30"
  ],
  "name": "Zeilberger's algorithm",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/VA7/VA7MH05Z3B.md",
  "status": null,
  "tag": "VA7MH05Z3B",
  "uri": "m2://VA7MH05Z3B",
  "url": "https://tamnd.github.io/math2/wiki/zeilbergers-algorithm/",
  "writing": {
    "tag": "VA7MH05Z3B",
    "kind": "concept",
    "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
      }
    ]
  }
}
