)]}'
{
  "commit": "b99e9ccd058961fde8184456390f5429291edb6a",
  "tree": "7e83bd109990151d25d496ca6b85c51ba7385039",
  "parents": [
    "f37a0276ae8b0c60dd705920c49b9fd0c16279cf"
  ],
  "author": {
    "name": "Leonardo de Moura",
    "email": "leomoura@amazon.com",
    "time": "Fri Oct 23 15:29:22 2026 +0000"
  },
  "committer": {
    "name": "Leonardo de Moura",
    "email": "leomoura@amazon.com",
    "time": "Fri Oct 23 15:29:22 2026 +0000"
  },
  "message": "perf: use pointer equality for visited terms in `collectFVars` and `collectMVars`\n\nThis PR makes `collectFVars` and `Expr.collectMVars` track visited subterms with pointer equality instead of structural equality, which avoids costly structural comparisons on large terms.\n\nThe public `visitedExpr` field is replaced with a private pointer-keyed set. Use `{}` for an empty state and `CollectFVars.State.ofFVarSet` for a state that already contains free variables. Callers that used `visitedExpr` directly are updated.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\nClaude-Session: https://claude.ai/code/session_015CAFbcjTNgTXh2gg26CRyv\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e1b29a21cee2b6a252796f3bd18ccd7658272d01",
      "old_mode": 33188,
      "old_path": "src/Lean/Elab/Deriving/Inhabited.lean",
      "new_id": "d7f5d938ee1b8f59ef9a50f458b08226aa266577",
      "new_mode": 33188,
      "new_path": "src/Lean/Elab/Deriving/Inhabited.lean"
    },
    {
      "type": "modify",
      "old_id": "4fc6c0999cdc72256d8bddd66f0a04b3eb72b9f9",
      "old_mode": 33188,
      "old_path": "src/Lean/Elab/Tactic/Do/VCGen/SuggestInvariant.lean",
      "new_id": "8e2274e0d03a51115fce31e5413a13b8662dc573",
      "new_mode": 33188,
      "new_path": "src/Lean/Elab/Tactic/Do/VCGen/SuggestInvariant.lean"
    },
    {
      "type": "modify",
      "old_id": "4e9c9d176f464b675ce94f3c1e56f582f2c3050a",
      "old_mode": 33188,
      "old_path": "src/Lean/Meta/GeneralizeVars.lean",
      "new_id": "a49cfb3ec50094b3234072a3dea710c110912ea1",
      "new_mode": 33188,
      "new_path": "src/Lean/Meta/GeneralizeVars.lean"
    },
    {
      "type": "modify",
      "old_id": "3212481ea8ca3cbdf88dcf51622c550647b230f3",
      "old_mode": 33188,
      "old_path": "src/Lean/Util/CollectFVars.lean",
      "new_id": "23d8ded812a79c3f083d3a1e071ca20cdc9afe06",
      "new_mode": 33188,
      "new_path": "src/Lean/Util/CollectFVars.lean"
    },
    {
      "type": "modify",
      "old_id": "93debd3bb0cb1d8002e0c118dfbb0cbebbfc962f",
      "old_mode": 33188,
      "old_path": "src/Lean/Util/CollectMVars.lean",
      "new_id": "077624cf77088fc1f03047714e9872608269e4b1",
      "new_mode": 33188,
      "new_path": "src/Lean/Util/CollectMVars.lean"
    }
  ]
}
