{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Statement\n\nLet $X$ be a set, let $T \\subseteq \\R^k$ be open, and let $f \\colon X \\times T \\to \\R$ be a function.\nLet $V(t) = \\sup_{x \\in X} f(x, t)$ be the value function, and assume that $V$ is finite on $T$.\nLet $t_0 \\in T$ and let $x_0 \\in X$ be a maximizer at $t_0$, that is, $f(x_0, t_0) = V(t_0)$.\nIf $V$ and $t \\mapsto f(x_0, t)$ are both [[differentiable|0135XZZQ8M]] at $t_0$, then\n$$\\nabla V(t_0) = \\nabla_t f(x_0, t_0).$$\n\n## Remarks\n\nFor every $t$ one has $V(t) \\ge f(x_0, t)$, with equality at $t = t_0$.\nSo $t \\mapsto V(t) - f(x_0, t)$ has a [[local minimum|09WRNGPTMV]] at the interior point $t_0$, and its [[gradient|0ABK9V9Y64]] vanishes there.\nIn words: to first order, the change of the optimal value equals the direct effect of the parameter, with the maximizer held fixed.\n\nExample: $f(x, t) = tx - x^2$ on $\\R \\times \\R$.\nThe maximizer is $x = t/2$ and $V(t) = t^2/4$, so $V'(t) = t/2$.\nThe theorem predicts $V'(t) = \\partial_t f(x, t) = x = t/2$, which agrees.\n\nThe classical version assumes that $X$ is an open subset of $\\R^n$, that $f$ is continuously differentiable, and that a maximizer $x^*(t)$ depends differentiably on $t$.\nThen the chain rule gives $\\nabla V = \\nabla_t f + (\\nabla_x f) \\, Dx^*$, and the second term vanishes because $\\nabla_x f(x^*(t), t) = 0$.\nFor a constrained problem, the same idea shows that the derivative of the optimal value with respect to a constraint level is the corresponding Lagrange multiplier.\nDifferentiability of $V$ is a real hypothesis: for $X = \\set{-1, 1}$ and $f(x, t) = xt$, the value $V(t) = \\abs{t}$ is not differentiable at $0$.\n\n## Explanations\n\n### L1 human\n\nSuppose you choose the best option for every value of a parameter, and you watch how the best value changes when the parameter moves.\nThe envelope theorem says that for a small change you may ignore that the best option also changes.\nOnly the direct effect of the parameter on the payoff counts.\nThe name comes from a picture.\nThe value function is the upper envelope of the graphs of $t \\mapsto f(x, t)$ for all $x$, and it touches the graph of the optimal $x$ there.\n\n### L2 human\n\nThe theorem is used throughout economics, for example to derive Hotelling's lemma and Roy's identity, and in optimization to compute sensitivities of optimal values.\nIn optimal control and the calculus of variations, the same reasoning shows that the costate is the gradient of the value function, when the latter is differentiable.\nThe version stated here, which needs no differentiability of the maximizer, is due to Paul Milgrom and Ilya Segal.\nWhen $V$ is not differentiable, one-sided derivatives of $V$ are given by Danskin's theorem under compactness assumptions.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "kind": "statement",
    "msc": [
      "90C31",
      "49K40",
      "91B02"
    ],
    "name": "Envelope theorem",
    "role": "theorem",
    "same_as": {
      "wikidata": "Q2478371",
      "wikipedia": "Envelope theorem"
    },
    "sources": [
      {
        "locator": "For arbitrary choice sets",
        "url": "https://en.wikipedia.org/wiki/Envelope_theorem"
      }
    ],
    "tag": "WK7MKDWRFF",
    "uses": [
      "0135XZZQ8M",
      "0ABK9V9Y64",
      "09WRNGPTMV"
    ]
  },
  "kind": "statement",
  "link": "https://tamnd.github.io/math2/node/WK7MKDWRFF/",
  "links": [
    {
      "field": "uses",
      "target": "0135XZZQ8M"
    },
    {
      "field": "uses",
      "target": "0ABK9V9Y64"
    },
    {
      "field": "uses",
      "target": "09WRNGPTMV"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/WK7MKDWRFF.md",
  "msc": [
    "90C31",
    "49K40",
    "91B02"
  ],
  "name": "Envelope theorem",
  "prov": null,
  "role": "theorem",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/WK7/WK7MKDWRFF.md",
  "status": null,
  "tag": "WK7MKDWRFF",
  "uri": "m2://WK7MKDWRFF",
  "url": "https://tamnd.github.io/math2/wiki/envelope-theorem/",
  "writing": {
    "tag": "WK7MKDWRFF",
    "kind": "statement",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      }
    ]
  }
}
