{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $U \\subseteq \\R^m$ be a nonempty compact set and $T \u003e 0$.\nLet $f \\colon [0, T] \\times \\R^n \\times U \\to \\R^n$ be continuous and Lipschitz in $x$ uniformly in $(t, u)$, and let $L$ and $g$ be continuous.\nLet $V$ be the [[value function|K6G0DRQ3CP]] of the problem of minimizing $\\int_t^T L(s, y, u) \\, ds + g(y(T))$ subject to $y' = f(s, y, u)$, $y(t) = x$.\nLet $W \\colon [0, T] \\times \\R^n \\to \\R$ be continuous, of class $C^1$ on $(0, T) \\times \\R^n$, with $W(T, x) = g(x)$.\nAssume that $W$ solves the [[Hamilton–Jacobi–Bellman equation|SJP9HW82VX]]\n$$W_t(t, x) + \\min_{u \\in U} \\big( L(t, x, u) + \\nabla_x W(t, x) \\cdot f(t, x, u) \\big) = 0 \\quad \\text{on } (0, T) \\times \\R^n.$$\nThen:\n\n1. $W(t, x) \\le V(t, x)$ for all $(t, x) \\in [0, T] \\times \\R^n$.\n2. Let $u^*$ be a measurable control on $[t, T]$ with trajectory $y^*$ from $(t, x)$. Suppose that for almost every $s \\in [t, T]$ the value $u^*(s)$ attains the minimum in the equation at $(s, y^*(s))$. Then $u^*$ is optimal from $(t, x)$, and $W(t, x) = V(t, x)$.\n\n## Remarks\n\nThe proof is a chain rule computation.\nFor any control $u$ with trajectory $y$, the function $s \\mapsto W(s, y(s))$ is absolutely continuous with derivative $W_t + \\nabla_x W \\cdot f(s, y, u) \\ge -L(s, y, u)$ by the equation.\nIntegrating from $t$ to $T$ gives $g(y(T)) - W(t, x) \\ge -\\int_t^T L \\, ds$, that is, $W(t, x) \\le J(t, x; u)$.\nFor $u^*$ the inequality is an equality at almost every time, so $J(t, x; u^*) = W(t, x) \\le V(t, x)$.\nExample: for the [[linear-quadratic regulator|HR720TJZZR]], $W(t, x) = x^{T} P(t) x$ with $P$ the solution of the Riccati differential equation solves the equation with $U = \\R^m$.\nThe minimum is attained at $u = -R^{-1} B^{T} P(t) x$, so this feedback is optimal; the proof adapts to the unbounded control set.\nThe smoothness of $W$ is essential: value functions are often not differentiable, and then one needs the theory of [[viscosity solutions|KREYT31SS1]].\n\n## Explanations\n\n### L1 human\n\nSuppose someone hands you a candidate function for the optimal cost and a candidate control.\nThe verification theorem gives a test: if the function solves the Hamilton–Jacobi–Bellman equation and the control achieves the minimum in it, then the control is optimal.\nIt turns a guess into a proof of optimality.\n\n### L2 human\n\nThe theorem is the sufficiency half of [[dynamic programming|QPS8VSJGMJ]].\nIt is the standard way to prove that a feedback law found by solving the HJB equation, for example the linear feedback of the linear-quadratic regulator, is truly optimal.\nPontryagin's maximum principle gives only necessary conditions, so the verification theorem complements it.\nWhen the value function is not smooth, versions of the theorem use viscosity solutions or generalized gradients.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "about": [
      "K6G0DRQ3CP",
      "SJP9HW82VX"
    ],
    "kind": "statement",
    "msc": [
      "49L20",
      "49L12",
      "49K15"
    ],
    "name": "Verification theorem",
    "role": "theorem",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Hamilton–Jacobi–Bellman_equation"
      }
    ],
    "tag": "T5BEKMG5W8",
    "uses": [
      "K6G0DRQ3CP",
      "QPS8VSJGMJ",
      "SJP9HW82VX",
      "ZPDTVZQN5K",
      "HR720TJZZR",
      "KREYT31SS1"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/T5BEKMG5W8/",
  "links": [
    {
      "field": "about",
      "target": "K6G0DRQ3CP"
    },
    {
      "field": "about",
      "target": "SJP9HW82VX"
    },
    {
      "field": "uses",
      "target": "K6G0DRQ3CP"
    },
    {
      "field": "uses",
      "target": "QPS8VSJGMJ"
    },
    {
      "field": "uses",
      "target": "SJP9HW82VX"
    },
    {
      "field": "uses",
      "target": "ZPDTVZQN5K"
    },
    {
      "field": "uses",
      "target": "HR720TJZZR"
    },
    {
      "field": "uses",
      "target": "KREYT31SS1"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/T5BEKMG5W8.md",
  "msc": [
    "49L20",
    "49L12",
    "49K15"
  ],
  "name": "Verification theorem",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/T5B/T5BEKMG5W8.md",
  "status": null,
  "tag": "T5BEKMG5W8",
  "uri": "m2://T5BEKMG5W8",
  "url": "https://tamnd.github.io/math2/wiki/verification-theorem/",
  "writing": {
    "tag": "T5BEKMG5W8",
    "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
      }
    ]
  }
}
