[
  {
    "path": ".github/workflows/ci.yml",
    "content": "name: build and test book content\n\n# Controls when the action will run.\non:\n  push:\n    branches:\n      - master\n  pull_request:\n    branches:\n      - master\n\n# A workflow run is made up of one or more jobs that can run sequentially or in parallel\njobs:\n  Build:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v2\n      with:\n        # interferes with lean4-nightly authentication\n        persist-credentials: false\n        submodules: true\n\n\n    - name: Setup elan toolchain on this build\n      run: |\n        curl -O --location https://raw.githubusercontent.com/leanprover/elan/master/elan-init.sh\n        chmod u+x elan-init.sh\n        ./elan-init.sh -y --default-toolchain none\n\n    - name: Set elan paths\n      run: |\n        echo \"$HOME/.elan/bin\" >> $GITHUB_PATH\n\n    - name: Install lean toolchain for examples\n      run: |\n        cd examples\n        lean --version\n\n    - name: Install lean toolchain for text\n      run: |\n        cd book\n        lean --version\n\n    - name: Cache book/.lake\n      uses: actions/cache@v4\n      with:\n        path: book/.lake\n        # The SHA is in the key to get the most recent cache possible, rather than just saving a single one for each Lean/deps version and not touching it.\n        key: ${{ runner.os }}-${{ hashFiles('book/lake-manifest.json') }}-${{ hashFiles('book/lean-toolchain') }}-${{ steps.shortSHA.outputs.short_sha }}\n        # Try to restore cache for same OS/Lean/deps, but don't get less specific, because Lake isn't always happy to get build product version mismatches\n        restore-keys: |\n          ${{ runner.os }}-${{ hashFiles('book/lake-manifest.json') }}-${{ hashFiles('book/lean-toolchain') }}-\n\n\n    - name: Build book\n      run: |\n        pushd book\n        lake exe tpil --verbose\n        popd\n\n    - name: Save book/.lake\n      uses: actions/cache/save@v4\n      with:\n        path: book/.lake\n        # The SHA is in the key to get the most recent cache possible, rather than just saving a single one for each Lean/deps version and not touching it.\n        key: ${{ runner.os }}-${{ hashFiles('book/lake-manifest.json') }}-${{ hashFiles('book/lean-toolchain') }}-${{ steps.shortSHA.outputs.short_sha }}\n\n    - name: Deploy to Netlify hosting\n      uses: nwtgck/actions-netlify@v2.0\n      if: github.event_name == 'push' && github.ref_name == 'master'\n      with:\n        publish-dir: book/_out/html-multi\n        production-branch: master\n        github-token: ${{ secrets.GITHUB_TOKEN }}\n        deploy-message: |\n          ${{ github.event_name == 'pull_request' && format('pr#{0}: {1}', github.event.number, github.event.pull_request.title) || format('ref/{0}: {1}', github.ref_name, steps.deploy-info.outputs.message) }}\n        alias: ${{ steps.deploy-info.outputs.alias }}\n        enable-commit-comment: false\n        enable-pull-request-comment: false\n        github-deployment-environment: \"lean-lang.org/theorem_proving_in_lean4\"\n        fails-without-credentials: true\n      env:\n        NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}\n        NETLIFY_SITE_ID: \"51300c89-2f6c-4bba-a575-8cf12e434502\"\n\n    - name: GH pages deploy\n      uses: JamesIves/github-pages-deploy-action@4.1.5\n      if: github.event_name == 'push' && github.ref_name == 'master'\n      with:\n        branch: gh-pages\n        folder: book/_out/html-multi\n"
  },
  {
    "path": ".gitignore",
    "content": "*.olean\n/_target\n/leanpkg.path\nout/\n.vs/\n.vscode/\n*/_out/*\n.DS_Store\n"
  },
  {
    "path": ".gitmodules",
    "content": ""
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"{}\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright {yyyy} {name of copyright owner}\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "README.md",
    "content": "Theorem Proving in Lean 4\n-----------------------\n\nThis repository contains the source code of the book _Theorem Proving\nin Lean 4_ by Jeremy Avigad, Leonardo de Moura, Soonho Kong, and\nSebastian Ullrich, with contributions from the Lean Community.\n\nTo build the book, change to the `book` directory and run `lake exe tpil`.\nAfter this, `book/_out/html-multi` contains a multi-page Web\nversion of the book.\n\n"
  },
  {
    "path": "book/.gitignore",
    "content": "/.lake\n"
  },
  {
    "path": "book/.verso/verso-xref-manifest.json",
    "content": "{\"version\": 0,\n \"sources\":\n {\"manual\":\n  {\"updateFrequency\": \"manual\",\n   \"shortName\": \"ref\",\n   \"root\": \"https://lean-lang.org/doc/reference/4.26.0/\",\n   \"longName\": \"Lean Language Reference\"}},\n \"outputDir\": \".verso\"}"
  },
  {
    "path": "book/.verso/verso-xref.json",
    "content": "{\"manual\":\n {\"Verso.Genre.Manual.section\":\n  {\"title\": \"Sections or chapters of the manual\",\n   \"description\": \"Sections or chapters of the manual\",\n   \"contents\":\n   {\"whitespace\":\n    [{\"id\": \"whitespace\",\n      \"data\":\n      {\"title\": \"Whitespace\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Concrete Syntax\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Whitespace\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"wf-rel\":\n    [{\"id\": \"wf-rel\",\n      \"data\":\n      {\"title\": \"Well-Founded Relations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Well-Founded Relations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"well-founded-recursion\":\n    [{\"id\": \"well-founded-recursion\",\n      \"data\":\n      {\"title\": \"Well-Founded Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"well-founded-preprocessing\":\n    [{\"id\": \"well-founded-preprocessing\",\n      \"data\":\n      {\"title\": \"Preprocessing Function Definitions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.3.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Preprocessing Function Definitions\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"well-formed-inductives\":\n    [{\"id\": \"well-formed-inductives\",\n      \"data\":\n      {\"title\": \"Well-Formedness Requirements\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Well-Formedness Requirements\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"unsafe\":\n    [{\"id\": \"unsafe\",\n      \"data\":\n      {\"title\": \"Unsafe Definitions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial and Unsafe Definitions\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Unsafe Definitions\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unexpand-and-delab\":\n    [{\"id\": \"unexpand-and-delab\",\n      \"data\":\n      {\"title\": \"Extending Lean's Output\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Extending Lean's Output\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"typographical-conventions\":\n    [{\"id\": \"typographical-conventions\",\n      \"data\":\n      {\"title\": \"Typographical Conventions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Typographical Conventions\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"typed-syntax-helpers\":\n    [{\"id\": \"typed-syntax-helpers\",\n      \"data\":\n      {\"title\": \"Helpers for Typed Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Helpers for Typed Syntax\",\n         \"shortTitle\": null,\n         \"number\": \"9\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"typed-syntax\":\n    [{\"id\": \"typed-syntax\",\n      \"data\":\n      {\"title\": \"Typed Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Typed Syntax\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"type-system\":\n    [{\"id\": \"type-system\",\n      \"data\":\n      {\"title\": \"The Type System\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/\"}],\n    \"type-classes\":\n    [{\"id\": \"type-classes\",\n      \"data\":\n      {\"title\": \"Type Classes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"}]},\n      \"address\": \"/Type-Classes/\"}],\n    \"tuples\":\n    [{\"id\": \"tuples\",\n      \"data\":\n      {\"title\": \"Tuples\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.13.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Tuples\", \"shortTitle\": null, \"number\": \"13\"}]},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"true-false\":\n    [{\"id\": \"true-false\",\n      \"data\":\n      {\"title\": \"Truth\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"19.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Propositions\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Truth\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"totality\":\n    [{\"id\": \"totality\",\n      \"data\":\n      {\"title\": \"Totality and Termination\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Totality and Termination\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"token-antiquotations\":\n    [{\"id\": \"token-antiquotations\",\n      \"data\":\n      {\"title\": \"Token Antiquotations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotation\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Token Antiquotations\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"the-simplifier\":\n    [{\"id\": \"the-simplifier\",\n      \"data\":\n      {\"title\": \"The Simplifier\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"}]},\n      \"address\": \"/The-Simplifier/\"}],\n    \"test-lint-drivers\":\n    [{\"id\": \"test-lint-drivers\",\n      \"data\":\n      {\"title\": \"Test and Lint Drivers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Test and Lint Drivers\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"terms\":\n    [{\"id\": \"terms\",\n      \"data\":\n      {\"title\": \"Terms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/Terms/\"}],\n    \"terminal-simp\":\n    [{\"id\": \"terminal-simp\",\n      \"data\":\n      {\"title\": \"Terminal vs Non-Terminal Positions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Terminal vs Non-Terminal Positions\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/The-Simplifier/Terminal-vs-Non-Terminal-Positions/\"}],\n    \"technical-terms\":\n    [{\"id\": \"technical-terms\",\n      \"data\":\n      {\"title\": \"Technical Terminology\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Typographical Conventions\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Technical Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"tactics\":\n    [{\"id\": \"tactics\",\n      \"data\":\n      {\"title\": \"Tactic Proofs\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"}]},\n      \"address\": \"/Tactic-Proofs/\"}],\n    \"tactic-ref-term-helpers\":\n    [{\"id\": \"tactic-ref-term-helpers\",\n      \"data\":\n      {\"title\": \"Term Elaboration Backends\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.20.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Term Elaboration Backends\",\n         \"shortTitle\": null,\n         \"number\": \"20\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-spred\":\n    [{\"id\": \"tactic-ref-spred\",\n      \"data\":\n      {\"title\": \"Tactics for Stateful Goals in  Std.Do.SPred\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.23.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Verification Condition Generation\",\n         \"shortTitle\": null,\n         \"number\": \"23\"},\n        {\"title\": \"Tactics for Stateful Goals in  Std.Do.SPred\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-search\":\n    [{\"id\": \"tactic-ref-search\",\n      \"data\":\n      {\"title\": \"Library Search\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.15.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Library Search\", \"shortTitle\": null, \"number\": \"15\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-sat\":\n    [{\"id\": \"tactic-ref-sat\",\n      \"data\":\n      {\"title\": \"SAT Solver Integration\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.17.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Decision Procedures\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"SAT Solver Integration\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-rw\":\n    [{\"id\": \"tactic-ref-rw\",\n      \"data\":\n      {\"title\": \"Rewriting\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.13.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Rewriting\", \"shortTitle\": null, \"number\": \"13\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-relations\":\n    [{\"id\": \"tactic-ref-relations\",\n      \"data\":\n      {\"title\": \"Relations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Relations\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-quantifiers\":\n    [{\"id\": \"tactic-ref-quantifiers\",\n      \"data\":\n      {\"title\": \"Quantifiers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quantifiers\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-other\":\n    [{\"id\": \"tactic-ref-other\",\n      \"data\":\n      {\"title\": \"Other\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.22.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Other\", \"shortTitle\": null, \"number\": \"22\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-mvcgen\":\n    [{\"id\": \"tactic-ref-mvcgen\",\n      \"data\":\n      {\"title\": \"Verification Condition Generation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.23.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Verification Condition Generation\",\n         \"shortTitle\": null,\n         \"number\": \"23\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-lemmas\":\n    [{\"id\": \"tactic-ref-lemmas\",\n      \"data\":\n      {\"title\": \"Lemmas\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Lemmas\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-inductive-intro\":\n    [{\"id\": \"tactic-ref-inductive-intro\",\n      \"data\":\n      {\"title\": \"Introduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.14.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"14\"},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-inductive-elim\":\n    [{\"id\": \"tactic-ref-inductive-elim\",\n      \"data\":\n      {\"title\": \"Elimination\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.14.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"14\"},\n        {\"title\": \"Elimination\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-inductive\":\n    [{\"id\": \"tactic-ref-inductive\",\n      \"data\":\n      {\"title\": \"Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.14.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"14\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-goals\":\n    [{\"id\": \"tactic-ref-goals\",\n      \"data\":\n      {\"title\": \"Goal Management\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Goal Management\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-false\":\n    [{\"id\": \"tactic-ref-false\",\n      \"data\":\n      {\"title\": \"Falsehood\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Falsehood\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-ext\":\n    [{\"id\": \"tactic-ref-ext\",\n      \"data\":\n      {\"title\": \"Extensionality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Extensionality\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-equality\":\n    [{\"id\": \"tactic-ref-equality\",\n      \"data\":\n      {\"title\": \"Equality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Relations\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Equality\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-decision\":\n    [{\"id\": \"tactic-ref-decision\",\n      \"data\":\n      {\"title\": \"Decision Procedures\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.17.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Decision Procedures\",\n         \"shortTitle\": null,\n         \"number\": \"17\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-debug\":\n    [{\"id\": \"tactic-ref-debug\",\n      \"data\":\n      {\"title\": \"Debugging Utilities\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.21.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Debugging Utilities\",\n         \"shortTitle\": null,\n         \"number\": \"21\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-control\":\n    [{\"id\": \"tactic-ref-control\",\n      \"data\":\n      {\"title\": \"Control Flow\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.19.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Control Flow\", \"shortTitle\": null, \"number\": \"19\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-classical\":\n    [{\"id\": \"tactic-ref-classical\",\n      \"data\":\n      {\"title\": \"Classical Logic\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Classical Logic\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-casts\":\n    [{\"id\": \"tactic-ref-casts\",\n      \"data\":\n      {\"title\": \"Cast Management\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Cast Management\", \"shortTitle\": null, \"number\": \"9\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-cases\":\n    [{\"id\": \"tactic-ref-cases\",\n      \"data\":\n      {\"title\": \"Case Analysis\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.16.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Case Analysis\", \"shortTitle\": null, \"number\": \"16\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-assumptions\":\n    [{\"id\": \"tactic-ref-assumptions\",\n      \"data\":\n      {\"title\": \"Assumptions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Assumptions\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref-associativity-commutativity\":\n    [{\"id\": \"tactic-ref-associativity-commutativity\",\n      \"data\":\n      {\"title\": \"Associativity and Commutativity\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Associativity and Commutativity\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-ref\":\n    [{\"id\": \"tactic-ref\",\n      \"data\":\n      {\"title\": \"Tactic Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-reducibility\":\n    [{\"id\": \"tactic-reducibility\",\n      \"data\":\n      {\"title\": \"Controlling Reduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.18.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Controlling Reduction\",\n         \"shortTitle\": null,\n         \"number\": \"18\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tactic-macros\":\n    [{\"id\": \"tactic-macros\",\n      \"data\":\n      {\"title\": \"Tactic Macros\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.8.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Custom Tactics\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Tactic Macros\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Custom-Tactics/\"}],\n    \"tactic-macro-extension\":\n    [{\"id\": \"tactic-macro-extension\",\n      \"data\":\n      {\"title\": \"Extensible Tactic Macros\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.8.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Custom Tactics\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Tactic Macros\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Extensible Tactic Macros\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Custom-Tactics/\"}],\n    \"tactic-language-unfolding\":\n    [{\"id\": \"tactic-language-unfolding\",\n      \"data\":\n      {\"title\": \"Controlling Unfolding\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Namespace and Option Management\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Controlling Unfolding\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-success-failure\":\n    [{\"id\": \"tactic-language-success-failure\",\n      \"data\":\n      {\"title\": \"Success and Failure\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Success and Failure\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-sequencing\":\n    [{\"id\": \"tactic-language-sequencing\",\n      \"data\":\n      {\"title\": \"Sequencing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Goal Selection\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Sequencing\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-options\":\n    [{\"id\": \"tactic-language-options\",\n      \"data\":\n      {\"title\": \"Options\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Options\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Tactic-Proofs/Options/\"}],\n    \"tactic-language-namespaces-options\":\n    [{\"id\": \"tactic-language-namespaces-options\",\n      \"data\":\n      {\"title\": \"Namespace and Option Management\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Namespace and Option Management\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-multiple-goals\":\n    [{\"id\": \"tactic-language-multiple-goals\",\n      \"data\":\n      {\"title\": \"Working on Multiple Goals\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Goal Selection\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Working on Multiple Goals\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-local-defs\":\n    [{\"id\": \"tactic-language-local-defs\",\n      \"data\":\n      {\"title\": \"Local Definitions and Proofs\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Local Definitions and Proofs\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-iteration\":\n    [{\"id\": \"tactic-language-iteration\",\n      \"data\":\n      {\"title\": \"Repetition and Iteration\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Repetition and Iteration\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-hygiene\":\n    [{\"id\": \"tactic-language-hygiene\",\n      \"data\":\n      {\"title\": \"Names and Hygiene\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Names and Hygiene\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-goal-selection\":\n    [{\"id\": \"tactic-language-goal-selection\",\n      \"data\":\n      {\"title\": \"Goal Selection\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Goal Selection\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-focusing\":\n    [{\"id\": \"tactic-language-focusing\",\n      \"data\":\n      {\"title\": \"Focusing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Focusing\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-control\":\n    [{\"id\": \"tactic-language-control\",\n      \"data\":\n      {\"title\": \"Control Structures\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-branching\":\n    [{\"id\": \"tactic-language-branching\",\n      \"data\":\n      {\"title\": \"Branching\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Branching\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-assumptions\":\n    [{\"id\": \"tactic-language-assumptions\",\n      \"data\":\n      {\"title\": \"Accessing Assumptions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Names and Hygiene\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Accessing Assumptions\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language-assumption-management\":\n    [{\"id\": \"tactic-language-assumption-management\",\n      \"data\":\n      {\"title\": \"Assumption Management\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Assumption Management\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-language\":\n    [{\"id\": \"tactic-language\",\n      \"data\":\n      {\"title\": \"The Tactic Language\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic-config\":\n    [{\"id\": \"tactic-config\",\n      \"data\":\n      {\"title\": \"Configuration\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.3.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"The Tactic Language\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Configuration\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"syntax-rules\":\n    [{\"id\": \"syntax-rules\",\n      \"data\":\n      {\"title\": \"Syntax Rules\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.11.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Syntax Rules\", \"shortTitle\": null, \"number\": \"11\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"syntax-indentation\":\n    [{\"id\": \"syntax-indentation\",\n      \"data\":\n      {\"title\": \"Indentation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.12.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Indentation\", \"shortTitle\": null, \"number\": \"12\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"syntax-ext\":\n    [{\"id\": \"syntax-ext\",\n      \"data\":\n      {\"title\": \"Defining New Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"syntax-data\":\n    [{\"id\": \"syntax-data\",\n      \"data\":\n      {\"title\": \"Syntax Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Syntax Model\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"syntax-categories\":\n    [{\"id\": \"syntax-categories\",\n      \"data\":\n      {\"title\": \"Syntax Categories\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Syntax Categories\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"sum-types\":\n    [{\"id\": \"sum-types\",\n      \"data\":\n      {\"title\": \"Sum Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.14.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Sum Types\", \"shortTitle\": null, \"number\": \"14\"}]},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"sum-syntax\":\n    [{\"id\": \"sum-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.14.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Sum Types\", \"shortTitle\": null, \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"sum-api\":\n    [{\"id\": \"sum-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.14.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Sum Types\", \"shortTitle\": null, \"number\": \"14\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"subsingleton-elimination\":\n    [{\"id\": \"subsingleton-elimination\",\n      \"data\":\n      {\"title\": \"Subsingleton Elimination\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.1.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Recursors\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Recursor Types\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Subsingleton Elimination\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"subarray\":\n    [{\"id\": \"subarray\",\n      \"data\":\n      {\"title\": \"Sub-Arrays\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Sub-Arrays\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"structures\":\n    [{\"id\": \"structures\",\n      \"data\":\n      {\"title\": \"Structure Declarations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Structure Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"structure-params\":\n    [{\"id\": \"structure-params\",\n      \"data\":\n      {\"title\": \"Structure Parameters\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Structure Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Structure Parameters\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"structure-inheritance\":\n    [{\"id\": \"structure-inheritance\",\n      \"data\":\n      {\"title\": \"Structure Inheritance\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Structure Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Structure Inheritance\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"structure-fields\":\n    [{\"id\": \"structure-fields\",\n      \"data\":\n      {\"title\": \"Fields\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Structure Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Fields\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"structure-constructors\":\n    [{\"id\": \"structure-constructors\",\n      \"data\":\n      {\"title\": \"Structure Constructors\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Structure Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Structure Constructors\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"structural-recursion\":\n    [{\"id\": \"structural-recursion\",\n      \"data\":\n      {\"title\": \"Structural Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Structural Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"string-syntax\":\n    [{\"id\": \"string-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-runtime\":\n    [{\"id\": \"string-runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-performance\":\n    [{\"id\": \"string-performance\",\n      \"data\":\n      {\"title\": \"Performance Notes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Performance Notes\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-literals\":\n    [{\"id\": \"string-literals\",\n      \"data\":\n      {\"title\": \"String Literals\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"String Literals\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-iterators\":\n    [{\"id\": \"string-iterators\",\n      \"data\":\n      {\"title\": \"Legacy Iterators\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Legacy Iterators\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-interpolation\":\n    [{\"id\": \"string-interpolation\",\n      \"data\":\n      {\"title\": \"Interpolated Strings\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Interpolated Strings\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-ffi\":\n    [{\"id\": \"string-ffi\",\n      \"data\":\n      {\"title\": \"FFI\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"FFI\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-valid-pos\":\n    [{\"id\": \"string-api-valid-pos\",\n      \"data\":\n      {\"title\": \"Positions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Positions\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-substring\":\n    [{\"id\": \"string-api-substring\",\n      \"data\":\n      {\"title\": \"Raw Substrings\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.12.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Raw Substrings\", \"shortTitle\": null, \"number\": \"12\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-slice\":\n    [{\"id\": \"string-api-slice\",\n      \"data\":\n      {\"title\": \"String Slices\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.11.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"String Slices\", \"shortTitle\": null, \"number\": \"11\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-props\":\n    [{\"id\": \"string-api-props\",\n      \"data\":\n      {\"title\": \"Properties\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Properties\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-pos\":\n    [{\"id\": \"string-api-pos\",\n      \"data\":\n      {\"title\": \"Raw Positions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Raw Positions\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-modify\":\n    [{\"id\": \"string-api-modify\",\n      \"data\":\n      {\"title\": \"Manipulation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Manipulation\", \"shortTitle\": null, \"number\": \"9\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-meta\":\n    [{\"id\": \"string-api-meta\",\n      \"data\":\n      {\"title\": \"Metaprogramming\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.13.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Metaprogramming\", \"shortTitle\": null, \"number\": \"13\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-lookup\":\n    [{\"id\": \"string-api-lookup\",\n      \"data\":\n      {\"title\": \"Lookups and Modifications\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Lookups and Modifications\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-fold\":\n    [{\"id\": \"string-api-fold\",\n      \"data\":\n      {\"title\": \"Folds and Aggregation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Folds and Aggregation\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-encoding\":\n    [{\"id\": \"string-api-encoding\",\n      \"data\":\n      {\"title\": \"Encodings\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.14.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Encodings\", \"shortTitle\": null, \"number\": \"14\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-convert\":\n    [{\"id\": \"string-api-convert\",\n      \"data\":\n      {\"title\": \"Conversions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Conversions\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-compare\":\n    [{\"id\": \"string-api-compare\",\n      \"data\":\n      {\"title\": \"Comparisons\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Comparisons\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api-build\":\n    [{\"id\": \"string-api-build\",\n      \"data\":\n      {\"title\": \"Constructing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Constructing\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"string-api\":\n    [{\"id\": \"string-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"strict-positivity\":\n    [{\"id\": \"strict-positivity\",\n      \"data\":\n      {\"title\": \"Strict Positivity\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Well-Formedness Requirements\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Strict Positivity\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"stdio\":\n    [{\"id\": \"stdio\",\n      \"data\":\n      {\"title\": \"Standard I/O\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Files, File Handles, and Streams\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Standard I/O\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"state-monads\":\n    [{\"id\": \"state-monads\",\n      \"data\":\n      {\"title\": \"State\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Varieties of Monads\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"State\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"standard-axioms\":\n    [{\"id\": \"standard-axioms\",\n      \"data\":\n      {\"title\": \"Standard Axioms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"8.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Axioms\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Standard Axioms\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Axioms/\"}],\n    \"squash-types\":\n    [{\"id\": \"squash-types\",\n      \"data\":\n      {\"title\": \"Squash Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Squash Types\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"splices\":\n    [{\"id\": \"splices\",\n      \"data\":\n      {\"title\": \"Splices\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotation\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Splices\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"source-info\":\n    [{\"id\": \"source-info\",\n      \"data\":\n      {\"title\": \"Source Positions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Defining New Syntax\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Source Positions\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"sort-coercion\":\n    [{\"id\": \"sort-coercion\",\n      \"data\":\n      {\"title\": \"Coercing to Sorts\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Coercing to Sorts\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"simp-vs-rw\":\n    [{\"id\": \"simp-vs-rw\",\n      \"data\":\n      {\"title\": \"Simplification vs Rewriting\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Simplification vs Rewriting\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/The-Simplifier/Simplification-vs-Rewriting/\"}],\n    \"simp-tactics\":\n    [{\"id\": \"simp-tactics\",\n      \"data\":\n      {\"title\": \"Simplification\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.5.12.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Tactic Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Simplification\", \"shortTitle\": null, \"number\": \"12\"}]},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"simp-tactic-params\":\n    [{\"id\": \"simp-tactic-params\",\n      \"data\":\n      {\"title\": \"Parameters\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Invoking the Simplifier\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Parameters\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Simplifier/Invoking-the-Simplifier/\"}],\n    \"simp-tactic-naming\":\n    [{\"id\": \"simp-tactic-naming\",\n      \"data\":\n      {\"title\": \"Invoking the Simplifier\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Invoking the Simplifier\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Simplifier/Invoking-the-Simplifier/\"}],\n    \"simp-sets\":\n    [{\"id\": \"simp-sets\",\n      \"data\":\n      {\"title\": \"Simp sets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Simp sets\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"simp-rewrites\":\n    [{\"id\": \"simp-rewrites\",\n      \"data\":\n      {\"title\": \"Rewrite Rules\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Rewrite Rules\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Simplifier/Rewrite-Rules/\"}],\n    \"simp-options\":\n    [{\"id\": \"simp-options\",\n      \"data\":\n      {\"title\": \"Options\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Configuring Simplification\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Options\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"simp-normal-forms\":\n    [{\"id\": \"simp-normal-forms\",\n      \"data\":\n      {\"title\": \"Simp Normal Forms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Simp Normal Forms\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/The-Simplifier/Simp-Normal-Forms/\"}],\n    \"simp-config\":\n    [{\"id\": \"simp-config\",\n      \"data\":\n      {\"title\": \"Configuring Simplification\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"16.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Simplifier\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Configuring Simplification\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"signature-syntax\":\n    [{\"id\": \"signature-syntax\",\n      \"data\":\n      {\"title\": \"Headers and Signatures\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Headers and Signatures\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"sigma-types\":\n    [{\"id\": \"sigma-types\",\n      \"data\":\n      {\"title\": \"Dependent Pairs\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.13.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Tuples\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Dependent Pairs\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"setoids\":\n    [{\"id\": \"setoids\",\n      \"data\":\n      {\"title\": \"Setoids\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Setoids\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"section-variables\":\n    [{\"id\": \"section-variables\",\n      \"data\":\n      {\"title\": \"Section Variables\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"6.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Namespaces and Sections\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Section Scopes\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Section Variables\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"scopes\":\n    [{\"id\": \"scopes\",\n      \"data\":\n      {\"title\": \"Section Scopes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"6.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Namespaces and Sections\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Section Scopes\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"scoped-attributes\":\n    [{\"id\": \"scoped-attributes\",\n      \"data\":\n      {\"title\": \"Scoped Attributes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"9.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Attributes\", \"shortTitle\": null, \"number\": \"9\"},\n        {\"title\": \"Scoped Attributes\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Attributes/\"}],\n    \"scope-commands\":\n    [{\"id\": \"scope-commands\",\n      \"data\":\n      {\"title\": \"Controlling Section Scopes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"6.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Namespaces and Sections\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Section Scopes\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Controlling Section Scopes\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"runtime\":\n    [{\"id\": \"runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Code\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"}]},\n      \"address\": \"/Run-Time-Code/\"}],\n    \"run-time-inductives\":\n    [{\"id\": \"run-time-inductives\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"repr-instance-howto\":\n    [{\"id\": \"repr-instance-howto\",\n      \"data\":\n      {\"title\": \"How To Write a  Repr  Instance\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Repr\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"How To Write a  Repr  Instance\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"repr\":\n    [{\"id\": \"repr\",\n      \"data\":\n      {\"title\": \"Repr\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Repr\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"release-v4.9.0\":\n    [{\"id\": \"release-v4___9___0\",\n      \"data\":\n      {\"title\": \"Lean 4.9.0 (2024-07-01)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.9.0 (2024-07-01)\",\n         \"shortTitle\": null,\n         \"number\": \"19\"}]},\n      \"address\": \"/releases/v4.9.0/\"}],\n    \"release-v4.8.0\":\n    [{\"id\": \"release-v4___8___0\",\n      \"data\":\n      {\"title\": \"Lean 4.8.0 (2024-06-05)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.8.0 (2024-06-05)\",\n         \"shortTitle\": null,\n         \"number\": \"20\"}]},\n      \"address\": \"/releases/v4.8.0/\"}],\n    \"release-v4.7.0\":\n    [{\"id\": \"release-v4___7___0\",\n      \"data\":\n      {\"title\": \"Lean 4.7.0 (2024-04-03)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.7.0 (2024-04-03)\",\n         \"shortTitle\": null,\n         \"number\": \"21\"}]},\n      \"address\": \"/releases/v4.7.0/\"}],\n    \"release-v4.6.0\":\n    [{\"id\": \"release-v4___6___0\",\n      \"data\":\n      {\"title\": \"Lean 4.6.0 (2024-02-29)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.6.0 (2024-02-29)\",\n         \"shortTitle\": null,\n         \"number\": \"22\"}]},\n      \"address\": \"/releases/v4.6.0/\"}],\n    \"release-v4.5.0\":\n    [{\"id\": \"release-v4___5___0\",\n      \"data\":\n      {\"title\": \"Lean 4.5.0 (2024-02-01)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.5.0 (2024-02-01)\",\n         \"shortTitle\": null,\n         \"number\": \"23\"}]},\n      \"address\": \"/releases/v4.5.0/\"}],\n    \"release-v4.4.0\":\n    [{\"id\": \"release-v4___4___0\",\n      \"data\":\n      {\"title\": \"Lean 4.4.0 (2023-12-31)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.4.0 (2023-12-31)\",\n         \"shortTitle\": null,\n         \"number\": \"24\"}]},\n      \"address\": \"/releases/v4.4.0/\"}],\n    \"release-v4.3.0\":\n    [{\"id\": \"release-v4___3___0\",\n      \"data\":\n      {\"title\": \"Lean 4.3.0 (2023-11-30)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.3.0 (2023-11-30)\",\n         \"shortTitle\": null,\n         \"number\": \"25\"}]},\n      \"address\": \"/releases/v4.3.0/\"}],\n    \"release-v4.26.0\":\n    [{\"id\": \"release-v4___26___0\",\n      \"data\":\n      {\"title\": \"Lean 4.26.0 (2025-12-13)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.26.0 (2025-12-13)\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/releases/v4.26.0/\"}],\n    \"release-v4.25.1\":\n    [{\"id\": \"release-v4___25___1\",\n      \"data\":\n      {\"title\": \"Lean 4.25.1 (2025-11-18)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.25.1 (2025-11-18)\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/releases/v4.25.1/\"}],\n    \"release-v4.25.0\":\n    [{\"id\": \"release-v4___25___0\",\n      \"data\":\n      {\"title\": \"Lean 4.25.0 (2025-11-14)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.25.0 (2025-11-14)\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/releases/v4.25.0/\"}],\n    \"release-v4.24.0\":\n    [{\"id\": \"release-v4___24___0\",\n      \"data\":\n      {\"title\": \"Lean 4.24.0 (2025-10-14)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.24.0 (2025-10-14)\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/releases/v4.24.0/\"}],\n    \"release-v4.23.0\":\n    [{\"id\": \"release-v4___23___0\",\n      \"data\":\n      {\"title\": \"Lean 4.23.0 (2025-09-15)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.23.0 (2025-09-15)\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/releases/v4.23.0/\"}],\n    \"release-v4.22.0\":\n    [{\"id\": \"release-v4___22___0\",\n      \"data\":\n      {\"title\": \"Lean 4.22.0 (2025-08-14)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.22.0 (2025-08-14)\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/releases/v4.22.0/\"}],\n    \"release-v4.21.0\":\n    [{\"id\": \"release-v4___21___0\",\n      \"data\":\n      {\"title\": \"Lean 4.21.0 (2025-06-30)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.21.0 (2025-06-30)\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/releases/v4.21.0/\"}],\n    \"release-v4.20.0\":\n    [{\"id\": \"release-v4___20___0\",\n      \"data\":\n      {\"title\": \"Lean 4.20.0 (2025-06-02)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.20.0 (2025-06-02)\",\n         \"shortTitle\": null,\n         \"number\": \"8\"}]},\n      \"address\": \"/releases/v4.20.0/\"}],\n    \"release-v4.2.0\":\n    [{\"id\": \"release-v4___2___0\",\n      \"data\":\n      {\"title\": \"Lean 4.2.0 (2023-10-31)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.2.0 (2023-10-31)\",\n         \"shortTitle\": null,\n         \"number\": \"26\"}]},\n      \"address\": \"/releases/v4.2.0/\"}],\n    \"release-v4.19.0\":\n    [{\"id\": \"release-v4___19___0\",\n      \"data\":\n      {\"title\": \"Lean 4.19.0 (2025-05-01)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.19.0 (2025-05-01)\",\n         \"shortTitle\": null,\n         \"number\": \"9\"}]},\n      \"address\": \"/releases/v4.19.0/\"}],\n    \"release-v4.18.0\":\n    [{\"id\": \"release-v4___18___0\",\n      \"data\":\n      {\"title\": \"Lean 4.18.0 (2025-04-02)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.18.0 (2025-04-02)\",\n         \"shortTitle\": null,\n         \"number\": \"10\"}]},\n      \"address\": \"/releases/v4.18.0/\"}],\n    \"release-v4.17.0\":\n    [{\"id\": \"release-v4___17___0\",\n      \"data\":\n      {\"title\": \"Lean 4.17.0 (2025-03-03)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.17.0 (2025-03-03)\",\n         \"shortTitle\": null,\n         \"number\": \"11\"}]},\n      \"address\": \"/releases/v4.17.0/\"}],\n    \"release-v4.16.0\":\n    [{\"id\": \"release-v4___16___0\",\n      \"data\":\n      {\"title\": \"Lean 4.16.0 (2025-02-03)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.16.0 (2025-02-03)\",\n         \"shortTitle\": null,\n         \"number\": \"12\"}]},\n      \"address\": \"/releases/v4.16.0/\"}],\n    \"release-v4.15.0\":\n    [{\"id\": \"release-v4___15___0\",\n      \"data\":\n      {\"title\": \"Lean 4.15.0 (2025-01-04)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.15.0 (2025-01-04)\",\n         \"shortTitle\": null,\n         \"number\": \"13\"}]},\n      \"address\": \"/releases/v4.15.0/\"}],\n    \"release-v4.14.0\":\n    [{\"id\": \"release-v4___14___0\",\n      \"data\":\n      {\"title\": \"Lean 4.14.0 (2024-12-02)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.14.0 (2024-12-02)\",\n         \"shortTitle\": null,\n         \"number\": \"14\"}]},\n      \"address\": \"/releases/v4.14.0/\"}],\n    \"release-v4.13.0\":\n    [{\"id\": \"release-v4___13___0\",\n      \"data\":\n      {\"title\": \"Lean 4.13.0 (2024-11-01)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.13.0 (2024-11-01)\",\n         \"shortTitle\": null,\n         \"number\": \"15\"}]},\n      \"address\": \"/releases/v4.13.0/\"}],\n    \"release-v4.12.0\":\n    [{\"id\": \"release-v4___12___0\",\n      \"data\":\n      {\"title\": \"Lean 4.12.0 (2024-10-01)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.12.0 (2024-10-01)\",\n         \"shortTitle\": null,\n         \"number\": \"16\"}]},\n      \"address\": \"/releases/v4.12.0/\"}],\n    \"release-v4.11.0\":\n    [{\"id\": \"release-v4___11___0\",\n      \"data\":\n      {\"title\": \"Lean 4.11.0 (2024-09-02)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.11.0 (2024-09-02)\",\n         \"shortTitle\": null,\n         \"number\": \"17\"}]},\n      \"address\": \"/releases/v4.11.0/\"}],\n    \"release-v4.10.0\":\n    [{\"id\": \"release-v4___10___0\",\n      \"data\":\n      {\"title\": \"Lean 4.10.0 (2024-07-31)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.10.0 (2024-07-31)\",\n         \"shortTitle\": null,\n         \"number\": \"18\"}]},\n      \"address\": \"/releases/v4.10.0/\"}],\n    \"release-v4.1.0\":\n    [{\"id\": \"release-v4___1___0\",\n      \"data\":\n      {\"title\": \"Lean 4.1.0 (2023-09-26)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.1.0 (2023-09-26)\",\n         \"shortTitle\": null,\n         \"number\": \"27\"}]},\n      \"address\": \"/releases/v4.1.0/\"}],\n    \"release-v4.0.0-m5\":\n    [{\"id\": \"release-v4___0___0-m5\",\n      \"data\":\n      {\"title\": \"Lean 4.0.0-m5 (2022-08-22)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.0.0-m5 (2022-08-22)\",\n         \"shortTitle\": null,\n         \"number\": \"29\"}]},\n      \"address\": \"/releases/v4.0.0-m5/\"}],\n    \"release-v4.0.0-m4\":\n    [{\"id\": \"release-v4___0___0-m4\",\n      \"data\":\n      {\"title\": \"Lean 4.0.0-m4 (2022-03-27)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.0.0-m4 (2022-03-27)\",\n         \"shortTitle\": null,\n         \"number\": \"30\"}]},\n      \"address\": \"/releases/v4.0.0-m4/\"}],\n    \"release-v4.0.0-m3\":\n    [{\"id\": \"release-v4___0___0-m3\",\n      \"data\":\n      {\"title\": \"Lean 4.0.0-m3 (2022-01-31)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.0.0-m3 (2022-01-31)\",\n         \"shortTitle\": null,\n         \"number\": \"31\"}]},\n      \"address\": \"/releases/v4.0.0-m3/\"}],\n    \"release-v4.0.0-m2\":\n    [{\"id\": \"release-v4___0___0-m2\",\n      \"data\":\n      {\"title\": \"Lean 4.0.0-m2 (2021-03-02)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.0.0-m2 (2021-03-02)\",\n         \"shortTitle\": null,\n         \"number\": \"32\"}]},\n      \"address\": \"/releases/v4.0.0-m2/\"}],\n    \"release-v4.0.0-m1\":\n    [{\"id\": \"release-v4___0___0-m1\",\n      \"data\":\n      {\"title\": \"Lean 4.0.0-m1 (2021-01-04)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.0.0-m1 (2021-01-04)\",\n         \"shortTitle\": null,\n         \"number\": \"33\"}]},\n      \"address\": \"/releases/v4.0.0-m1/\"}],\n    \"release-v4.0.0\":\n    [{\"id\": \"release-v4___0___0\",\n      \"data\":\n      {\"title\": \"Lean 4.0.0 (2023-09-08)\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null},\n        {\"title\": \"Lean 4.0.0 (2023-09-08)\",\n         \"shortTitle\": null,\n         \"number\": \"28\"}]},\n      \"address\": \"/releases/v4.0.0/\"}],\n    \"release-notes\":\n    [{\"id\": \"release-notes\",\n      \"data\":\n      {\"title\": \"Release Notes\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Release Notes\", \"shortTitle\": null, \"number\": null}]},\n      \"address\": \"/releases/\"}],\n    \"reference-counting\":\n    [{\"id\": \"reference-counting\",\n      \"data\":\n      {\"title\": \"Reference Counting\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"},\n        {\"title\": \"Reference Counting\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"reference-boxes\":\n    [{\"id\": \"reference-boxes\",\n      \"data\":\n      {\"title\": \"Constant, Syntax, and Tactic References\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Typographical Conventions\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Constant, Syntax, and Tactic References\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"ref-locks\":\n    [{\"id\": \"ref-locks\",\n      \"data\":\n      {\"title\": \"Concurrency\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Mutable References\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Concurrency\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"reducibility\":\n    [{\"id\": \"reducibility\",\n      \"data\":\n      {\"title\": \"Controlling Reduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Controlling Reduction\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"recursors\":\n    [{\"id\": \"recursors\",\n      \"data\":\n      {\"title\": \"Recursors\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Recursors\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"recursor-types\":\n    [{\"id\": \"recursor-types\",\n      \"data\":\n      {\"title\": \"Recursor Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Recursors\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Recursor Types\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"recursor-elaboration-helpers\":\n    [{\"id\": \"recursor-elaboration-helpers\",\n      \"data\":\n      {\"title\": \"Constructions for Termination Checking\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Constructions for Termination Checking\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"recursive-instances\":\n    [{\"id\": \"recursive-instances\",\n      \"data\":\n      {\"title\": \"Recursive Instances\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Declarations\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Recursive Instances\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"recursive-definitions\":\n    [{\"id\": \"recursive-definitions\",\n      \"data\":\n      {\"title\": \"Recursive Definitions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"reader-monad\":\n    [{\"id\": \"reader-monad\",\n      \"data\":\n      {\"title\": \"Reader\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Varieties of Monads\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Reader\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"raw-string-literals\":\n    [{\"id\": \"raw-string-literals\",\n      \"data\":\n      {\"title\": \"Raw String Literals\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Raw String Literals\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"raw-data\":\n    [{\"id\": \"raw-data\",\n      \"data\":\n      {\"title\": \"Raw Data and Invariants\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Library Design\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Raw Data and Invariants\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"ranges\":\n    [{\"id\": \"ranges\",\n      \"data\":\n      {\"title\": \"Ranges\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.18.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Ranges\", \"shortTitle\": null, \"number\": \"18\"}]},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"quotients-nested-inductives\":\n    [{\"id\": \"quotients-nested-inductives\",\n      \"data\":\n      {\"title\": \"Quotients and Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotients and Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotients\":\n    [{\"id\": \"quotients\",\n      \"data\":\n      {\"title\": \"Quotients\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-reduction\":\n    [{\"id\": \"quotient-reduction\",\n      \"data\":\n      {\"title\": \"Quotient Reduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotient Reduction\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-proofs\":\n    [{\"id\": \"quotient-proofs\",\n      \"data\":\n      {\"title\": \"Proofs About Quotients\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotient API\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Proofs About Quotients\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-model\":\n    [{\"id\": \"quotient-model\",\n      \"data\":\n      {\"title\": \"Logical Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-intro\":\n    [{\"id\": \"quotient-intro\",\n      \"data\":\n      {\"title\": \"Introducing Quotients\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotient API\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Introducing Quotients\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-funext\":\n    [{\"id\": \"quotient-funext\",\n      \"data\":\n      {\"title\": \"Quotients and Function Extensionality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotients and Function Extensionality\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-elim\":\n    [{\"id\": \"quotient-elim\",\n      \"data\":\n      {\"title\": \"Eliminating Quotients\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotient API\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Eliminating Quotients\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-api\":\n    [{\"id\": \"quotient-api\",\n      \"data\":\n      {\"title\": \"Quotient API\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotient API\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotient-alternatives\":\n    [{\"id\": \"quotient-alternatives\",\n      \"data\":\n      {\"title\": \"Alternatives to Quotient Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Alternatives to Quotient Types\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quote-patterns\":\n    [{\"id\": \"quote-patterns\",\n      \"data\":\n      {\"title\": \"Matching Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Matching Syntax\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"quotation\":\n    [{\"id\": \"quotation\",\n      \"data\":\n      {\"title\": \"Quotation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotation\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"quasiquotation\":\n    [{\"id\": \"quasiquotation\",\n      \"data\":\n      {\"title\": \"Quasiquotation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Quotation\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Quasiquotation\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"propositions\":\n    [{\"id\": \"propositions\",\n      \"data\":\n      {\"title\": \"Propositions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Propositions\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Propositions/\"}],\n    \"propositional-equality\":\n    [{\"id\": \"propositional-equality\",\n      \"data\":\n      {\"title\": \"Propositional Equality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"19.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Propositions\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Propositional Equality\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"prop-vs-type\":\n    [{\"id\": \"prop-vs-type\",\n      \"data\":\n      {\"title\": \"Prop vs Type\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Well-Formedness Requirements\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Prop vs Type\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"proof-states\":\n    [{\"id\": \"proof-states\",\n      \"data\":\n      {\"title\": \"Reading Proof States\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Reading Proof States\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"prod-api\":\n    [{\"id\": \"prod-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.13.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Tuples\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Ordered Pairs\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"print-axioms\":\n    [{\"id\": \"print-axioms\",\n      \"data\":\n      {\"title\": \"Displaying Axiom Dependencies\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"8.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Axioms\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Displaying Axiom Dependencies\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Axioms/\"}],\n    \"precedence\":\n    [{\"id\": \"precedence\",\n      \"data\":\n      {\"title\": \"Precedence\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Precedence\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"platforms\":\n    [{\"id\": \"platforms\",\n      \"data\":\n      {\"title\": \"Supported Platforms\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Supported Platforms\",\n         \"shortTitle\": null,\n         \"number\": null}]},\n      \"address\": \"/platforms/\"}],\n    \"platform-info\":\n    [{\"id\": \"platform-info\",\n      \"data\":\n      {\"title\": \"System and Platform Information\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"System and Platform Information\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/IO/System-and-Platform-Information/\"}],\n    \"peano-axioms\":\n    [{\"id\": \"peano-axioms\",\n      \"data\":\n      {\"title\": \"Peano Axioms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Peano Axioms\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"pattern-matching\":\n    [{\"id\": \"pattern-matching\",\n      \"data\":\n      {\"title\": \"Pattern Matching\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Pattern Matching\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"pattern-fun\":\n    [{\"id\": \"pattern-fun\",\n      \"data\":\n      {\"title\": \"Pattern Matching Functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.8.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Pattern Matching\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Pattern Matching Functions\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"partial-unsafe\":\n    [{\"id\": \"partial-unsafe\",\n      \"data\":\n      {\"title\": \"Partial and Unsafe Definitions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial and Unsafe Definitions\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial-functions\":\n    [{\"id\": \"partial-functions\",\n      \"data\":\n      {\"title\": \"Partial Functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial and Unsafe Definitions\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Partial Functions\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial-fixpoint-theory\":\n    [{\"id\": \"partial-fixpoint-theory\",\n      \"data\":\n      {\"title\": \"Theory and Construction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial Fixpoint Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Theory and Construction\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial-fixpoint-tailrec\":\n    [{\"id\": \"partial-fixpoint-tailrec\",\n      \"data\":\n      {\"title\": \"Tail-Recursive Functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial Fixpoint Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Tail-Recursive Functions\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial-fixpoint-monadic\":\n    [{\"id\": \"partial-fixpoint-monadic\",\n      \"data\":\n      {\"title\": \"Monadic functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial Fixpoint Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Monadic functions\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial-fixpoint\":\n    [{\"id\": \"partial-fixpoint\",\n      \"data\":\n      {\"title\": \"Partial Fixpoint Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial Fixpoint Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial-correctness-theorem\":\n    [{\"id\": \"partial-correctness-theorem\",\n      \"data\":\n      {\"title\": \"Partial Correctness Theorems\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial Fixpoint Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Partial Correctness Theorems\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"parser\":\n    [{\"id\": \"parser\",\n      \"data\":\n      {\"title\": \"Parsing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Elaboration and Compilation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Parsing\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"parameter-syntax\":\n    [{\"id\": \"parameter-syntax\",\n      \"data\":\n      {\"title\": \"Parameters and Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Headers and Signatures\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Parameters and Types\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"pairs\":\n    [{\"id\": \"pairs\",\n      \"data\":\n      {\"title\": \"Ordered Pairs\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.13.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Tuples\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Ordered Pairs\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"ordinary-coercion\":\n    [{\"id\": \"ordinary-coercion\",\n      \"data\":\n      {\"title\": \"Coercing Between Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Coercing Between Types\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"option-monad\":\n    [{\"id\": \"option-monad\",\n      \"data\":\n      {\"title\": \"Option\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.5.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Varieties of Monads\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Option\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"option\":\n    [{\"id\": \"option\",\n      \"data\":\n      {\"title\": \"Optional Values\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.12.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Optional Values\", \"shortTitle\": null, \"number\": \"12\"}]},\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"operators-and-notations\":\n    [{\"id\": \"operators-and-notations\",\n      \"data\":\n      {\"title\": \"Operators and Notations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Notations\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Operators and Notations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"operators\":\n    [{\"id\": \"operators\",\n      \"data\":\n      {\"title\": \"Custom Operators\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Custom Operators\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"notations\":\n    [{\"id\": \"notations\",\n      \"data\":\n      {\"title\": \"Notations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Notations\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"nested-inductive-types\":\n    [{\"id\": \"nested-inductive-types\",\n      \"data\":\n      {\"title\": \"Nested Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Nested Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"nat-syntax\":\n    [{\"id\": \"nat-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-runtime\":\n    [{\"id\": \"nat-runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-performance\":\n    [{\"id\": \"nat-performance\",\n      \"data\":\n      {\"title\": \"Performance Notes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Performance Notes\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-model\":\n    [{\"id\": \"nat-model\",\n      \"data\":\n      {\"title\": \"Logical Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-literals\":\n    [{\"id\": \"nat-literals\",\n      \"data\":\n      {\"title\": \"Natural Numbers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Numeric Literals\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"nat-api-predicates\":\n    [{\"id\": \"nat-api-predicates\",\n      \"data\":\n      {\"title\": \"Predicates\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Comparisons\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Predicates\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-pow2\":\n    [{\"id\": \"nat-api-pow2\",\n      \"data\":\n      {\"title\": \"Powers of Two\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Powers of Two\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-minmax\":\n    [{\"id\": \"nat-api-minmax\",\n      \"data\":\n      {\"title\": \"Minimum and Maximum\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Minimum and Maximum\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-iteration\":\n    [{\"id\": \"nat-api-iteration\",\n      \"data\":\n      {\"title\": \"Iteration\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Iteration\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-induction\":\n    [{\"id\": \"nat-api-induction\",\n      \"data\":\n      {\"title\": \"Alternative Induction Principles\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.8.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Elimination\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Alternative Induction Principles\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-gcd-lcm\":\n    [{\"id\": \"nat-api-gcd-lcm\",\n      \"data\":\n      {\"title\": \"GCD and LCM\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"GCD and LCM\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-elim\":\n    [{\"id\": \"nat-api-elim\",\n      \"data\":\n      {\"title\": \"Elimination\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Elimination\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-deceq\":\n    [{\"id\": \"nat-api-deceq\",\n      \"data\":\n      {\"title\": \"Decidable Equality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Comparisons\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Decidable Equality\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-conversion\":\n    [{\"id\": \"nat-api-conversion\",\n      \"data\":\n      {\"title\": \"Conversion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Conversion\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-comparison-bool\":\n    [{\"id\": \"nat-api-comparison-bool\",\n      \"data\":\n      {\"title\": \"Boolean Comparisons\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Comparisons\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Boolean Comparisons\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-comparison\":\n    [{\"id\": \"nat-api-comparison\",\n      \"data\":\n      {\"title\": \"Comparisons\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Comparisons\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-cast\":\n    [{\"id\": \"nat-api-cast\",\n      \"data\":\n      {\"title\": \"Coercions from Natural Numbers and Integers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Coercing Between Types\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Coercions from Natural Numbers and Integers\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"nat-api-bitwise\":\n    [{\"id\": \"nat-api-bitwise\",\n      \"data\":\n      {\"title\": \"Bitwise Operations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Arithmetic\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Bitwise Operations\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api-arithmetic\":\n    [{\"id\": \"nat-api-arithmetic\",\n      \"data\":\n      {\"title\": \"Arithmetic\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Arithmetic\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nat-api\":\n    [{\"id\": \"nat-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"namespaces-sections\":\n    [{\"id\": \"namespaces-sections\",\n      \"data\":\n      {\"title\": \"Namespaces and Sections\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Namespaces and Sections\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"namespaces\":\n    [{\"id\": \"namespaces\",\n      \"data\":\n      {\"title\": \"Namespaces\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Namespaces and Sections\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Namespaces\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"mvcgen-tactic-tutorial\":\n    [{\"id\": \"mvcgen-tactic-tutorial\",\n      \"data\":\n      {\"title\": \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"18.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  mvcgen  tactic\", \"shortTitle\": null, \"number\": \"18\"},\n        {\"title\": \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mvcgen-tactic\":\n    [{\"id\": \"mvcgen-tactic\",\n      \"data\":\n      {\"title\": \"The  mvcgen  tactic\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"18.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  mvcgen  tactic\",\n         \"shortTitle\": null,\n         \"number\": \"18\"}]},\n      \"address\": \"/The--mvcgen--tactic/\"}],\n    \"mvcgen-proof-mode\":\n    [{\"id\": \"mvcgen-proof-mode\",\n      \"data\":\n      {\"title\": \"Proof Mode\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"18.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  mvcgen  tactic\", \"shortTitle\": null, \"number\": \"18\"},\n        {\"title\": \"Proof Mode\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/The--mvcgen--tactic/Proof-Mode/\"}],\n    \"mvcgen-adequacy\":\n    [{\"id\": \"mvcgen-adequacy\",\n      \"data\":\n      {\"title\": \"Adequacy Lemmas\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"18.2.3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  mvcgen  tactic\", \"shortTitle\": null, \"number\": \"18\"},\n        {\"title\": \"Predicate Transformers\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Predicate Transformers\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Adequacy Lemmas\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"mutual-well-founded-recursion\":\n    [{\"id\": \"mutual-well-founded-recursion\",\n      \"data\":\n      {\"title\": \"Mutual Well-Founded Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.3.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Mutual Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"mutual-syntax\":\n    [{\"id\": \"mutual-syntax\",\n      \"data\":\n      {\"title\": \"Mutual Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Mutual Recursion\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"mutual-structural-recursion\":\n    [{\"id\": \"mutual-structural-recursion\",\n      \"data\":\n      {\"title\": \"Mutual Structural Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Structural Recursion\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Mutual Structural Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"mutual-partial-fixpoint\":\n    [{\"id\": \"mutual-partial-fixpoint\",\n      \"data\":\n      {\"title\": \"Mutual Recursion with Partial Fixpoints\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Partial Fixpoint Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Mutual Recursion with Partial Fixpoints\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"mutual-inductive-types-same-universe\":\n    [{\"id\": \"mutual-inductive-types-same-universe\",\n      \"data\":\n      {\"title\": \"Universe Levels\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Requirements\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Universe Levels\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types-same-parameters\":\n    [{\"id\": \"mutual-inductive-types-same-parameters\",\n      \"data\":\n      {\"title\": \"Parameters Must Match\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Requirements\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Parameters Must Match\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types-run-time\":\n    [{\"id\": \"mutual-inductive-types-run-time\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types-requirements\":\n    [{\"id\": \"mutual-inductive-types-requirements\",\n      \"data\":\n      {\"title\": \"Requirements\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Requirements\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types-recursors\":\n    [{\"id\": \"mutual-inductive-types-recursors\",\n      \"data\":\n      {\"title\": \"Recursors\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Recursors\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types-positivity\":\n    [{\"id\": \"mutual-inductive-types-positivity\",\n      \"data\":\n      {\"title\": \"Positivity\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Requirements\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Positivity\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types-dependencies\":\n    [{\"id\": \"mutual-inductive-types-dependencies\",\n      \"data\":\n      {\"title\": \"Mutual Dependencies\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Requirements\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Mutual Dependencies\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutual-inductive-types\":\n    [{\"id\": \"mutual-inductive-types\",\n      \"data\":\n      {\"title\": \"Mutual Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Mutual Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"mutable-st-references\":\n    [{\"id\": \"mutable-st-references\",\n      \"data\":\n      {\"title\": \"State Transformers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Mutable References\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"State Transformers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"monads-and-do\":\n    [{\"id\": \"monads-and-do\",\n      \"data\":\n      {\"title\": \"Functors, Monads and  do -Notation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"monad-varieties\":\n    [{\"id\": \"monad-varieties\",\n      \"data\":\n      {\"title\": \"Varieties of Monads\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Varieties of Monads\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"monad-transformers\":\n    [{\"id\": \"monad-transformers\",\n      \"data\":\n      {\"title\": \"Monad Transformers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Varieties of Monads\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Monad Transformers\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"monad-laws\":\n    [{\"id\": \"monad-laws\",\n      \"data\":\n      {\"title\": \"Laws\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Laws\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"monad-iteration-syntax\":\n    [{\"id\": \"monad-iteration-syntax\",\n      \"data\":\n      {\"title\": \"Iteration\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.3.2.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"do -Notation\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Iteration\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"module-syntax\":\n    [{\"id\": \"module-syntax\",\n      \"data\":\n      {\"title\": \"Concrete Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Concrete Syntax\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"module-structure\":\n    [{\"id\": \"module-structure\",\n      \"data\":\n      {\"title\": \"Structure\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Structure\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"module-scopes\":\n    [{\"id\": \"module-scopes\",\n      \"data\":\n      {\"title\": \"Modules and Visibility\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Modules and Visibility\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"module-headers\":\n    [{\"id\": \"module-headers\",\n      \"data\":\n      {\"title\": \"Headers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Structure\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Headers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"module-encoding\":\n    [{\"id\": \"module-encoding\",\n      \"data\":\n      {\"title\": \"Encoding and Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Encoding and Representation\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"module-contents\":\n    [{\"id\": \"module-contents\",\n      \"data\":\n      {\"title\": \"Elaborated Modules\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Elaborated Modules\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"metavariables-in-proofs\":\n    [{\"id\": \"metavariables-in-proofs\",\n      \"data\":\n      {\"title\": \"Metavariables\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Reading Proof States\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Metavariables\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"meta-phase\":\n    [{\"id\": \"meta-phase\",\n      \"data\":\n      {\"title\": \"The Meta Phase\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Modules and Visibility\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"The Meta Phase\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"match_pattern-functions\":\n    [{\"id\": \"match_pattern-functions\",\n      \"data\":\n      {\"title\": \"Custom Pattern Functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.8.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Pattern Matching\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Custom Pattern Functions\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"match-generalization\":\n    [{\"id\": \"match-generalization\",\n      \"data\":\n      {\"title\": \"Generalization\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.8.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Pattern Matching\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Types\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Generalization\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"maps\":\n    [{\"id\": \"maps\",\n      \"data\":\n      {\"title\": \"Maps and Sets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"macros\":\n    [{\"id\": \"macros\",\n      \"data\":\n      {\"title\": \"Macros\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro_rules\":\n    [{\"id\": \"macro_rules\",\n      \"data\":\n      {\"title\": \"The  macro_rules  Command\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Defining Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The  macro_rules  Command\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-monad-hygiene\":\n    [{\"id\": \"macro-monad-hygiene\",\n      \"data\":\n      {\"title\": \"Hygiene-Related Operations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The Macro Monad\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Hygiene-Related Operations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-monad\":\n    [{\"id\": \"macro-monad\",\n      \"data\":\n      {\"title\": \"The Macro Monad\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The Macro Monad\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-hygiene\":\n    [{\"id\": \"macro-hygiene\",\n      \"data\":\n      {\"title\": \"Hygiene\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Hygiene\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-exceptions\":\n    [{\"id\": \"macro-exceptions\",\n      \"data\":\n      {\"title\": \"Exceptions and Errors\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The Macro Monad\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Exceptions and Errors\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-environment\":\n    [{\"id\": \"macro-environment\",\n      \"data\":\n      {\"title\": \"Querying the Environment\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The Macro Monad\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Querying the Environment\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-command\":\n    [{\"id\": \"macro-command\",\n      \"data\":\n      {\"title\": \"The  macro  Command\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Defining Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The  macro  Command\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-attribute\":\n    [{\"id\": \"macro-attribute\",\n      \"data\":\n      {\"title\": \"The Macro Attribute\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Defining Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"The Macro Attribute\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro-and-elab\":\n    [{\"id\": \"macro-and-elab\",\n      \"data\":\n      {\"title\": \"Macro Expansion and Elaboration\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Elaboration and Compilation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Macro Expansion and Elaboration\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"list-syntax\":\n    [{\"id\": \"list-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.15.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Linked Lists\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"list-performance\":\n    [{\"id\": \"list-performance\",\n      \"data\":\n      {\"title\": \"Performance Notes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.15.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Linked Lists\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Performance Notes\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"list-api-reference\":\n    [{\"id\": \"list-api-reference\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.15.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Linked Lists\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"lifting-monads\":\n    [{\"id\": \"lifting-monads\",\n      \"data\":\n      {\"title\": \"Lifting Monads\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Lifting Monads\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"level-expressions\":\n    [{\"id\": \"level-expressions\",\n      \"data\":\n      {\"title\": \"Level Expressions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.3.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Universes\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Polymorphism\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Level Expressions\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"let-mut\":\n    [{\"id\": \"let-mut\",\n      \"data\":\n      {\"title\": \"Local Mutable State\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.3.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"do -Notation\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Local Mutable State\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"lean-language-reference\":\n    [{\"id\": \"lean-language-reference\",\n      \"data\":\n      {\"title\": \"The Lean Language Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null}]},\n      \"address\": \"//\"}],\n    \"language-extension\":\n    [{\"id\": \"language-extension\",\n      \"data\":\n      {\"title\": \"Notations and Macros\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\",\n         \"shortTitle\": null,\n         \"number\": \"22\"}]},\n      \"address\": \"/Notations-and-Macros/\"}],\n    \"lake-vocab\":\n    [{\"id\": \"lake-vocab\",\n      \"data\":\n      {\"title\": \"Concepts and Terminology\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-scripts\":\n    [{\"id\": \"lake-scripts\",\n      \"data\":\n      {\"title\": \"Scripts\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Scripts\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-github\":\n    [{\"id\": \"lake-github\",\n      \"data\":\n      {\"title\": \"GitHub Release Builds\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"GitHub Release Builds\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-facets\":\n    [{\"id\": \"lake-facets\",\n      \"data\":\n      {\"title\": \"Facets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Facets\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-environment\":\n    [{\"id\": \"lake-environment\",\n      \"data\":\n      {\"title\": \"Environment Variables\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Environment Variables\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-config-toml\":\n    [{\"id\": \"lake-config-toml\",\n      \"data\":\n      {\"title\": \"Declarative TOML Format\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Configuration File Format\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Declarative TOML Format\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-config-lean\":\n    [{\"id\": \"lake-config-lean\",\n      \"data\":\n      {\"title\": \"Lean Format\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Configuration File Format\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Lean Format\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-config\":\n    [{\"id\": \"lake-config\",\n      \"data\":\n      {\"title\": \"Configuration File Format\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Configuration File Format\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-cli\":\n    [{\"id\": \"lake-cli\",\n      \"data\":\n      {\"title\": \"Command-Line Interface\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-cache-remote\":\n    [{\"id\": \"lake-cache-remote\",\n      \"data\":\n      {\"title\": \"Remote Artifact Caches\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Artifact Caches\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Remote Artifact Caches\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-cache\":\n    [{\"id\": \"lake-cache\",\n      \"data\":\n      {\"title\": \"Artifact Caches\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.1.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Concepts and Terminology\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Artifact Caches\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake-api\":\n    [{\"id\": \"lake-api\",\n      \"data\":\n      {\"title\": \"Script API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Script API Reference\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake\":\n    [{\"id\": \"lake\",\n      \"data\":\n      {\"title\": \"Lake\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"keywords-and-identifiers\":\n    [{\"id\": \"keywords-and-identifiers\",\n      \"data\":\n      {\"title\": \"Keywords and Identifiers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Concrete Syntax\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Keywords and Identifiers\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"iterators\":\n    [{\"id\": \"iterators\",\n      \"data\":\n      {\"title\": \"Iterators\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"21.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Iterators\", \"shortTitle\": null, \"number\": \"21\"}]},\n      \"address\": \"/Iterators/\"}],\n    \"iterator-plausibility\":\n    [{\"id\": \"iterator-plausibility\",\n      \"data\":\n      {\"title\": \"Plausibility\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"21.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Iterators\", \"shortTitle\": null, \"number\": \"21\"},\n        {\"title\": \"Iterator Definitions\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Plausibility\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"iota-reduction\":\n    [{\"id\": \"iota-reduction\",\n      \"data\":\n      {\"title\": \"Reduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Recursors\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Reduction\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"io-timing\":\n    [{\"id\": \"io-timing\",\n      \"data\":\n      {\"title\": \"Timing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Timing\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/IO/Timing/\"}],\n    \"io-processes\":\n    [{\"id\": \"io-processes\",\n      \"data\":\n      {\"title\": \"Processes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Processes\", \"shortTitle\": null, \"number\": \"9\"}]},\n      \"address\": \"/IO/Processes/\"}],\n    \"io-monad-getenv\":\n    [{\"id\": \"io-monad-getenv\",\n      \"data\":\n      {\"title\": \"Environment Variables\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Environment Variables\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/IO/Environment-Variables/\"}],\n    \"io-monad-errors\":\n    [{\"id\": \"io-monad-errors\",\n      \"data\":\n      {\"title\": \"Errors and Error Handling in  IO\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Errors and Error Handling in  IO\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"io-monad-control\":\n    [{\"id\": \"io-monad-control\",\n      \"data\":\n      {\"title\": \"Control Structures\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/IO/Control-Structures/\"}],\n    \"io-monad\":\n    [{\"id\": \"io-monad\",\n      \"data\":\n      {\"title\": \"The  IO ,  EIO  and  BaseIO  Monads\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"The  IO ,  EIO  and  BaseIO  Monads\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"io\":\n    [{\"id\": \"io\",\n      \"data\":\n      {\"title\": \"IO\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"}]},\n      \"address\": \"/IO/\"}],\n    \"introduction\":\n    [{\"id\": \"introduction\",\n      \"data\":\n      {\"title\": \"Introduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"interaction\":\n    [{\"id\": \"interaction\",\n      \"data\":\n      {\"title\": \"Interacting with Lean\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"int-syntax\":\n    [{\"id\": \"int-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Integers\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"int-runtime\":\n    [{\"id\": \"int-runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Integers\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"int-model\":\n    [{\"id\": \"int-model\",\n      \"data\":\n      {\"title\": \"Logical Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Integers\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"int-div\":\n    [{\"id\": \"int-div\",\n      \"data\":\n      {\"title\": \"Division\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.2.4.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Integers\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Arithmetic\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Division\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"instance-synth-parameters\":\n    [{\"id\": \"instance-synth-parameters\",\n      \"data\":\n      {\"title\": \"Instance Parameters and Synthesis\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.3.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Synthesis\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Instance Parameters and Synthesis\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"instance-synth\":\n    [{\"id\": \"instance-synth\",\n      \"data\":\n      {\"title\": \"Instance Synthesis\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Synthesis\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"instance-search\":\n    [{\"id\": \"instance-search\",\n      \"data\":\n      {\"title\": \"Instance Search Problems\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Synthesis\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Instance Search Problems\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"instance-priorities\":\n    [{\"id\": \"instance-priorities\",\n      \"data\":\n      {\"title\": \"Instance Priorities\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Declarations\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Instance Priorities\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"instance-declarations\":\n    [{\"id\": \"instance-declarations\",\n      \"data\":\n      {\"title\": \"Instance Declarations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"instance-attribute\":\n    [{\"id\": \"instance-attribute\",\n      \"data\":\n      {\"title\": \"The Instance Attribute\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.2.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Declarations\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"The Instance Attribute\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"initialization\":\n    [{\"id\": \"initialization\",\n      \"data\":\n      {\"title\": \"Initialization\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"2.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Elaboration and Compilation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Initialization\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"inferring-well-founded-recursion\":\n    [{\"id\": \"inferring-well-founded-recursion\",\n      \"data\":\n      {\"title\": \"Inferring Well-Founded Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.3.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Inferring Well-Founded Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"inferring-structural-recursion\":\n    [{\"id\": \"inferring-structural-recursion\",\n      \"data\":\n      {\"title\": \"Inferring Structural Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Structural Recursion\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Inferring Structural Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"inductive-types-trivial-wrappers\":\n    [{\"id\": \"inductive-types-trivial-wrappers\",\n      \"data\":\n      {\"title\": \"Trivial Wrappers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Trivial Wrappers\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-types-standard-representation\":\n    [{\"id\": \"inductive-types-standard-representation\",\n      \"data\":\n      {\"title\": \"Other Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Other Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-types-runtime-special-support\":\n    [{\"id\": \"inductive-types-runtime-special-support\",\n      \"data\":\n      {\"title\": \"Exceptions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Exceptions\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-types-runtime-relevance\":\n    [{\"id\": \"inductive-types-runtime-relevance\",\n      \"data\":\n      {\"title\": \"Relevance\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Relevance\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-types-logical-model\":\n    [{\"id\": \"inductive-types-logical-model\",\n      \"data\":\n      {\"title\": \"Logical Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-types-ffi\":\n    [{\"id\": \"inductive-types-ffi\",\n      \"data\":\n      {\"title\": \"FFI\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.4.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Other Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"FFI\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-types\":\n    [{\"id\": \"inductive-types\",\n      \"data\":\n      {\"title\": \"Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-type-universe-levels\":\n    [{\"id\": \"inductive-type-universe-levels\",\n      \"data\":\n      {\"title\": \"Universe Levels\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.3.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Well-Formedness Requirements\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Universe Levels\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-declarations-deriving-instances\":\n    [{\"id\": \"inductive-declarations-deriving-instances\",\n      \"data\":\n      {\"title\": \"Deriving Instances\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Type Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Deriving Instances\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-declarations\":\n    [{\"id\": \"inductive-declarations\",\n      \"data\":\n      {\"title\": \"Inductive Type Declarations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Type Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"inductive-datatypes-parameters-and-indices\":\n    [{\"id\": \"inductive-datatypes-parameters-and-indices\",\n      \"data\":\n      {\"title\": \"Parameters and Indices\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Type Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Parameters and Indices\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"implicit-functions\":\n    [{\"id\": \"implicit-functions\",\n      \"data\":\n      {\"title\": \"Implicit Parameters\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Implicit Parameters\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Terms/Functions/\"}],\n    \"if-then-else\":\n    [{\"id\": \"if-then-else\",\n      \"data\":\n      {\"title\": \"Conditionals\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Conditionals\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"identifiers-and-resolution\":\n    [{\"id\": \"identifiers-and-resolution\",\n      \"data\":\n      {\"title\": \"Identifiers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Identifiers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"history-of-lean\":\n    [{\"id\": \"history-of-lean\",\n      \"data\":\n      {\"title\": \"History\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"History\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"hiding-terms-in-proof-states\":\n    [{\"id\": \"hiding-terms-in-proof-states\",\n      \"data\":\n      {\"title\": \"Hiding Proofs and Large Terms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Reading Proof States\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Hiding Proofs and Large Terms\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"hash-synth\":\n    [{\"id\": \"hash-synth\",\n      \"data\":\n      {\"title\": \"Synthesizing Instances\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Synthesizing Instances\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"hash-reduce\":\n    [{\"id\": \"hash-reduce\",\n      \"data\":\n      {\"title\": \"Reducing Terms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Reducing Terms\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"hash-print\":\n    [{\"id\": \"hash-print\",\n      \"data\":\n      {\"title\": \"Querying the Context\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Querying the Context\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"hash-guard_msgs\":\n    [{\"id\": \"hash-guard_msgs\",\n      \"data\":\n      {\"title\": \"Testing Output with  #guard_msgs\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Testing Output with  #guard_msgs\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"hash-eval\":\n    [{\"id\": \"hash-eval\",\n      \"data\":\n      {\"title\": \"Evaluating Terms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Evaluating Terms\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"hash-check\":\n    [{\"id\": \"hash-check\",\n      \"data\":\n      {\"title\": \"Checking Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Checking Types\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"grind-tactic\":\n    [{\"id\": \"grind-tactic\",\n      \"data\":\n      {\"title\": \"The  grind  tactic\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"}]},\n      \"address\": \"/The--grind--tactic/\"}],\n    \"grind-split\":\n    [{\"id\": \"grind-split\",\n      \"data\":\n      {\"title\": \"Case Analysis\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Case Analysis\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"grind-ring-field\":\n    [{\"id\": \"grind-ring-field\",\n      \"data\":\n      {\"title\": \"Fields\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.8.1.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Algebraic Solver (Commutative Rings, Fields)\",\n         \"shortTitle\": null,\n         \"number\": \"8\"},\n        {\"title\": \"Solver Type Classes\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Algebraic Structures\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Fields\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"grind-ring-classes\":\n    [{\"id\": \"grind-ring-classes\",\n      \"data\":\n      {\"title\": \"Solver Type Classes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.8.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Algebraic Solver (Commutative Rings, Fields)\",\n         \"shortTitle\": null,\n         \"number\": \"8\"},\n        {\"title\": \"Solver Type Classes\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"grind-ring\":\n    [{\"id\": \"grind-ring\",\n      \"data\":\n      {\"title\": \"Algebraic Solver (Commutative Rings, Fields)\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Algebraic Solver (Commutative Rings, Fields)\",\n         \"shortTitle\": null,\n         \"number\": \"8\"}]},\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"grind-propagation\":\n    [{\"id\": \"grind-propagation\",\n      \"data\":\n      {\"title\": \"Constraint Propagation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Constraint Propagation\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"grind-linarith-classes\":\n    [{\"id\": \"grind-linarith-classes\",\n      \"data\":\n      {\"title\": \"Supporting  linarith\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.9.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Linear Arithmetic Solver\",\n         \"shortTitle\": null,\n         \"number\": \"9\"},\n        {\"title\": \"Supporting  linarith\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"grind-linarith\":\n    [{\"id\": \"grind-linarith\",\n      \"data\":\n      {\"title\": \"Linear Arithmetic Solver\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Linear Arithmetic Solver\",\n         \"shortTitle\": null,\n         \"number\": \"9\"}]},\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"grind-limits\":\n    [{\"id\": \"grind-limits\",\n      \"data\":\n      {\"title\": \"Resource Limits\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.6.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"E‑matching\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Resource Limits\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"grind-if-then-else-norm\":\n    [{\"id\": \"grind-if-then-else-norm\",\n      \"data\":\n      {\"title\": \"if - then - else  Normalization\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.10.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Bigger Examples\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"if - then - else  Normalization\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"grind-errors\":\n    [{\"id\": \"grind-errors\",\n      \"data\":\n      {\"title\": \"Error Messages\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Error Messages\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The--grind--tactic/Error-Messages/\"}],\n    \"grind-bigger-examples\":\n    [{\"id\": \"grind-bigger-examples\",\n      \"data\":\n      {\"title\": \"Bigger Examples\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Bigger Examples\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"generalized-field-notation\":\n    [{\"id\": \"generalized-field-notation\",\n      \"data\":\n      {\"title\": \"Generalized Field Notation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Function Application\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Generalized Field Notation\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"functions\":\n    [{\"id\": \"functions\",\n      \"data\":\n      {\"title\": \"Functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"function-types\":\n    [{\"id\": \"function-types\",\n      \"data\":\n      {\"title\": \"Function Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Function Types\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"function-terms\":\n    [{\"id\": \"function-terms\",\n      \"data\":\n      {\"title\": \"Functions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Terms/Functions/\"}],\n    \"function-extensionality\":\n    [{\"id\": \"function-extensionality\",\n      \"data\":\n      {\"title\": \"Extensionality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Extensionality\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"function-application\":\n    [{\"id\": \"function-application\",\n      \"data\":\n      {\"title\": \"Function Application\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"10.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Terms\", \"shortTitle\": null, \"number\": \"10\"},\n        {\"title\": \"Function Application\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"function-api-properties\":\n    [{\"id\": \"function-api-properties\",\n      \"data\":\n      {\"title\": \"Properties\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.1.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Properties\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"function-api\":\n    [{\"id\": \"function-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.1.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"fun-coercion\":\n    [{\"id\": \"fun-coercion\",\n      \"data\":\n      {\"title\": \"Coercing to Function Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Coercing to Function Types\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"format-repr\":\n    [{\"id\": \"format-repr\",\n      \"data\":\n      {\"title\": \"Formatted Output\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"format-render\":\n    [{\"id\": \"format-render\",\n      \"data\":\n      {\"title\": \"Rendering\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Rendering\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"format-join\":\n    [{\"id\": \"format-join\",\n      \"data\":\n      {\"title\": \"Sequences\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Sequences\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"format-indent\":\n    [{\"id\": \"format-indent\",\n      \"data\":\n      {\"title\": \"Indentation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Indentation\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"format-empty\":\n    [{\"id\": \"format-empty\",\n      \"data\":\n      {\"title\": \"Empty Documents\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Empty Documents\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"format-brackets\":\n    [{\"id\": \"format-brackets\",\n      \"data\":\n      {\"title\": \"Brackets and Parentheses\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Brackets and Parentheses\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"format-api\":\n    [{\"id\": \"format-api\",\n      \"data\":\n      {\"title\": \"Documents\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Documents\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"fixed-ints\":\n    [{\"id\": \"fixed-ints\",\n      \"data\":\n      {\"title\": \"Fixed-Precision Integers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Fixed-Precision Integers\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"fixed-int-runtime\":\n    [{\"id\": \"fixed-int-runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Fixed-Precision Integers\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"fixed-int-comparisons\":\n    [{\"id\": \"fixed-int-comparisons\",\n      \"data\":\n      {\"title\": \"Comparisons\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.4.4.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Fixed-Precision Integers\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Comparisons\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"fixed-int-arithmetic\":\n    [{\"id\": \"fixed-int-arithmetic\",\n      \"data\":\n      {\"title\": \"Arithmetic\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.4.4.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Fixed-Precision Integers\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Arithmetic\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"files\":\n    [{\"id\": \"files\",\n      \"data\":\n      {\"title\": \"Source Files and Modules\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"ffi-types\":\n    [{\"id\": \"ffi-types\",\n      \"data\":\n      {\"title\": \"Translating Types from Lean to C\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.4.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"},\n        {\"title\": \"Foreign Function Interface\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"The Lean ABI\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Translating Types from Lean to C\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"ffi-initialization\":\n    [{\"id\": \"ffi-initialization\",\n      \"data\":\n      {\"title\": \"Initialization\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"},\n        {\"title\": \"Foreign Function Interface\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Initialization\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"ffi-borrowing\":\n    [{\"id\": \"ffi-borrowing\",\n      \"data\":\n      {\"title\": \"Borrowing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.4.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"},\n        {\"title\": \"Foreign Function Interface\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"The Lean ABI\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Borrowing\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"ffi\":\n    [{\"id\": \"ffi\",\n      \"data\":\n      {\"title\": \"Foreign Function Interface\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"},\n        {\"title\": \"Foreign Function Interface\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"exception-monads\":\n    [{\"id\": \"exception-monads\",\n      \"data\":\n      {\"title\": \"Exceptions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.5.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Varieties of Monads\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Exceptions\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"example-inductive-types\":\n    [{\"id\": \"example-inductive-types\",\n      \"data\":\n      {\"title\": \"Example Inductive Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Type Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Example Inductive Types\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"example-boxes\":\n    [{\"id\": \"example-boxes\",\n      \"data\":\n      {\"title\": \"Examples\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Typographical Conventions\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Examples\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"equivalence-relations\":\n    [{\"id\": \"equivalence-relations\",\n      \"data\":\n      {\"title\": \"Equivalence Relations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.5.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Quotients\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Equivalence Relations\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"empty\":\n    [{\"id\": \"empty\",\n      \"data\":\n      {\"title\": \"The Empty Type\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"The Empty Type\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"elan-toolchain-versions\":\n    [{\"id\": \"elan-toolchain-versions\",\n      \"data\":\n      {\"title\": \"Selecting Toolchains\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Selecting Toolchains\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-toolchain-config\":\n    [{\"id\": \"elan-toolchain-config\",\n      \"data\":\n      {\"title\": \"Determining the Current Toolchain\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Selecting Toolchains\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Determining the Current Toolchain\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-toolchain\":\n    [{\"id\": \"elan-toolchain\",\n      \"data\":\n      {\"title\": \"Managing Installed Toolchains\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Managing Installed Toolchains\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-show\":\n    [{\"id\": \"elan-show\",\n      \"data\":\n      {\"title\": \"Querying Toolchains\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Querying Toolchains\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-self\":\n    [{\"id\": \"elan-self\",\n      \"data\":\n      {\"title\": \"Managing Elan\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Managing Elan\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-run\":\n    [{\"id\": \"elan-run\",\n      \"data\":\n      {\"title\": \"Running Tools and Commands\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Running Tools and Commands\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-override\":\n    [{\"id\": \"elan-override\",\n      \"data\":\n      {\"title\": \"Managing Directory Overrides\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Managing Directory Overrides\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-dir\":\n    [{\"id\": \"elan-dir\",\n      \"data\":\n      {\"title\": \"Toolchain Locations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Toolchain Locations\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-default\":\n    [{\"id\": \"elan-default\",\n      \"data\":\n      {\"title\": \"Setting the Default Toolchain\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Setting the Default Toolchain\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-cli\":\n    [{\"id\": \"elan-cli\",\n      \"data\":\n      {\"title\": \"Command-Line Interface\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan-channels\":\n    [{\"id\": \"elan-channels\",\n      \"data\":\n      {\"title\": \"Toolchain Identifiers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Selecting Toolchains\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Toolchain Identifiers\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elan\":\n    [{\"id\": \"elan\",\n      \"data\":\n      {\"title\": \"Managing Toolchains with Elan\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Managing Toolchains with Elan\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"elaborators\":\n    [{\"id\": \"elaborators\",\n      \"data\":\n      {\"title\": \"Elaborators\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Elaborators\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"elaboration-results\":\n    [{\"id\": \"elaboration-results\",\n      \"data\":\n      {\"title\": \"Elaboration Results\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Elaboration and Compilation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Elaboration Results\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"elab-as-course-of-values\":\n    [{\"id\": \"elab-as-course-of-values\",\n      \"data\":\n      {\"title\": \"Elaboration Using Course-of-Values Recursion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.6.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Recursive Definitions\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Structural Recursion\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Elaboration Using Course-of-Values Recursion\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"early-return\":\n    [{\"id\": \"early-return\",\n      \"data\":\n      {\"title\": \"Early Return\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.3.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"do -Notation\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Early Return\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"e-matching-patterns\":\n    [{\"id\": \"e-matching-patterns\",\n      \"data\":\n      {\"title\": \"Patterns\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"E‑matching\", \"shortTitle\": null, \"number\": \"6\"},\n        {\"title\": \"Patterns\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"e-matching\":\n    [{\"id\": \"e-matching\",\n      \"data\":\n      {\"title\": \"E‑matching\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"E‑matching\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"do-notation\":\n    [{\"id\": \"do-notation\",\n      \"data\":\n      {\"title\": \"do -Notation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"do -Notation\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"do-control-structures\":\n    [{\"id\": \"do-control-structures\",\n      \"data\":\n      {\"title\": \"Control Structures\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.3.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"do -Notation\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"deriving-instances\":\n    [{\"id\": \"deriving-instances\",\n      \"data\":\n      {\"title\": \"Deriving Instances\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Deriving Instances\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"deriving-handlers\":\n    [{\"id\": \"deriving-handlers\",\n      \"data\":\n      {\"title\": \"Deriving Handlers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Deriving Instances\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Deriving Handlers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"dependency-licenses\":\n    [{\"id\": \"dependency-licenses\",\n      \"data\":\n      {\"title\": \"Open-Source Licenses\",\n       \"shortTitle\": null,\n       \"sectionNum\": null,\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Open-Source Licenses\",\n         \"shortTitle\": null,\n         \"number\": null}]},\n      \"address\": \"/Introduction/\"}],\n    \"delaborators\":\n    [{\"id\": \"delaborators\",\n      \"data\":\n      {\"title\": \"Delaborators\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.7.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Extending Lean's Output\",\n         \"shortTitle\": null,\n         \"number\": \"7\"},\n        {\"title\": \"Delaborators\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"definitions\":\n    [{\"id\": \"definitions\",\n      \"data\":\n      {\"title\": \"Definitions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Definitions/\"}],\n    \"defining-macros\":\n    [{\"id\": \"defining-macros\",\n      \"data\":\n      {\"title\": \"Defining Macros\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Macros\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Defining Macros\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"default-instances\":\n    [{\"id\": \"default-instances\",\n      \"data\":\n      {\"title\": \"Default Instances\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Declarations\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Default Instances\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"default-instance-synth\":\n    [{\"id\": \"default-instance-synth\",\n      \"data\":\n      {\"title\": \"Default Instances\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.3.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Synthesis\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Default Instances\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"declaration-modifiers\":\n    [{\"id\": \"declaration-modifiers\",\n      \"data\":\n      {\"title\": \"Modifiers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Modifiers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"decidable-propositions\":\n    [{\"id\": \"decidable-propositions\",\n      \"data\":\n      {\"title\": \"Decidability\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Basic Classes\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Decidability\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"cutsat-qlia\":\n    [{\"id\": \"cutsat-qlia\",\n      \"data\":\n      {\"title\": \"Rational Solutions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.7.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Linear Integer Arithmetic\",\n         \"shortTitle\": null,\n         \"number\": \"7\"},\n        {\"title\": \"Rational Solutions\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"cutsat-mbtc\":\n    [{\"id\": \"cutsat-mbtc\",\n      \"data\":\n      {\"title\": \"Propagating Information\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.7.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Linear Integer Arithmetic\",\n         \"shortTitle\": null,\n         \"number\": \"7\"},\n        {\"title\": \"Propagating Information\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"cutsat-ToInt\":\n    [{\"id\": \"cutsat-ToInt\",\n      \"data\":\n      {\"title\": \"Other Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.7.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Linear Integer Arithmetic\",\n         \"shortTitle\": null,\n         \"number\": \"7\"},\n        {\"title\": \"Other Types\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"cutsat\":\n    [{\"id\": \"cutsat\",\n      \"data\":\n      {\"title\": \"Linear Integer Arithmetic\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Linear Integer Arithmetic\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"custom-tactics\":\n    [{\"id\": \"custom-tactics\",\n      \"data\":\n      {\"title\": \"Custom Tactics\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Custom Tactics\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Tactic-Proofs/Custom-Tactics/\"}],\n    \"currying\":\n    [{\"id\": \"currying\",\n      \"data\":\n      {\"title\": \"Currying\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Functions\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Currying\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"conv-simp\":\n    [{\"id\": \"conv-simp\",\n      \"data\":\n      {\"title\": \"Simplification\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Changing the Goal\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Simplification\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-rw\":\n    [{\"id\": \"conv-rw\",\n      \"data\":\n      {\"title\": \"Rewriting\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.4.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Changing the Goal\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Rewriting\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-reduction\":\n    [{\"id\": \"conv-reduction\",\n      \"data\":\n      {\"title\": \"Reduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Changing the Goal\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Reduction\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-other\":\n    [{\"id\": \"conv-other\",\n      \"data\":\n      {\"title\": \"Other\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Other\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-nested\":\n    [{\"id\": \"conv-nested\",\n      \"data\":\n      {\"title\": \"Nested Tactics\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Nested Tactics\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-nav\":\n    [{\"id\": \"conv-nav\",\n      \"data\":\n      {\"title\": \"Navigation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Navigation\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-goals\":\n    [{\"id\": \"conv-goals\",\n      \"data\":\n      {\"title\": \"Goal Selection\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Goal Selection\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-debug\":\n    [{\"id\": \"conv-debug\",\n      \"data\":\n      {\"title\": \"Debugging Utilities\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Debugging Utilities\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-control\":\n    [{\"id\": \"conv-control\",\n      \"data\":\n      {\"title\": \"Control Structures\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Control Structures\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv-change\":\n    [{\"id\": \"conv-change\",\n      \"data\":\n      {\"title\": \"Changing the Goal\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"Changing the Goal\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"conv\":\n    [{\"id\": \"conv\",\n      \"data\":\n      {\"title\": \"Targeted Rewriting with  conv\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Targeted Rewriting with  conv\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"congruence-closure\":\n    [{\"id\": \"congruence-closure\",\n      \"data\":\n      {\"title\": \"Congruence Closure\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Congruence Closure\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/The--grind--tactic/Congruence-Closure/\"}],\n    \"concurrency\":\n    [{\"id\": \"concurrency\",\n      \"data\":\n      {\"title\": \"Tasks and Threads\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"15.11.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"IO\", \"shortTitle\": null, \"number\": \"15\"},\n        {\"title\": \"Tasks and Threads\", \"shortTitle\": null, \"number\": \"11\"}]},\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"comments\":\n    [{\"id\": \"comments\",\n      \"data\":\n      {\"title\": \"Comments\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Concrete Syntax\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Comments\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"commands\":\n    [{\"id\": \"commands\",\n      \"data\":\n      {\"title\": \"Commands\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.3.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Structure\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Commands\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"coercions\":\n    [{\"id\": \"coercions\",\n      \"data\":\n      {\"title\": \"Coercions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"}]},\n      \"address\": \"/Coercions/\"}],\n    \"coercion-unfold-impl\":\n    [{\"id\": \"coercion-unfold-impl\",\n      \"data\":\n      {\"title\": \"Unfolding Coercions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.5.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Implementation Details\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Unfolding Coercions\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"coercion-insertion\":\n    [{\"id\": \"coercion-insertion\",\n      \"data\":\n      {\"title\": \"Coercion Insertion\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Coercion Insertion\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"coercion-impl-details\":\n    [{\"id\": \"coercion-impl-details\",\n      \"data\":\n      {\"title\": \"Implementation Details\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Implementation Details\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"coercion-impl\":\n    [{\"id\": \"coercion-impl\",\n      \"data\":\n      {\"title\": \"Implementing Coercions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Coercing Between Types\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Implementing Coercions\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"coercion-chain-impl\":\n    [{\"id\": \"coercion-chain-impl\",\n      \"data\":\n      {\"title\": \"Coercion Chaining\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"12.5.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"12\"},\n        {\"title\": \"Implementation Details\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Coercion Chaining\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"code-samples\":\n    [{\"id\": \"code-samples\",\n      \"data\":\n      {\"title\": \"Lean Code\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"1.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Introduction\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Typographical Conventions\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Lean Code\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Introduction/\"}],\n    \"code-distribution\":\n    [{\"id\": \"code-distribution\",\n      \"data\":\n      {\"title\": \"Packages, Libraries, and Targets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"5.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Source Files and Modules\",\n         \"shortTitle\": null,\n         \"number\": \"5\"},\n        {\"title\": \"Packages, Libraries, and Targets\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"closest-do-block\":\n    [{\"id\": \"closest-do-block\",\n      \"data\":\n      {\"title\": \"Identifying  do  Blocks\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"14.3.2.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Functors, Monads and  do -Notation\",\n         \"shortTitle\": null,\n         \"number\": \"14\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"do -Notation\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Identifying  do  Blocks\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"class-output-parameters\":\n    [{\"id\": \"class-output-parameters\",\n      \"data\":\n      {\"title\": \"Output Parameters\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.3.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Synthesis\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Output Parameters\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"class-inductive-instances\":\n    [{\"id\": \"class-inductive-instances\",\n      \"data\":\n      {\"title\": \"Instances of  class inductive s\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Instance Declarations\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Instances of  class inductive s\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"class-abbrev\":\n    [{\"id\": \"class-abbrev\",\n      \"data\":\n      {\"title\": \"Class Abbreviations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.1.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Class Declarations\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Class Abbreviations\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"class inductive\":\n    [{\"id\": \"class-inductive\",\n      \"data\":\n      {\"title\": \"Sum Types as Classes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.1.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Class Declarations\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Sum Types as Classes\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"class\":\n    [{\"id\": \"class\",\n      \"data\":\n      {\"title\": \"Class Declarations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Class Declarations\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"char-syntax\":\n    [{\"id\": \"char-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.7.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Characters\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"char-runtime\":\n    [{\"id\": \"char-runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.7.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Characters\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"char-model\":\n    [{\"id\": \"char-model\",\n      \"data\":\n      {\"title\": \"Logical Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.7.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Characters\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"char-api-classes\":\n    [{\"id\": \"char-api-classes\",\n      \"data\":\n      {\"title\": \"Character Classes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.7.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Characters\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Character Classes\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"char-api\":\n    [{\"id\": \"char-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.7.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Characters\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"by\":\n    [{\"id\": \"by\",\n      \"data\":\n      {\"title\": \"Running Tactics\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Running Tactics\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Tactic-Proofs/Running-Tactics/\"}],\n    \"build-tools-and-distribution\":\n    [{\"id\": \"build-tools-and-distribution\",\n      \"data\":\n      {\"title\": \"Build Tools and Distribution\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/\"}],\n    \"bracketed-parameter-syntax\":\n    [{\"id\": \"bracketed-parameter-syntax\",\n      \"data\":\n      {\"title\": \"Bracketed Parameter Bindings\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.2.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Headers and Signatures\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Bracketed Parameter Bindings\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"boxing\":\n    [{\"id\": \"boxing\",\n      \"data\":\n      {\"title\": \"Boxing\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"23.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Run-Time Code\", \"shortTitle\": null, \"number\": \"23\"},\n        {\"title\": \"Boxing\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Run-Time-Code/Boxing/\"}],\n    \"bound-variable-name-hints\":\n    [{\"id\": \"bound-variable-name-hints\",\n      \"data\":\n      {\"title\": \"Naming Bound Variables\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"13.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Tactic Proofs\", \"shortTitle\": null, \"number\": \"13\"},\n        {\"title\": \"Naming Bound Variables\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/Tactic-Proofs/Naming-Bound-Variables/\"}],\n    \"basic-types\":\n    [{\"id\": \"basic-types\",\n      \"data\":\n      {\"title\": \"Basic Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"}]},\n      \"address\": \"/Basic-Types/\"}],\n    \"basic-props\":\n    [{\"id\": \"basic-props\",\n      \"data\":\n      {\"title\": \"Basic Propositions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"19.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Propositions\", \"shortTitle\": null, \"number\": \"19\"}]},\n      \"address\": \"/Basic-Propositions/\"}],\n    \"basic-classes\":\n    [{\"id\": \"basic-classes\",\n      \"data\":\n      {\"title\": \"Basic Classes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"11.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Type Classes\", \"shortTitle\": null, \"number\": \"11\"},\n        {\"title\": \"Basic Classes\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"axioms\":\n    [{\"id\": \"axioms\",\n      \"data\":\n      {\"title\": \"Axioms\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Axioms\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Axioms/\"}],\n    \"axiom-reduction\":\n    [{\"id\": \"axiom-reduction\",\n      \"data\":\n      {\"title\": \"Reduction\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"8.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Axioms\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Reduction\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Axioms/\"}],\n    \"axiom-declarations\":\n    [{\"id\": \"axiom-declarations\",\n      \"data\":\n      {\"title\": \"Axiom Declarations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"8.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Axioms\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Axiom Declarations\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Axioms/\"}],\n    \"axiom-consistency\":\n    [{\"id\": \"axiom-consistency\",\n      \"data\":\n      {\"title\": \"Consistency\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"8.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Axioms\", \"shortTitle\": null, \"number\": \"8\"},\n        {\"title\": \"Consistency\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Axioms/\"}],\n    \"automatic-toolchain-updates\":\n    [{\"id\": \"automatic-toolchain-updates\",\n      \"data\":\n      {\"title\": \"Automatic Toolchain Updates\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"24.1.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Build Tools and Distribution\",\n         \"shortTitle\": null,\n         \"number\": \"24\"},\n        {\"title\": \"Lake\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Command-Line Interface\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Automatic Toolchain Updates\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"automatic-implicit-parameters\":\n    [{\"id\": \"automatic-implicit-parameters\",\n      \"data\":\n      {\"title\": \"Automatic Implicit Parameters\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"7.2.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Definitions\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Headers and Signatures\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Automatic Implicit Parameters\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"attributes\":\n    [{\"id\": \"attributes\",\n      \"data\":\n      {\"title\": \"Attributes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Attributes\", \"shortTitle\": null, \"number\": \"9\"}]},\n      \"address\": \"/Attributes/\"}],\n    \"array-syntax\":\n    [{\"id\": \"array-syntax\",\n      \"data\":\n      {\"title\": \"Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Syntax\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"array-runtime\":\n    [{\"id\": \"array-runtime\",\n      \"data\":\n      {\"title\": \"Run-Time Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"array-performance\":\n    [{\"id\": \"array-performance\",\n      \"data\":\n      {\"title\": \"Performance Notes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.2.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"Run-Time Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"},\n        {\"title\": \"Performance Notes\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"array-ffi\":\n    [{\"id\": \"array-ffi\",\n      \"data\":\n      {\"title\": \"FFI\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"FFI\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"array-api\":\n    [{\"id\": \"array-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"anonymous-constructor-syntax\":\n    [{\"id\": \"anonymous-constructor-syntax\",\n      \"data\":\n      {\"title\": \"Anonymous Constructor Syntax\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"4.4.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The Type System\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Types\", \"shortTitle\": null, \"number\": \"4\"},\n        {\"title\": \"Inductive Type Declarations\",\n         \"shortTitle\": null,\n         \"number\": \"1\"},\n        {\"title\": \"Anonymous Constructor Syntax\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Unexpanders\":\n    [{\"id\": \"Unexpanders\",\n      \"data\":\n      {\"title\": \"Unexpanders\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"22.7.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Notations and Macros\", \"shortTitle\": null, \"number\": \"22\"},\n        {\"title\": \"Extending Lean's Output\",\n         \"shortTitle\": null,\n         \"number\": \"7\"},\n        {\"title\": \"Unexpanders\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"UIP\":\n    [{\"id\": \"UIP\",\n      \"data\":\n      {\"title\": \"Uniqueness of Equality Proofs\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"19.4.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Propositions\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Propositional Equality\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Uniqueness of Equality Proofs\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"TreeSet\":\n    [{\"id\": \"TreeSet\",\n      \"data\":\n      {\"title\": \"Tree-Based Sets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.10.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Tree-Based Sets\", \"shortTitle\": null, \"number\": \"10\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"TreeMap\":\n    [{\"id\": \"TreeMap\",\n      \"data\":\n      {\"title\": \"Tree-Based Maps\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Tree-Based Maps\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Thunk-runtime\":\n    [{\"id\": \"Thunk-runtime\",\n      \"data\":\n      {\"title\": \"Runtime Representation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.21.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Lazy Computations\", \"shortTitle\": null, \"number\": \"21\"},\n        {\"title\": \"Runtime Representation\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk-model\":\n    [{\"id\": \"Thunk-model\",\n      \"data\":\n      {\"title\": \"Logical Model\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.21.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Lazy Computations\", \"shortTitle\": null, \"number\": \"21\"},\n        {\"title\": \"Logical Model\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk-coercions\":\n    [{\"id\": \"Thunk-coercions\",\n      \"data\":\n      {\"title\": \"Coercions\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.21.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Lazy Computations\", \"shortTitle\": null, \"number\": \"21\"},\n        {\"title\": \"Coercions\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk-api\":\n    [{\"id\": \"Thunk-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.21.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Lazy Computations\", \"shortTitle\": null, \"number\": \"21\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk\":\n    [{\"id\": \"Thunk\",\n      \"data\":\n      {\"title\": \"Lazy Computations\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.21.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Lazy Computations\", \"shortTitle\": null, \"number\": \"21\"}]},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Subtype\":\n    [{\"id\": \"Subtype\",\n      \"data\":\n      {\"title\": \"Subtypes\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.20.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Subtypes\", \"shortTitle\": null, \"number\": \"20\"}]},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"String\":\n    [{\"id\": \"String\",\n      \"data\":\n      {\"title\": \"Strings\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.8.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Strings\", \"shortTitle\": null, \"number\": \"8\"}]},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"ReprAtom\":\n    [{\"id\": \"ReprAtom\",\n      \"data\":\n      {\"title\": \"Atomic Types\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.2.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Repr\", \"shortTitle\": null, \"number\": \"2\"},\n        {\"title\": \"Atomic Types\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"NoNatZeroDivisors\":\n    [{\"id\": \"NoNatZeroDivisors\",\n      \"data\":\n      {\"title\": \"Natural Number Zero Divisors\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.8.1.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Algebraic Solver (Commutative Rings, Fields)\",\n         \"shortTitle\": null,\n         \"number\": \"8\"},\n        {\"title\": \"Solver Type Classes\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Natural Number Zero Divisors\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Nat\":\n    [{\"id\": \"Nat\",\n      \"data\":\n      {\"title\": \"Natural Numbers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Natural Numbers\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"List\":\n    [{\"id\": \"List\",\n      \"data\":\n      {\"title\": \"Linked Lists\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.15.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Linked Lists\", \"shortTitle\": null, \"number\": \"15\"}]},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"Int\":\n    [{\"id\": \"Int\",\n      \"data\":\n      {\"title\": \"Integers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Integers\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"HashSet\":\n    [{\"id\": \"HashSet\",\n      \"data\":\n      {\"title\": \"Hash Sets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Hash Sets\", \"shortTitle\": null, \"number\": \"6\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"HashMap\":\n    [{\"id\": \"HashMap\",\n      \"data\":\n      {\"title\": \"Hash Maps\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Hash Maps\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"HEq\":\n    [{\"id\": \"HEq\",\n      \"data\":\n      {\"title\": \"Heterogeneous Equality\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"19.4.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Propositions\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Propositional Equality\",\n         \"shortTitle\": null,\n         \"number\": \"4\"},\n        {\"title\": \"Heterogeneous Equality\",\n         \"shortTitle\": null,\n         \"number\": \"2\"}]},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Format\":\n    [{\"id\": \"Format\",\n      \"data\":\n      {\"title\": \"Format\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"3.7.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Interacting with Lean\", \"shortTitle\": null, \"number\": \"3\"},\n        {\"title\": \"Formatted Output\", \"shortTitle\": null, \"number\": \"7\"},\n        {\"title\": \"Format\", \"shortTitle\": null, \"number\": \"1\"}]},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Float-api\":\n    [{\"id\": \"Float-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.6.2.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Floating-Point Numbers\",\n         \"shortTitle\": null,\n         \"number\": \"6\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"2\"}]},\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float\":\n    [{\"id\": \"Float\",\n      \"data\":\n      {\"title\": \"Floating-Point Numbers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.6.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Floating-Point Numbers\",\n         \"shortTitle\": null,\n         \"number\": \"6\"}]},\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Fin\":\n    [{\"id\": \"Fin\",\n      \"data\":\n      {\"title\": \"Finite Natural Numbers\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Finite Natural Numbers\",\n         \"shortTitle\": null,\n         \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"ExtHashSet\":\n    [{\"id\": \"ExtHashSet\",\n      \"data\":\n      {\"title\": \"Extensional Hash Sets\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Extensional Hash Sets\",\n         \"shortTitle\": null,\n         \"number\": \"7\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"ExtHashMap\":\n    [{\"id\": \"ExtHashMap\",\n      \"data\":\n      {\"title\": \"Extensional Hash Maps\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Extensional Hash Maps\",\n         \"shortTitle\": null,\n         \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"ExtDHashMap\":\n    [{\"id\": \"ExtDHashMap\",\n      \"data\":\n      {\"title\": \"Extensional Dependent Hash Maps\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Extensional Dependent Hash Maps\",\n         \"shortTitle\": null,\n         \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"DTreeMap\":\n    [{\"id\": \"DTreeMap\",\n      \"data\":\n      {\"title\": \"Dependent Tree-Based Maps\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.9.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Dependent Tree-Based Maps\",\n         \"shortTitle\": null,\n         \"number\": \"9\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"DHashMap\":\n    [{\"id\": \"DHashMap\",\n      \"data\":\n      {\"title\": \"Dependent Hash Maps\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.19.3.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Maps and Sets\", \"shortTitle\": null, \"number\": \"19\"},\n        {\"title\": \"Dependent Hash Maps\", \"shortTitle\": null, \"number\": \"3\"}]},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Char\":\n    [{\"id\": \"Char\",\n      \"data\":\n      {\"title\": \"Characters\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.7.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Characters\", \"shortTitle\": null, \"number\": \"7\"}]},\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"ByteArray\":\n    [{\"id\": \"ByteArray\",\n      \"data\":\n      {\"title\": \"Byte Arrays\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.17.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Byte Arrays\", \"shortTitle\": null, \"number\": \"17\"}]},\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"BitVec-automation\":\n    [{\"id\": \"BitVec-automation\",\n      \"data\":\n      {\"title\": \"Automation\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.5.4.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Bitvectors\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"Automation\", \"shortTitle\": null, \"number\": \"4\"}]},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec-api\":\n    [{\"id\": \"BitVec-api\",\n      \"data\":\n      {\"title\": \"API Reference\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.5.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Bitvectors\", \"shortTitle\": null, \"number\": \"5\"},\n        {\"title\": \"API Reference\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec\":\n    [{\"id\": \"BitVec\",\n      \"data\":\n      {\"title\": \"Bitvectors\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.5.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Bitvectors\", \"shortTitle\": null, \"number\": \"5\"}]},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"Array\":\n    [{\"id\": \"Array\",\n      \"data\":\n      {\"title\": \"Arrays\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"20.16.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"Basic Types\", \"shortTitle\": null, \"number\": \"20\"},\n        {\"title\": \"Arrays\", \"shortTitle\": null, \"number\": \"16\"}]},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"AddRightCancel\":\n    [{\"id\": \"AddRightCancel\",\n      \"data\":\n      {\"title\": \"Right-Cancellative Addition\",\n       \"shortTitle\": null,\n       \"sectionNum\": \"17.8.1.3.1.\",\n       \"context\":\n       [{\"title\": \"The Lean Language Reference\",\n         \"shortTitle\": null,\n         \"number\": null},\n        {\"title\": \"The  grind  tactic\", \"shortTitle\": null, \"number\": \"17\"},\n        {\"title\": \"Algebraic Solver (Commutative Rings, Fields)\",\n         \"shortTitle\": null,\n         \"number\": \"8\"},\n        {\"title\": \"Solver Type Classes\", \"shortTitle\": null, \"number\": \"1\"},\n        {\"title\": \"Natural Number Zero Divisors\",\n         \"shortTitle\": null,\n         \"number\": \"3\"},\n        {\"title\": \"Right-Cancellative Addition\",\n         \"shortTitle\": null,\n         \"number\": \"1\"}]},\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}]}},\n  \"Verso.Genre.Manual.example\":\n  {\"title\": \"Verso.Genre.Manual.example\",\n   \"description\": \"Verso.Genre.Manual.example\",\n   \"contents\":\n   {\"α (in Mutual Block Scope and Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"α\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]},\n       \"/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"α\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"α\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]},\n       \"/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"α\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"ys (in Lazy Lists)\":\n    [{\"id\": \"ys-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#ys-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"ys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"y.y (in Longer Identifier Prefixes Take Precedence)\":\n    [{\"id\": \"y___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#y___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\":\n       {\"display\": \"y.y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Identifier Prefixes Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"y (in Sort Coercions as Ordinary Coercions)\":\n    [{\"id\": \"y-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#y-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions as Ordinary Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"y (in Longer Identifier Prefixes Take Precedence)\":\n    [{\"id\": \"y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Identifier Prefixes Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"xs (in Lazy Lists)\":\n    [{\"id\": \"xs-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#xs-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"xs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"x (in Sort Coercions as Ordinary Coercions)\":\n    [{\"id\": \"x-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#x-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions as Ordinary Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"x (in Private Field Values)\":\n    [{\"id\": \"x-_LPAR_in-Private-Field-Values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#x-_LPAR_in-Private-Field-Values_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Field Values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"x (in Opening Scoped Declarations)\":\n    [{\"id\": \"x-_LPAR_in-Opening-Scoped-Declarations_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#x-_LPAR_in-Opening-Scoped-Declarations_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Scoped Declarations\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"x (in Local Names Take Precedence)\":\n    [{\"id\": \"x-_LPAR_in-Local-Names-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#x-_LPAR_in-Local-Names-Take-Precedence_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Local Names Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"wednesday (in Implementing Coercions)\":\n    [{\"id\": \"wednesday-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#wednesday-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"wednesday\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"values (in Monadic Collection Operations)\":\n    [{\"id\": \"values-_LPAR_in-Monadic-Collection-Operations_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/API-Reference/#values-_LPAR_in-Monadic-Collection-Operations_RPAR_\":\n       {\"display\": \"values\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"API Reference\",\n         \"Monadic Collection Operations\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"unit_not_nat (in Inconsistencies From Axioms)\":\n    [{\"id\": \"unit_not_nat-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\",\n      \"data\":\n      {\"/Axioms/#unit_not_nat-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\":\n       {\"display\": \"unit_not_nat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Consistency\",\n         \"Inconsistencies From Axioms\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"unexpandSolo (in Custom Unit Type)\":\n    [{\"id\": \"unexpandSolo-_LPAR_in-Custom-Unit-Type_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#unexpandSolo-_LPAR_in-Custom-Unit-Type_RPAR_\":\n       {\"display\": \"unexpandSolo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Custom Unit Type\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"unexpandListCursor (in Unexpansion and Arguments)\":\n    [{\"id\": \"unexpandListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#unexpandListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"unexpandListCursor\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"unFin_length_eq_length (in Taking Advantage of Run-Time Representations)\":\n    [{\"id\":\n      \"unFin_length_eq_length-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#unFin_length_eq_length-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_\":\n       {\"display\": \"unFin_length_eq_length\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Taking Advantage of Run-Time Representations\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unFinImpl (in Taking Advantage of Run-Time Representations)\":\n    [{\"id\":\n      \"unFinImpl-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#unFinImpl-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_\":\n       {\"display\": \"unFinImpl\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Taking Advantage of Run-Time Representations\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unFin (in Taking Advantage of Run-Time Representations)\":\n    [{\"id\":\n      \"unFin-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#unFin-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_\":\n       {\"display\": \"unFin\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Taking Advantage of Run-Time Representations\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"two_eq_five (in Inconsistencies From Axioms)\":\n    [{\"id\": \"two_eq_five-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\",\n      \"data\":\n      {\"/Axioms/#two_eq_five-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\":\n       {\"display\": \"two_eq_five\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Consistency\",\n         \"Inconsistencies From Axioms\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"twoHundredThirteen (in Defining Coercions: Decimal Numbers)\":\n    [{\"id\":\n      \"twoHundredThirteen-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\",\n      \"data\":\n      {\"/Coercions/#twoHundredThirteen-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\":\n       {\"display\": \"twoHundredThirteen\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Defining Coercions: Decimal Numbers\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"two'' (in Updating arrays)\":\n    [{\"id\": \"two______-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#two______-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"two''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"two' (in Updating arrays)\":\n    [{\"id\": \"two___-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#two___-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"two'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"two (in Updating arrays)\":\n    [{\"id\": \"two-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#two-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"two (in Proofs in Public)\":\n    [{\"id\": \"two-_LPAR_in-Proofs-in-Public_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"two-_LPAR_in-Proofs-in-Public_RPAR_-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"two-_LPAR_in-Proofs-in-Public_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#two-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"two (in No structure subtyping)\":\n    [{\"id\": \"two-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#two-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"two (in Dependent Function Types)\":\n    [{\"id\": \"two-_LPAR_in-Dependent-Function-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Functions/#two-_LPAR_in-Dependent-Function-Types_RPAR_\":\n       {\"display\": \"two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Functions\",\n         \"Dependent Function Types\"]}},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"twice (in Duplicate Evaluation in Coercions)\":\n    [{\"id\": \"twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\":\n       {\"display\": \"twice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Duplicate Evaluation in Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"truth_functional_imp (in Truth-Functional Implication)\":\n    [{\"id\":\n      \"truth_functional_imp-_LPAR_in-Truth-Functional-Implication_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Logical-Connectives/#truth_functional_imp-_LPAR_in-Truth-Functional-Implication_RPAR_\":\n       {\"display\": \"truth_functional_imp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Logical Connectives\",\n         \"Truth-Functional Implication\"]}},\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"trig_identity\":\n    [{\"id\": \"trig_identity\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#trig_identity\":\n       {\"display\": \"trig_identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"Integrating  grind 's Features\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"tomorrow (in Controlling Evaluation with Coercions)\":\n    [{\"id\": \"tomorrow-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#tomorrow-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_\":\n       {\"display\": \"tomorrow\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Controlling Evaluation with Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"toPalindrome (in Cross-Phase Code Re-Use)\":\n    [{\"id\": \"toPalindrome-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#toPalindrome-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\":\n       {\"display\": \"toPalindrome\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"toInt_sound (in Built-In Integers as Quotients)\":\n    [{\"id\": \"toInt_sound-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#toInt_sound-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_\":\n       {\"display\": \"toInt_sound\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Built-In Integers as Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"toInt (in Built-In Integers as Quotients)\":\n    [{\"id\": \"toInt-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#toInt-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_\":\n       {\"display\": \"toInt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Built-In Integers as Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"toAcademicWork (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"toAcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#toAcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"toAcademicWork\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"thirdOfFive (in Equational Lemmas)\":\n    [{\"id\": \"thirdOfFive-_LPAR_in-Equational-Lemmas_RPAR_\",\n      \"data\":\n      {\"/Elaboration-and-Compilation/#thirdOfFive-_LPAR_in-Equational-Lemmas_RPAR_\":\n       {\"display\": \"thirdOfFive\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Elaboration and Compilation\",\n         \"Elaboration Results\",\n         \"Equational Lemmas\"]}},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"thirdChar (in Panic)\":\n    [{\"id\": \"thirdChar-_LPAR_in-Panic_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Functions/#thirdChar-_LPAR_in-Panic_RPAR_\":\n       {\"display\": \"thirdChar\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Functions\",\n         \"Totality and Termination\",\n         \"Panic\"]}},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"the (in Filling Holes with Unification)\":\n    [{\"id\": \"the-_LPAR_in-Filling-Holes-with-Unification_RPAR_\",\n      \"data\":\n      {\"/Terms/Holes/#the-_LPAR_in-Filling-Holes-with-Unification_RPAR_\":\n       {\"display\": \"the\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Holes\",\n         \"Filling Holes with Unification\"]}},\n      \"address\": \"/Terms/Holes/\"}],\n    \"th (in Coercions)\":\n    [{\"id\": \"th-_LPAR_in-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/#th-_LPAR_in-Coercions_RPAR_\":\n       {\"display\": \"th\",\n        \"context\":\n        [\"The Lean Language Reference\", \"Coercions\", \"Coercions\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"test (in Universe polymorphism and definitional equality)\":\n    [{\"id\":\n      \"test-_LPAR_in-Universe-polymorphism-and-definitional-equality_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#test-_LPAR_in-Universe-polymorphism-and-definitional-equality_RPAR_\":\n       {\"display\": \"test\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe polymorphism and definitional equality\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"test (in Nested  do  and Branches)\":\n    [{\"id\": \"test-_LPAR_in-Nested--do--and-Branches_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#test-_LPAR_in-Nested--do--and-Branches_RPAR_\":\n       {\"display\": \"test\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"do -Notation\",\n         \"Identifying  do  Blocks\",\n         \"Nested  do  and Branches\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"termBalanced (in Parsing Matched Parentheses and Brackets)\":\n    [{\"id\":\n      \"termBalanced-_LPAR_in-Parsing-Matched-Parentheses-and-Brackets_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Defining-New-Syntax/#termBalanced-_LPAR_in-Parsing-Matched-Parentheses-and-Brackets_RPAR_\":\n       {\"display\": \"termBalanced\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Defining New Syntax\",\n         \"Syntax Rules\",\n         \"Parsing Matched Parentheses and Brackets\"]}},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"ten (in Sub-Array Syntax)\":\n    [{\"id\": \"ten-_LPAR_in-Sub-Array-Syntax_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Arrays/#ten-_LPAR_in-Sub-Array-Syntax_RPAR_\":\n       {\"display\": \"ten\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Arrays\",\n         \"Syntax\",\n         \"Sub-Array Syntax\"]}},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"tally_eq_add (in Reducibility and Tactics)\":\n    [{\"id\": \"tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"tally_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"tally (in Reducibility and Tactics)\":\n    [{\"id\": \"tally-_LPAR_in-Reducibility-and-Tactics_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#tally-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"tally\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"synack (in No Backtracking of Lexicographic Order)\":\n    [{\"id\": \"synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_-next\":\n       {\"display\": \"synack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Default Termination Proof Tactic\",\n         \"No Backtracking of Lexicographic Order\"]},\n       \"/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_\":\n       {\"display\": \"synack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Default Termination Proof Tactic\",\n         \"No Backtracking of Lexicographic Order\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_-next\":\n       {\"display\": \"synack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Default Termination Proof Tactic\",\n         \"No Backtracking of Lexicographic Order\"]},\n       \"/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_\":\n       {\"display\": \"synack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Default Termination Proof Tactic\",\n         \"No Backtracking of Lexicographic Order\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"sweetPotato (in Using  Ord  Instances for  LT  and  LE  Instances)\":\n    [{\"id\":\n      \"sweetPotato-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Basic-Classes/#sweetPotato-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\":\n       {\"display\": \"sweetPotato\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Basic Classes\",\n         \"Ordering\",\n         \"Using  Ord  Instances for  LT  and  LE  Instances\"]}},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"swap_swap_eq_id' (in The  @[grind ext]  Attribute)\":\n    [{\"id\":\n      \"swap_swap_eq_id___-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#swap_swap_eq_id___-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\":\n       {\"display\": \"swap_swap_eq_id'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ext]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"swap_swap_eq_id (in The  @[grind ext]  Attribute)\":\n    [{\"id\":\n      \"swap_swap_eq_id-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#swap_swap_eq_id-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\":\n       {\"display\": \"swap_swap_eq_id\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ext]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"swap_eq_swap' (in Printing Axioms)\":\n    [{\"id\": \"swap_eq_swap___-_LPAR_in-Printing-Axioms_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#swap_eq_swap___-_LPAR_in-Printing-Axioms_RPAR_\":\n       {\"display\": \"swap_eq_swap'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Querying the Context\",\n         \"Printing Axioms\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"swap' (in Printing Axioms)\":\n    [{\"id\": \"swap___-_LPAR_in-Printing-Axioms_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#swap___-_LPAR_in-Printing-Axioms_RPAR_\":\n       {\"display\": \"swap'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Querying the Context\",\n         \"Printing Axioms\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"swap (in Printing Axioms)\":\n    [{\"id\": \"swap-_LPAR_in-Printing-Axioms_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#swap-_LPAR_in-Printing-Axioms_RPAR_\":\n       {\"display\": \"swap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Querying the Context\",\n         \"Printing Axioms\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"sum_eq_add (in Reducibility and Tactics)\":\n    [{\"id\": \"sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\":\n       {\"display\": \"sum_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"sum_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next\":\n       {\"display\": \"sum_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]},\n       \"/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"sum_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"sumUntilFive (in Effect Ordering)\":\n    [{\"id\": \"sumUntilFive-_LPAR_in-Effect-Ordering_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#sumUntilFive-_LPAR_in-Effect-Ordering_RPAR_\":\n       {\"display\": \"sumUntilFive\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Varieties of Monads\",\n         \"Monad Type Classes\",\n         \"Effect Ordering\"]}},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"sumNonFives (in Effect Ordering)\":\n    [{\"id\": \"sumNonFives-_LPAR_in-Effect-Ordering_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#sumNonFives-_LPAR_in-Effect-Ordering_RPAR_\":\n       {\"display\": \"sumNonFives\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Varieties of Monads\",\n         \"Monad Type Classes\",\n         \"Effect Ordering\"]}},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"sum3 (in Named Arguments)\":\n    [{\"id\": \"sum3-_LPAR_in-Named-Arguments_RPAR_\",\n      \"data\":\n      {\"/Terms/Function-Application/#sum3-_LPAR_in-Named-Arguments_RPAR_\":\n       {\"display\": \"sum3\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Function Application\",\n         \"Named Arguments\"]}},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"sum (in Reducibility and Tactics)\":\n    [{\"id\": \"sum-_LPAR_in-Reducibility-and-Tactics_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#sum-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"sum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"succ_not_zero\":\n    [{\"id\": \"succ_not_zero\",\n      \"data\":\n      {\"/Basic-Types/Natural-Numbers/#succ_not_zero\":\n       {\"display\": \"succ_not_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Natural Numbers\",\n         \"Logical Model\",\n         \"Peano Axioms\"]}},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"succ_injective\":\n    [{\"id\": \"succ_injective\",\n      \"data\":\n      {\"/Basic-Types/Natural-Numbers/#succ_injective\":\n       {\"display\": \"succ_injective\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Natural Numbers\",\n         \"Logical Model\",\n         \"Peano Axioms\"]}},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"succ (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"succ-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#succ-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"sub' (in Controlling Coercion Insertion)\":\n    [{\"id\": \"sub___-_LPAR_in-Controlling-Coercion-Insertion_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#sub___-_LPAR_in-Controlling-Coercion-Insertion_RPAR_\":\n       {\"display\": \"sub'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Controlling Coercion Insertion\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"sub (in Controlling Coercion Insertion)\":\n    [{\"id\": \"sub-_LPAR_in-Controlling-Coercion-Insertion_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#sub-_LPAR_in-Controlling-Coercion-Insertion_RPAR_\":\n       {\"display\": \"sub\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Controlling Coercion Insertion\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"stringWriter (in Dependent Coercion to Functions)\":\n    [{\"id\": \"stringWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#stringWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\":\n       {\"display\": \"stringWriter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Dependent Coercion to Functions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"str2\":\n    [{\"id\": \"str2\",\n      \"data\":\n      {\"/Basic-Types/Strings/#str2\":\n       {\"display\": \"str2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Strings\",\n         \"Syntax\",\n         \"String Literals\"]}},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"str1\":\n    [{\"id\": \"str1\",\n      \"data\":\n      {\"/Basic-Types/Strings/#str1\":\n       {\"display\": \"str1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Strings\",\n         \"Syntax\",\n         \"String Literals\"]}},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"str (in Newline Characters in Strings)\":\n    [{\"id\": \"str-_LPAR_in-Newline-Characters-in-Strings_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#str-_LPAR_in-Newline-Characters-in-Strings_RPAR_\":\n       {\"display\": \"str\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Newline Characters in Strings\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"split'' (in Pattern Matching and Lists)\":\n    [{\"id\": \"split______-_LPAR_in-Pattern-Matching-and-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Linked-Lists/#split______-_LPAR_in-Pattern-Matching-and-Lists_RPAR_\":\n       {\"display\": \"split''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Linked Lists\",\n         \"Syntax\",\n         \"Pattern Matching and Lists\"]}},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"split' (in Pattern Matching and Lists)\":\n    [{\"id\": \"split___-_LPAR_in-Pattern-Matching-and-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Linked-Lists/#split___-_LPAR_in-Pattern-Matching-and-Lists_RPAR_\":\n       {\"display\": \"split'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Linked Lists\",\n         \"Syntax\",\n         \"Pattern Matching and Lists\"]}},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"split (in Pattern Matching and Lists)\":\n    [{\"id\": \"split-_LPAR_in-Pattern-Matching-and-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Linked-Lists/#split-_LPAR_in-Pattern-Matching-and-Lists_RPAR_\":\n       {\"display\": \"split\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Linked Lists\",\n         \"Syntax\",\n         \"Pattern Matching and Lists\"]}},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"sin\":\n    [{\"id\": \"sin\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#sin\":\n       {\"display\": \"sin\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"Integrating  grind 's Features\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"simple_equality (in Printing Axioms of Simple Definitions)\":\n    [{\"id\":\n      \"simple_equality-_LPAR_in-Printing-Axioms-of-Simple-Definitions_RPAR_\",\n      \"data\":\n      {\"/Axioms/#simple_equality-_LPAR_in-Printing-Axioms-of-Simple-Definitions_RPAR_\":\n       {\"display\": \"simple_equality\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Displaying Axiom Dependencies\",\n         \"Printing Axioms of Simple Definitions\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"select (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\":\n      \"select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\":\n      \"select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\":\n      \"select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"select\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"satisfyingIndices (in Iteration over Array Indices with  for)\":\n    [{\"id\":\n      \"satisfyingIndices-_LPAR_in-Iteration-over-Array-Indices-with--for_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#satisfyingIndices-_LPAR_in-Iteration-over-Array-Indices-with--for_RPAR_\":\n       {\"display\": \"satisfyingIndices\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"do -Notation\",\n         \"Iteration\",\n         \"Iteration over Array Indices with  for\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"s_eq (in Too Many Instances)\":\n    [{\"id\": \"s_eq-_LPAR_in-Too-Many-Instances_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#s_eq-_LPAR_in-Too-Many-Instances_RPAR_\":\n       {\"display\": \"s_eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Resource Limits\",\n         \"Too Many Instances\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"s2 (in Extensional Equality of Subtypes)\":\n    [{\"id\": \"s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"s2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Extensional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"s2 (in Definitional Equality of Subtypes)\":\n    [{\"id\": \"s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"s2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Definitional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"s1_eq_s2 (in Extensional Equality of Subtypes)\":\n    [{\"id\": \"s1_eq_s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#s1_eq_s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"s1_eq_s2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Extensional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"s1_eq_s2 (in Definitional Equality of Subtypes)\":\n    [{\"id\": \"s1_eq_s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#s1_eq_s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"s1_eq_s2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Definitional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"s1 (in Extensional Equality of Subtypes)\":\n    [{\"id\": \"s1-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#s1-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"s1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Extensional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"s1 (in Definitional Equality of Subtypes)\":\n    [{\"id\": \"s1-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#s1-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"s1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Definitional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"s (in Too Many Instances)\":\n    [{\"id\": \"s-_LPAR_in-Too-Many-Instances_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#s-_LPAR_in-Too-Many-Instances_RPAR_\":\n       {\"display\": \"s\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Resource Limits\",\n         \"Too Many Instances\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"runCountdown (in Redirecting Standard I/O to Strings)\":\n    [{\"id\":\n      \"runCountdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_\",\n      \"data\":\n      {\"/IO/Files___-File-Handles___-and-Streams/#runCountdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_\":\n       {\"display\": \"runCountdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Files, File Handles, and Streams\",\n         \"Standard I/O\",\n         \"Redirecting Standard I/O to Strings\"]}},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"reverse.helper (in Testing Return Values)\":\n    [{\"id\": \"reverse___helper-_LPAR_in-Testing-Return-Values_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#reverse___helper-_LPAR_in-Testing-Return-Values_RPAR_\":\n       {\"display\": \"helper\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Testing Output with  #guard_msgs\",\n         \"Testing Return Values\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"reverse (in Testing Return Values)\":\n    [{\"id\": \"reverse-_LPAR_in-Testing-Return-Values_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#reverse-_LPAR_in-Testing-Return-Values_RPAR_\":\n       {\"display\": \"reverse\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Testing Output with  #guard_msgs\",\n         \"Testing Return Values\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"rev_correct (in Missing  WPMonad  Instance)\":\n    [{\"id\": \"rev_correct-_LPAR_in-Missing--WPMonad--Instance_RPAR_-next\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#rev_correct-_LPAR_in-Missing--WPMonad--Instance_RPAR_-next\":\n       {\"display\": \"rev_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]},\n       \"/The--mvcgen--tactic/Predicate-Transformers/#rev_correct-_LPAR_in-Missing--WPMonad--Instance_RPAR_\":\n       {\"display\": \"rev_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"rev_correct-_LPAR_in-Missing--WPMonad--Instance_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#rev_correct-_LPAR_in-Missing--WPMonad--Instance_RPAR_-next\":\n       {\"display\": \"rev_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]},\n       \"/The--mvcgen--tactic/Predicate-Transformers/#rev_correct-_LPAR_in-Missing--WPMonad--Instance_RPAR_\":\n       {\"display\": \"rev_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"rev (in Missing  WPMonad  Instance)\":\n    [{\"id\": \"rev-_LPAR_in-Missing--WPMonad--Instance_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#rev-_LPAR_in-Missing--WPMonad--Instance_RPAR_\":\n       {\"display\": \"rev\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"repeatAccessControl (in Throwing and Catching Errors)\":\n    [{\"id\": \"repeatAccessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_\",\n      \"data\":\n      {\"/IO/Logical-Model/#repeatAccessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_\":\n       {\"display\": \"repeatAccessControl\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Logical Model\",\n         \"Errors and Error Handling in  IO\",\n         \"Throwing and Catching Errors\"]}},\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"rep (in The Macro Attribute)\":\n    [{\"id\": \"rep-_LPAR_in-The-Macro-Attribute_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#rep-_LPAR_in-The-Macro-Attribute_RPAR_\":\n       {\"display\": \"rep\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Defining Macros\",\n         \"The Macro Attribute\",\n         \"The Macro Attribute\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"removeSourceInfo (in Representing Syntax as Constructors)\":\n    [{\"id\":\n      \"removeSourceInfo-_LPAR_in-Representing-Syntax-as-Constructors_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Defining-New-Syntax/#removeSourceInfo-_LPAR_in-Representing-Syntax-as-Constructors_RPAR_\":\n       {\"display\": \"removeSourceInfo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Defining New Syntax\",\n         \"Inspecting Syntax\",\n         \"Representing Syntax as Constructors\"]}},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"reds (in Iterator State Types)\":\n    [{\"id\": \"reds-_LPAR_in-Iterator-State-Types_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#reds-_LPAR_in-Iterator-State-Types_RPAR_\":\n       {\"display\": \"reds\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Iterator State Types\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"q (in Forward Pattern Generation)\":\n    [{\"id\": \"q-_LPAR_in-Forward-Pattern-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#q-_LPAR_in-Forward-Pattern-Generation_RPAR_\":\n       {\"display\": \"q\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Forward Pattern Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"process' (in Reference Counts in IR)\":\n    [{\"id\": \"process___-_LPAR_in-Reference-Counts-in-IR_RPAR_\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#process___-_LPAR_in-Reference-Counts-in-IR_RPAR_\":\n       {\"display\": \"process'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Compiler IR\",\n         \"Reference Counts in IR\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"process (in Reference Counts in IR)\":\n    [{\"id\": \"process-_LPAR_in-Reference-Counts-in-IR_RPAR_\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Reference-Counts-in-IR_RPAR_\":\n       {\"display\": \"process\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Compiler IR\",\n         \"Reference Counts in IR\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"process (in Observing Uniqueness)\":\n    [{\"id\": \"process-_LPAR_in-Observing-Uniqueness_RPAR_\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_-next\":\n       {\"display\": \"process\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]},\n       \"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_\":\n       {\"display\": \"process\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"},\n     {\"id\": \"process-_LPAR_in-Observing-Uniqueness_RPAR_-next\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_-next\":\n       {\"display\": \"process\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]},\n       \"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_\":\n       {\"display\": \"process\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"printEven (in No structure subtyping)\":\n    [{\"id\": \"printEven-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#printEven-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"printEven\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"postalCodes (in Options as Safe Nullability)\":\n    [{\"id\": \"postalCodes-_LPAR_in-Options-as-Safe-Nullability_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Optional-Values/#postalCodes-_LPAR_in-Options-as-Safe-Nullability_RPAR_\":\n       {\"display\": \"postalCodes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Optional Values\",\n         \"Options as Safe Nullability\"]}},\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"pos0 (in Floating-Point Equality Is Not a Congruence)\":\n    [{\"id\": \"pos0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Floating-Point-Numbers/#pos0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_\":\n       {\"display\": \"pos0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Floating-Point Numbers\",\n         \"Floating-Point Equality Is Not a Congruence\"]}},\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"popcount_spec (in Popcount)\":\n    [{\"id\": \"popcount_spec-_LPAR_in-Popcount_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Bitvectors/#popcount_spec-_LPAR_in-Popcount_RPAR_\":\n       {\"display\": \"popcount_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Bitvectors\",\n         \"Automation\",\n         \"Popcount\"]}},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"popcount_correct (in Popcount)\":\n    [{\"id\": \"popcount_correct-_LPAR_in-Popcount_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Bitvectors/#popcount_correct-_LPAR_in-Popcount_RPAR_\":\n       {\"display\": \"popcount_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Bitvectors\",\n         \"Automation\",\n         \"Popcount\"]}},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"popcount (in Popcount)\":\n    [{\"id\": \"popcount-_LPAR_in-Popcount_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Bitvectors/#popcount-_LPAR_in-Popcount_RPAR_\":\n       {\"display\": \"popcount\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Bitvectors\",\n         \"Automation\",\n         \"Popcount\"]}},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"plus_eq_add (in Reducibility and Tactics)\":\n    [{\"id\": \"plus_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#plus_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"plus_eq_add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"plusTimes2 (in Class Abbreviations)\":\n    [{\"id\": \"plusTimes2-_LPAR_in-Class-Abbreviations_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#plusTimes2-_LPAR_in-Class-Abbreviations_RPAR_\":\n       {\"display\": \"plusTimes2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class Abbreviations\",\n         \"Class Abbreviations\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"plusTimes1 (in Class Abbreviations)\":\n    [{\"id\": \"plusTimes1-_LPAR_in-Class-Abbreviations_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#plusTimes1-_LPAR_in-Class-Abbreviations_RPAR_\":\n       {\"display\": \"plusTimes1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class Abbreviations\",\n         \"Class Abbreviations\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"plus (in Reducibility and Tactics)\":\n    [{\"id\": \"plus-_LPAR_in-Reducibility-and-Tactics_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#plus-_LPAR_in-Reducibility-and-Tactics_RPAR_\":\n       {\"display\": \"plus\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Tactics\",\n         \"Reducibility and Tactics\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"plus (in Coercing to Function Types)\":\n    [{\"id\": \"plus-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#plus-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"plus\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"perhapsFactorial (in Custom Operators in Lean's Output)\":\n    [{\"id\":\n      \"perhapsFactorial-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Custom-Operators/#perhapsFactorial-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_\":\n       {\"display\": \"perhapsFactorial\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Custom Operators\",\n         \"Custom Operators in Lean's Output\"]}},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"parenSeq (in Widths and Newlines)\":\n    [{\"id\": \"parenSeq-_LPAR_in-Widths-and-Newlines_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#parenSeq-_LPAR_in-Widths-and-Newlines_RPAR_\":\n       {\"display\": \"parenSeq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Widths and Newlines\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"parenSeq (in Grouping and Filling)\":\n    [{\"id\": \"parenSeq-_LPAR_in-Grouping-and-Filling_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#parenSeq-_LPAR_in-Grouping-and-Filling_RPAR_\":\n       {\"display\": \"parenSeq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Grouping and Filling\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"p_all (in Included and Omitted Section Variables)\":\n    [{\"id\":\n      \"p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]},\n       \"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]},\n       \"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"},\n     {\"id\": \"p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]},\n       \"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]},\n       \"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"},\n     {\"id\":\n      \"p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]},\n       \"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]},\n       \"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_\":\n       {\"display\": \"p_all\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Included and Omitted Section Variables\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"p (in Forward Pattern Generation)\":\n    [{\"id\": \"p-_LPAR_in-Forward-Pattern-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#p-_LPAR_in-Forward-Pattern-Generation_RPAR_\":\n       {\"display\": \"p\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Forward Pattern Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"oneTwoThree' (in Anonymous constructors)\":\n    [{\"id\": \"oneTwoThree___-_LPAR_in-Anonymous-constructors_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#oneTwoThree___-_LPAR_in-Anonymous-constructors_RPAR_\":\n       {\"display\": \"oneTwoThree'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Anonymous Constructor Syntax\",\n         \"Anonymous constructors\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"oneTwoThree (in Dependent Coercion)\":\n    [{\"id\": \"oneTwoThree-_LPAR_in-Dependent-Coercion_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#oneTwoThree-_LPAR_in-Dependent-Coercion_RPAR_\":\n       {\"display\": \"oneTwoThree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Dependent Coercion\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"oneTwoThree (in Array Literals)\":\n    [{\"id\": \"oneTwoThree-_LPAR_in-Array-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Arrays/#oneTwoThree-_LPAR_in-Array-Literals_RPAR_\":\n       {\"display\": \"oneTwoThree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Arrays\",\n         \"Syntax\",\n         \"Array Literals\"]}},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"oneTwoThree (in Anonymous constructors)\":\n    [{\"id\": \"oneTwoThree-_LPAR_in-Anonymous-constructors_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#oneTwoThree-_LPAR_in-Anonymous-constructors_RPAR_\":\n       {\"display\": \"oneTwoThree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Anonymous Constructor Syntax\",\n         \"Anonymous constructors\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"one (in Updating arrays)\":\n    [{\"id\": \"one-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#one-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"one\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"one (in Defining Coercions: Decimal Numbers)\":\n    [{\"id\": \"one-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\",\n      \"data\":\n      {\"/Coercions/#one-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\":\n       {\"display\": \"one\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Defining Coercions: Decimal Numbers\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"ofNatEvenPlusTwo (in Default Instances)\":\n    [{\"id\": \"ofNatEvenPlusTwo-_LPAR_in-Default-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#ofNatEvenPlusTwo-_LPAR_in-Default-Instances_RPAR_\":\n       {\"display\": \"ofNatEvenPlusTwo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Default Instances\",\n         \"Default Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"ofNatEven0 (in Default Instances)\":\n    [{\"id\": \"ofNatEven0-_LPAR_in-Default-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#ofNatEven0-_LPAR_in-Default-Instances_RPAR_\":\n       {\"display\": \"ofNatEven0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Default Instances\",\n         \"Default Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"odd (in Mutual Structural Recursion Over Non-Mutual Types)\":\n    [{\"id\":\n      \"odd-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#odd-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_\":\n       {\"display\": \"odd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Non-Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"observe (in Lazy Lists)\":\n    [{\"id\": \"observe-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#observe-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"observe\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"nums (in Grouping and Filling)\":\n    [{\"id\": \"nums-_LPAR_in-Grouping-and-Filling_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#nums-_LPAR_in-Grouping-and-Filling_RPAR_\":\n       {\"display\": \"nums\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Grouping and Filling\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"notType (in Avoiding a Type)\":\n    [{\"id\": \"notType-_LPAR_in-Avoiding-a-Type_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Elaborators/#notType-_LPAR_in-Avoiding-a-Type_RPAR_\":\n       {\"display\": \"notType\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Elaborators\",\n         \"Term Elaborators\",\n         \"Avoiding a Type\"]}},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"notInductive (in Ineligible decreasing parameters)\":\n    [{\"id\": \"notInductive-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#notInductive-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"notInductive\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"notAck (in Inference too powerful)\":\n    [{\"id\": \"notAck-_LPAR_in-Inference-too-powerful_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#notAck-_LPAR_in-Inference-too-powerful_RPAR_\":\n       {\"display\": \"notAck\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Inferring Well-Founded Recursion\",\n         \"Inference too powerful\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"nonzero (in Match Patterns Follow Reduction)\":\n    [{\"id\": \"nonzero-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#nonzero-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_\":\n       {\"display\": \"nonzero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Custom Pattern Functions\",\n         \"Match Patterns Follow Reduction\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"nonParametric (in Inconsistencies From Axioms)\":\n    [{\"id\": \"nonParametric-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\",\n      \"data\":\n      {\"/Axioms/#nonParametric-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\":\n       {\"display\": \"nonParametric\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Consistency\",\n         \"Inconsistencies From Axioms\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"nodup_correct_directly\":\n    [{\"id\": \"nodup_correct_directly\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#nodup_correct_directly\":\n       {\"display\": \"nodup_correct_directly\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Control Flow\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"nodup_correct\":\n    [{\"id\": \"nodup_correct\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#nodup_correct\":\n       {\"display\": \"nodup_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Control Flow\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"nodup\":\n    [{\"id\": \"nodup\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#nodup\":\n       {\"display\": \"nodup\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Control Flow\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"noConfusionDiagonal\":\n    [{\"id\": \"noConfusionDiagonal\",\n      \"data\":\n      {\"/Basic-Types/Natural-Numbers/#noConfusionDiagonal\":\n       {\"display\": \"noConfusionDiagonal\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Natural Numbers\",\n         \"Logical Model\",\n         \"Peano Axioms\"]}},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"noConfusion\":\n    [{\"id\": \"noConfusion\",\n      \"data\":\n      {\"/Basic-Types/Natural-Numbers/#noConfusion\":\n       {\"display\": \"noConfusion\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Natural Numbers\",\n         \"Logical Model\",\n         \"Peano Axioms\"]}},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"nine (in Subtype Coercions)\":\n    [{\"id\": \"nine-_LPAR_in-Subtype-Coercions_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#nine-_LPAR_in-Subtype-Coercions_RPAR_\":\n       {\"display\": \"nine\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Subtype Coercions\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"nextPrime (in Partial Functions in Proofs)\":\n    [{\"id\": \"nextPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#nextPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\":\n       {\"display\": \"nextPrime\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Partial Functions\",\n         \"Partial Functions in Proofs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"nextOdd (in Axioms and Compilation)\":\n    [{\"id\": \"nextOdd-_LPAR_in-Axioms-and-Compilation_RPAR_\",\n      \"data\":\n      {\"/Axioms/#nextOdd-_LPAR_in-Axioms-and-Compilation_RPAR_\":\n       {\"display\": \"nextOdd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Reduction\",\n         \"Axioms and Compilation\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"neg0 (in Floating-Point Equality Is Not a Congruence)\":\n    [{\"id\": \"neg0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Floating-Point-Numbers/#neg0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_\":\n       {\"display\": \"neg0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Floating-Point Numbers\",\n         \"Floating-Point Equality Is Not a Congruence\"]}},\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"neg' (in Integer Negation and Addition)\":\n    [{\"id\": \"neg___-_LPAR_in-Integer-Negation-and-Addition_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#neg___-_LPAR_in-Integer-Negation-and-Addition_RPAR_\":\n       {\"display\": \"neg'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Eliminating Quotients\",\n         \"Integer Negation and Addition\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"natWriter (in Dependent Coercion to Functions)\":\n    [{\"id\": \"natWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#natWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\":\n       {\"display\": \"natWriter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Dependent Coercion to Functions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"n (in Mutual Block Scope)\":\n    [{\"id\": \"n-_LPAR_in-Mutual-Block-Scope_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_-next\":\n       {\"display\": \"n\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]},\n       \"/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_\":\n       {\"display\": \"n\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"n-_LPAR_in-Mutual-Block-Scope_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_-next\":\n       {\"display\": \"n\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]},\n       \"/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_\":\n       {\"display\": \"n\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"mySum_correct_vanilla\":\n    [{\"id\": \"mySum_correct_vanilla\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mySum_correct_vanilla\":\n       {\"display\": \"mySum_correct_vanilla\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Loops and Invariants\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mySum_correct_shorter\":\n    [{\"id\": \"mySum_correct_shorter\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mySum_correct_shorter\":\n       {\"display\": \"mySum_correct_shorter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Loops and Invariants\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mySum_correct_short\":\n    [{\"id\": \"mySum_correct_short\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mySum_correct_short\":\n       {\"display\": \"mySum_correct_short\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Loops and Invariants\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mySum_correct\":\n    [{\"id\": \"mySum_correct\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mySum_correct\":\n       {\"display\": \"mySum_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Loops and Invariants\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mySum\":\n    [{\"id\": \"mySum\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mySum\":\n       {\"display\": \"mySum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Loops and Invariants\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mustBeEqual (in Parameter Scope)\":\n    [{\"id\": \"mustBeEqual-_LPAR_in-Parameter-Scope_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#mustBeEqual-_LPAR_in-Parameter-Scope_RPAR_\":\n       {\"display\": \"mustBeEqual\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Bracketed Parameter Bindings\",\n         \"Parameter Scope\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"mkStx (in Optional Splices)\":\n    [{\"id\": \"mkStx-_LPAR_in-Optional-Splices_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#mkStx-_LPAR_in-Optional-Splices_RPAR_\":\n       {\"display\": \"mkStx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Splices\",\n         \"Optional Splices\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"mkFresh_spec\":\n    [{\"id\": \"mkFresh_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mkFresh_spec\":\n       {\"display\": \"mkFresh_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"Composing Specifications\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mkFreshN_spec\":\n    [{\"id\": \"mkFreshN_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mkFreshN_spec\":\n       {\"display\": \"mkFreshN_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"Composing Specifications\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mkFreshN_correct_compositional\":\n    [{\"id\": \"mkFreshN_correct_compositional\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mkFreshN_correct_compositional\":\n       {\"display\": \"mkFreshN_correct_compositional\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"Composing Specifications\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mkFreshN_correct\":\n    [{\"id\": \"mkFreshN_correct\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mkFreshN_correct\":\n       {\"display\": \"mkFreshN_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mkFreshN\":\n    [{\"id\": \"mkFreshN\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mkFreshN\":\n       {\"display\": \"mkFreshN\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"mkFresh\":\n    [{\"id\": \"mkFresh\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#mkFresh\":\n       {\"display\": \"mkFresh\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"min' (in Structural Recursion Under Pairs)\":\n    [{\"id\": \"min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_-next\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Structural Recursion Under Pairs\"]},\n       \"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Structural Recursion Under Pairs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_-next\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Structural Recursion Under Pairs\"]},\n       \"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Structural Recursion Under Pairs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"min' (in Simultaneous Matching vs Matching Pairs for Structural Recursion)\":\n    [{\"id\":\n      \"min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_-next\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Simultaneous Matching vs Matching Pairs for Structural Recursion\"]},\n       \"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Simultaneous Matching vs Matching Pairs for Structural Recursion\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_-next\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Simultaneous Matching vs Matching Pairs for Structural Recursion\"]},\n       \"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_\":\n       {\"display\": \"min'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Simultaneous Matching vs Matching Pairs for Structural Recursion\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"map (in Universe-polymorphic  map)\":\n    [{\"id\": \"map-_LPAR_in-Universe-polymorphic--map_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#map-_LPAR_in-Universe-polymorphic--map_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Universe-polymorphic  map\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"map (in No Automatic Implicit Parameters)\":\n    [{\"id\": \"map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\": \"map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\": \"map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]},\n       \"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"No Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"map (in Automatic Implicit Parameters)\":\n    [{\"id\": \"map-_LPAR_in-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#map-_LPAR_in-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"map (in Automatic Implicit Parameters and Universe Polymorphism)\":\n    [{\"id\":\n      \"map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic Implicit Parameters and Universe Polymorphism\"]},\n       \"/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic Implicit Parameters and Universe Polymorphism\"]}},\n      \"address\": \"/The-Type-System/Universes/\"},\n     {\"id\":\n      \"map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_-next\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic Implicit Parameters and Universe Polymorphism\"]},\n       \"/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_\":\n       {\"display\": \"map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic Implicit Parameters and Universe Polymorphism\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"main (in Throwing and Catching Errors)\":\n    [{\"id\": \"main-_LPAR_in-Throwing-and-Catching-Errors_RPAR_\",\n      \"data\":\n      {\"/IO/Logical-Model/#main-_LPAR_in-Throwing-and-Catching-Errors_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Logical Model\",\n         \"Errors and Error Handling in  IO\",\n         \"Throwing and Catching Errors\"]}},\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"main (in Running a Program)\":\n    [{\"id\": \"main-_LPAR_in-Running-a-Program_RPAR_\",\n      \"data\":\n      {\"/IO/Processes/#main-_LPAR_in-Running-a-Program_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Processes\",\n         \"Running Processes\",\n         \"Running a Program\"]}},\n      \"address\": \"/IO/Processes/\"}],\n    \"main (in Running a Program on a File)\":\n    [{\"id\": \"main-_LPAR_in-Running-a-Program-on-a-File_RPAR_\",\n      \"data\":\n      {\"/IO/Processes/#main-_LPAR_in-Running-a-Program-on-a-File_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Processes\",\n         \"Running Processes\",\n         \"Running a Program on a File\"]}},\n      \"address\": \"/IO/Processes/\"}],\n    \"main (in Reference Cells as Locks)\":\n    [{\"id\": \"main-_LPAR_in-Reference-Cells-as-Locks_RPAR_\",\n      \"data\":\n      {\"/IO/Mutable-References/#main-_LPAR_in-Reference-Cells-as-Locks_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Mutable References\",\n         \"Concurrency\",\n         \"Reference Cells as Locks\"]}},\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"main (in Reading from Standard Input)\":\n    [{\"id\": \"main-_LPAR_in-Reading-from-Standard-Input_RPAR_\",\n      \"data\":\n      {\"/IO/Files___-File-Handles___-and-Streams/#main-_LPAR_in-Reading-from-Standard-Input_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Files, File Handles, and Streams\",\n         \"Standard I/O\",\n         \"Reading from Standard Input\"]}},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"main (in Printing)\":\n    [{\"id\": \"main-_LPAR_in-Printing_RPAR_\",\n      \"data\":\n      {\"/IO/Console-Output/#main-_LPAR_in-Printing_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\", \"IO\", \"Console Output\", \"Printing\"]}},\n      \"address\": \"/IO/Console-Output/\"}],\n    \"main (in One File, Multiple Handles)\":\n    [{\"id\": \"main-_LPAR_in-One-File___-Multiple-Handles_RPAR_\",\n      \"data\":\n      {\"/IO/Files___-File-Handles___-and-Streams/#main-_LPAR_in-One-File___-Multiple-Handles_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Files, File Handles, and Streams\",\n         \"Low-Level File API\",\n         \"One File, Multiple Handles\"]}},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"main (in Observing Uniqueness)\":\n    [{\"id\": \"main-_LPAR_in-Observing-Uniqueness_RPAR_-next\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_-next\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]},\n       \"/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"},\n     {\"id\": \"main-_LPAR_in-Observing-Uniqueness_RPAR_\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_-next\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]},\n       \"/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Observing Uniqueness\",\n         \"Observing Uniqueness\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"main (in Monadic Collection Operations)\":\n    [{\"id\": \"main-_LPAR_in-Monadic-Collection-Operations_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/API-Reference/#main-_LPAR_in-Monadic-Collection-Operations_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"API Reference\",\n         \"Monadic Collection Operations\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"main (in Infix  Functor  and  Applicative  Operators)\":\n    [{\"id\": \"main-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#main-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\",\n         \"Infix  Functor  and  Applicative  Operators\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"main (in Dependent Pairs with Data)\":\n    [{\"id\": \"main-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#main-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs with Data\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"main (in Data races with  get  and  set)\":\n    [{\"id\": \"main-_LPAR_in-Data-races-with--get--and--set_RPAR_\",\n      \"data\":\n      {\"/IO/Mutable-References/#main-_LPAR_in-Data-races-with--get--and--set_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Mutable References\",\n         \"State Transformers\",\n         \"Reading and Writing\",\n         \"Data races with  get  and  set\"]}},\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"main (in Closing a Subprocess's Standard Input)\":\n    [{\"id\": \"main-_LPAR_in-Closing-a-Subprocess___s-Standard-Input_RPAR_\",\n      \"data\":\n      {\"/IO/Processes/#main-_LPAR_in-Closing-a-Subprocess___s-Standard-Input_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Processes\",\n         \"Running Processes\",\n         \"Closing a Subprocess's Standard Input\"]}},\n      \"address\": \"/IO/Processes/\"}],\n    \"main (in Checking Exit Codes)\":\n    [{\"id\": \"main-_LPAR_in-Checking-Exit-Codes_RPAR_\",\n      \"data\":\n      {\"/IO/Processes/#main-_LPAR_in-Checking-Exit-Codes_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Processes\",\n         \"Running Processes\",\n         \"Checking Exit Codes\"]}},\n      \"address\": \"/IO/Processes/\"}],\n    \"main (in Avoiding data races with  modify)\":\n    [{\"id\": \"main-_LPAR_in-Avoiding-data-races-with--modify_RPAR_\",\n      \"data\":\n      {\"/IO/Mutable-References/#main-_LPAR_in-Avoiding-data-races-with--modify_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Mutable References\",\n         \"State Transformers\",\n         \"Reading and Writing\",\n         \"Avoiding data races with  modify\"]}},\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"main (in Asynchronous Subprocesses)\":\n    [{\"id\": \"main-_LPAR_in-Asynchronous-Subprocesses_RPAR_\",\n      \"data\":\n      {\"/IO/Processes/#main-_LPAR_in-Asynchronous-Subprocesses_RPAR_\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Processes\",\n         \"Running Processes\",\n         \"Asynchronous Subprocesses\"]}},\n      \"address\": \"/IO/Processes/\"}],\n    \"main\":\n    [{\"id\": \"main\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#main\":\n       {\"display\": \"main\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"lsts (in Widths and Newlines)\":\n    [{\"id\": \"lsts-_LPAR_in-Widths-and-Newlines_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#lsts-_LPAR_in-Widths-and-Newlines_RPAR_\":\n       {\"display\": \"lsts\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Widths and Newlines\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"lst.nums (in Widths and Newlines)\":\n    [{\"id\": \"lst___nums-_LPAR_in-Widths-and-Newlines_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#lst___nums-_LPAR_in-Widths-and-Newlines_RPAR_\":\n       {\"display\": \"nums\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Widths and Newlines\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"lst (in Widths and Newlines)\":\n    [{\"id\": \"lst-_LPAR_in-Widths-and-Newlines_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#lst-_LPAR_in-Widths-and-Newlines_RPAR_\":\n       {\"display\": \"lst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Widths and Newlines\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"loop (in Loops are Tail Recursive Functions)\":\n    [{\"id\": \"loop-_LPAR_in-Loops-are-Tail-Recursive-Functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#loop-_LPAR_in-Loops-are-Tail-Recursive-Functions_RPAR_\":\n       {\"display\": \"loop\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Tail-Recursive Functions\",\n         \"Loops are Tail Recursive Functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"log_spec_better (in A Logging Monad)\":\n    [{\"id\": \"log_spec_better-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#log_spec_better-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"log_spec_better\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"log_spec (in A Logging Monad)\":\n    [{\"id\": \"log_spec-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#log_spec-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"log_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"logUntil_length (in A Logging Monad)\":\n    [{\"id\": \"logUntil_length-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#logUntil_length-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"logUntil_length\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"logUntil (in A Logging Monad)\":\n    [{\"id\": \"logUntil-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#logUntil-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"logUntil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"log (in A Logging Monad)\":\n    [{\"id\": \"log-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#log-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"log\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"location (in where  for structures)\":\n    [{\"id\": \"location-_LPAR_in-where--for-structures_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#location-_LPAR_in-where--for-structures_RPAR_\":\n       {\"display\": \"location\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"where  for structures\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"listLen (in Matching on Complex Expressions Can Prevent Elaboration)\":\n    [{\"id\":\n      \"listLen-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#listLen-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_\":\n       {\"display\": \"listLen\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Matching on Complex Expressions Can Prevent Elaboration\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"lazy\":\n    [{\"id\": \"lazy\",\n      \"data\":\n      {\"/Axioms/#lazy\":\n       {\"display\": \"lazy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Displaying Axiom Dependencies\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"last?' (in Pattern Equality Proofs)\":\n    [{\"id\": \"last______-_LPAR_in-Pattern-Equality-Proofs_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#last______-_LPAR_in-Pattern-Equality-Proofs_RPAR_\":\n       {\"display\": \"last?'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Pattern Equality Proofs\",\n         \"Pattern Equality Proofs\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"last? (in Pattern Equality Proofs)\":\n    [{\"id\": \"last___-_LPAR_in-Pattern-Equality-Proofs_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#last___-_LPAR_in-Pattern-Equality-Proofs_RPAR_\":\n       {\"display\": \"last?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Pattern Equality Proofs\",\n         \"Pattern Equality Proofs\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"largeNumber (in Creating and Tracking Proofs That Trust the Compiler)\":\n    [{\"id\":\n      \"largeNumber-_LPAR_in-Creating-and-Tracking-Proofs-That-Trust-the-Compiler_RPAR_\",\n      \"data\":\n      {\"/Axioms/#largeNumber-_LPAR_in-Creating-and-Tracking-Proofs-That-Trust-the-Compiler_RPAR_\":\n       {\"display\": \"largeNumber\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Standard Axioms\",\n         \"Creating and Tracking Proofs That Trust the Compiler\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"iterFile (in Iterators and Effects)\":\n    [{\"id\": \"iterFile-_LPAR_in-Iterators-and-Effects_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#iterFile-_LPAR_in-Iterators-and-Effects_RPAR_\":\n       {\"display\": \"iterFile\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterators and Effects\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"isZero' (in Pattern-Matching Functions)\":\n    [{\"id\": \"isZero___-_LPAR_in-Pattern-Matching-Functions_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#isZero___-_LPAR_in-Pattern-Matching-Functions_RPAR_\":\n       {\"display\": \"isZero'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Pattern Matching Functions\",\n         \"Pattern-Matching Functions\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"isZero (in Pattern-Matching Functions)\":\n    [{\"id\": \"isZero-_LPAR_in-Pattern-Matching-Functions_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#isZero-_LPAR_in-Pattern-Matching-Functions_RPAR_\":\n       {\"display\": \"isZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Pattern Matching Functions\",\n         \"Pattern-Matching Functions\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"isPrime (in Partial Functions in Proofs)\":\n    [{\"id\": \"isPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#isPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\":\n       {\"display\": \"isPrime\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Partial Functions\",\n         \"Partial Functions in Proofs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"iota_succ (in Increasing E-matching Limits)\":\n    [{\"id\": \"iota_succ-_LPAR_in-Increasing-E-matching-Limits_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#iota_succ-_LPAR_in-Increasing-E-matching-Limits_RPAR_\":\n       {\"display\": \"iota_succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Resource Limits\",\n         \"Increasing E-matching Limits\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"iota (in Increasing E-matching Limits)\":\n    [{\"id\": \"iota-_LPAR_in-Increasing-E-matching-Limits_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#iota-_LPAR_in-Increasing-E-matching-Limits_RPAR_\":\n       {\"display\": \"iota\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Resource Limits\",\n         \"Increasing E-matching Limits\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"inv_eq (in The  @[grind ←=]  Attribute)\":\n    [{\"id\": \"inv_eq-_LPAR_in-The--____LSQ_grind-_______RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#inv_eq-_LPAR_in-The--____LSQ_grind-_______RSQ_--Attribute_RPAR_\":\n       {\"display\": \"inv_eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ←=]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"intersperse (in Printing Equations)\":\n    [{\"id\": \"intersperse-_LPAR_in-Printing-Equations_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#intersperse-_LPAR_in-Printing-Equations_RPAR_\":\n       {\"display\": \"intersperse\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Querying the Context\",\n         \"Printing Equations\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"interestingName (in Querying the Environment)\":\n    [{\"id\": \"interestingName-_LPAR_in-Querying-the-Environment_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Elaborators/#interestingName-_LPAR_in-Querying-the-Environment_RPAR_\":\n       {\"display\": \"interestingName\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Elaborators\",\n         \"Command Elaborators\",\n         \"Querying the Environment\"]}},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"instDecidableEqStringList (in A recursive instance for a sum class)\":\n    [{\"id\":\n      \"instDecidableEqStringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#instDecidableEqStringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"instDecidableEqStringList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"A recursive instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"instCommRingR\":\n    [{\"id\": \"instCommRingR\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#instCommRingR\":\n       {\"display\": \"instCommRingR\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"Integrating  grind 's Features\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"instBeqNatWrapper (in Variations in Instance Definitions)\":\n    [{\"id\":\n      \"instBeqNatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#instBeqNatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_\":\n       {\"display\": \"instBeqNatWrapper\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Variations in Instance Definitions\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"incr_eq_plus1 (in Proofs are Private)\":\n    [{\"id\": \"incr_eq_plus1-_LPAR_in-Proofs-are-Private_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#incr_eq_plus1-_LPAR_in-Proofs-are-Private_RPAR_\":\n       {\"display\": \"incr_eq_plus1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs are Private\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"incrOrFail (in Lifting Transformed Monads)\":\n    [{\"id\": \"incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next\":\n       {\"display\": \"incrOrFail\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]},\n       \"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_\":\n       {\"display\": \"incrOrFail\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"},\n     {\"id\": \"incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next\":\n       {\"display\": \"incrOrFail\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]},\n       \"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_\":\n       {\"display\": \"incrOrFail\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"incrBy (in Lifting Transformed Monads)\":\n    [{\"id\": \"incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next\":\n       {\"display\": \"incrBy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]},\n       \"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_\":\n       {\"display\": \"incrBy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"},\n     {\"id\": \"incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next\":\n       {\"display\": \"incrBy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]},\n       \"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_\":\n       {\"display\": \"incrBy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting Transformed Monads\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"incr (in Proofs are Private)\":\n    [{\"id\": \"incr-_LPAR_in-Proofs-are-Private_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#incr-_LPAR_in-Proofs-are-Private_RPAR_\":\n       {\"display\": \"incr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs are Private\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"ignore (in Ignored Terms in Notation Expansion)\":\n    [{\"id\": \"ignore-_LPAR_in-Ignored-Terms-in-Notation-Expansion_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Notations/#ignore-_LPAR_in-Ignored-Terms-in-Notation-Expansion_RPAR_\":\n       {\"display\": \"ignore\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Notations\",\n         \"Ignored Terms in Notation Expansion\"]}},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"id₃ (in The  universe  command when  autoImplicit  is  false)\":\n    [{\"id\":\n      \"id___-_LPAR_in-The--universe--command-when--autoImplicit--is--false_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#id___-_LPAR_in-The--universe--command-when--autoImplicit--is--false_RPAR_\":\n       {\"display\": \"id₃\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"The  universe  command when  autoImplicit  is  false\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"idiom (in Idiom Brackets)\":\n    [{\"id\": \"idiom-_LPAR_in-Idiom-Brackets_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#idiom-_LPAR_in-Idiom-Brackets_RPAR_\":\n       {\"display\": \"idiom\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Defining Macros\",\n         \"The  macro_rules  Command\",\n         \"Idiom Brackets\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"identity (in Mutual Block Scope and Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]},\n       \"/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next\":\n       {\"display\": \"identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]},\n       \"/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope and Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"id'\":\n    [{\"id\": \"id___\",\n      \"data\":\n      {\"/The-Type-System/Universes/#id___\":\n       {\"display\": \"id'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"h₆ (in Left-to-Right Generation)\":\n    [{\"id\": \"h___-_LPAR_in-Left-to-Right-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#h___-_LPAR_in-Left-to-Right-Generation_RPAR_\":\n       {\"display\": \"h₆\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Left-to-Right Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"h₅ (in Failing Backward Pattern Generation)\":\n    [{\"id\": \"h___-_LPAR_in-Failing-Backward-Pattern-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#h___-_LPAR_in-Failing-Backward-Pattern-Generation_RPAR_\":\n       {\"display\": \"h₅\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Failing Backward Pattern Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"h₄ (in Patterns from Conclusion and Hypotheses)\":\n    [{\"id\": \"h___-_LPAR_in-Patterns-from-Conclusion-and-Hypotheses_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#h___-_LPAR_in-Patterns-from-Conclusion-and-Hypotheses_RPAR_\":\n       {\"display\": \"h₄\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Patterns from Conclusion and Hypotheses\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"h₃ (in Bidirectional Equality Pattern Generation)\":\n    [{\"id\": \"h___-_LPAR_in-Bidirectional-Equality-Pattern-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#h___-_LPAR_in-Bidirectional-Equality-Pattern-Generation_RPAR_\":\n       {\"display\": \"h₃\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Bidirectional Equality Pattern Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"h₂ (in Backward Pattern Generation)\":\n    [{\"id\": \"h___-_LPAR_in-Backward-Pattern-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#h___-_LPAR_in-Backward-Pattern-Generation_RPAR_\":\n       {\"display\": \"h₂\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Backward Pattern Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"h₁ (in Forward Pattern Generation)\":\n    [{\"id\": \"h___-_LPAR_in-Forward-Pattern-Generation_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#h___-_LPAR_in-Forward-Pattern-Generation_RPAR_\":\n       {\"display\": \"h₁\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Forward Pattern Generation\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"helper (in Recursion vs Recursors)\":\n    [{\"id\": \"helper-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#helper-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"helper\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"hello (in Reducibility and Instance Synthesis)\":\n    [{\"id\": \"hello-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#hello-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\":\n       {\"display\": \"hello\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Instance Synthesis\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"hello\":\n    [{\"id\": \"hello\",\n      \"data\":\n      {\"/Introduction/#hello\":\n       {\"display\": \"hello\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Lean Code\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"half.match_1' (in Elaboration Walkthrough)\":\n    [{\"id\": \"half___match_1___-_LPAR_in-Elaboration-Walkthrough_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half___match_1___-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half.match_1'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half''' (in Recursion vs Recursors)\":\n    [{\"id\": \"half_________-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half_________-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"half'''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half'' (in Recursion vs Recursors)\":\n    [{\"id\": \"half______-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half'' (in Elaboration Walkthrough)\":\n    [{\"id\": \"half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"half______-_LPAR_in-Elaboration-Walkthrough_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half' (in Recursion vs Recursors)\":\n    [{\"id\": \"half___-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half___-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"half'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half' (in Elaboration Walkthrough)\":\n    [{\"id\": \"half___-_LPAR_in-Elaboration-Walkthrough_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half___-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half (in Specifying Decreasing Parameters)\":\n    [{\"id\": \"half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Specifying Decreasing Parameters\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Specifying Decreasing Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Specifying Decreasing Parameters\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Specifying Decreasing Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half (in Recursion vs Recursors)\":\n    [{\"id\": \"half-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half (in Matching on Complex Expressions Can Prevent Elaboration)\":\n    [{\"id\":\n      \"half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Matching on Complex Expressions Can Prevent Elaboration\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Matching on Complex Expressions Can Prevent Elaboration\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Matching on Complex Expressions Can Prevent Elaboration\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Matching on Complex Expressions Can Prevent Elaboration\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half (in Inferred Termination Annotations)\":\n    [{\"id\": \"half-_LPAR_in-Inferred-Termination-Annotations_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Inferred-Termination-Annotations_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Inferring Structural Recursion\",\n         \"Inferred Termination Annotations\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"half (in Inaccessible Patterns)\":\n    [{\"id\": \"half-_LPAR_in-Inaccessible-Patterns_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#half-_LPAR_in-Inaccessible-Patterns_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Inaccessible Patterns\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"half (in Elaboration Walkthrough)\":\n    [{\"id\": \"half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"half-_LPAR_in-Elaboration-Walkthrough_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]},\n       \"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Elaboration Walkthrough\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"gt1 (in E-matching and Pattern Matching)\":\n    [{\"id\": \"gt1-_LPAR_in-E-matching-and-Pattern-Matching_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#gt1-_LPAR_in-E-matching-and-Pattern-Matching_RPAR_\":\n       {\"display\": \"gt1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Resource Limits\",\n         \"E-matching and Pattern Matching\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"grouped (in Grouping and Filling)\":\n    [{\"id\": \"grouped-_LPAR_in-Grouping-and-Filling_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#grouped-_LPAR_in-Grouping-and-Filling_RPAR_\":\n       {\"display\": \"grouped\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Grouping and Filling\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"groceries (in Slicing Lists)\":\n    [{\"id\": \"groceries-_LPAR_in-Slicing-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#groceries-_LPAR_in-Slicing-Lists_RPAR_\":\n       {\"display\": \"groceries\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Slicing Lists\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"greeting (in Private and Public Definitions)\":\n    [{\"id\": \"greeting-_LPAR_in-Private-and-Public-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#greeting-_LPAR_in-Private-and-Public-Definitions_RPAR_\":\n       {\"display\": \"greeting\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Private and Public Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"greeting (in Exposed and Unexposed Definitions)\":\n    [{\"id\": \"greeting-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#greeting-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\":\n       {\"display\": \"greeting\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]},\n       \"/Source-Files-and-Modules/#greeting-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\":\n       {\"display\": \"greeting\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"greeting-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#greeting-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\":\n       {\"display\": \"greeting\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]},\n       \"/Source-Files-and-Modules/#greeting-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\":\n       {\"display\": \"greeting\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"goodMorning (in Reducibility and Instance Synthesis)\":\n    [{\"id\": \"goodMorning-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#goodMorning-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\":\n       {\"display\": \"goodMorning\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Instance Synthesis\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"goodEvening (in Reducibility and Instance Synthesis)\":\n    [{\"id\": \"goodEvening-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#goodEvening-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\":\n       {\"display\": \"goodEvening\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Instance Synthesis\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"go (in Avoiding Intermediate Structures)\":\n    [{\"id\": \"go-_LPAR_in-Avoiding-Intermediate-Structures_RPAR_\",\n      \"data\":\n      {\"/Iterators/#go-_LPAR_in-Avoiding-Intermediate-Structures_RPAR_\":\n       {\"display\": \"go\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Avoiding Intermediate Structures\"]}},\n      \"address\": \"/Iterators/\"}],\n    \"gf (in Selecting Patterns)\":\n    [{\"id\": \"gf-_LPAR_in-Selecting-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#gf-_LPAR_in-Selecting-Patterns_RPAR_\":\n       {\"display\": \"gf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Selecting Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"gf (in E-matching Patterns)\":\n    [{\"id\": \"gf-_LPAR_in-E-matching-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#gf-_LPAR_in-E-matching-Patterns_RPAR_\":\n       {\"display\": \"gf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"E-matching Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"getValues (in Dependent Pairs with Data)\":\n    [{\"id\": \"getValues-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#getValues-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\":\n       {\"display\": \"getValues\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs with Data\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"getThird (in Checking Array Bounds)\":\n    [{\"id\": \"getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next\",\n      \"data\":\n      {\"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]},\n       \"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]},\n       \"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]}},\n      \"address\": \"/Terms/Conditionals/\"},\n     {\"id\": \"getThird-_LPAR_in-Checking-Array-Bounds_RPAR_\",\n      \"data\":\n      {\"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]},\n       \"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]},\n       \"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]}},\n      \"address\": \"/Terms/Conditionals/\"},\n     {\"id\": \"getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next\",\n      \"data\":\n      {\"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]},\n       \"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]},\n       \"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_\":\n       {\"display\": \"getThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Conditionals\",\n         \"Checking Array Bounds\"]}},\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"getPPContext (in Pretty-Printed Syntax)\":\n    [{\"id\": \"getPPContext-_LPAR_in-Pretty-Printed-Syntax_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Defining-New-Syntax/#getPPContext-_LPAR_in-Pretty-Printed-Syntax_RPAR_\":\n       {\"display\": \"getPPContext\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Defining New Syntax\",\n         \"Inspecting Syntax\",\n         \"Pretty-Printed Syntax\"]}},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"getName (in Infix  Functor  and  Applicative  Operators)\":\n    [{\"id\":\n      \"getName-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#getName-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\":\n       {\"display\": \"getName\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\",\n         \"Infix  Functor  and  Applicative  Operators\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"getNLinesRev (in Dependent Pairs with Data)\":\n    [{\"id\": \"getNLinesRev-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#getNLinesRev-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\":\n       {\"display\": \"getNLinesRev\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs with Data\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"getNLines (in Dependent Pairs with Data)\":\n    [{\"id\": \"getNLines-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#getNLines-_LPAR_in-Dependent-Pairs-with-Data_RPAR_\":\n       {\"display\": \"getNLines\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs with Data\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"getFirst (in Finitely Many Skips)\":\n    [{\"id\": \"getFirst-_LPAR_in-Finitely-Many-Skips_RPAR_\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#getFirst-_LPAR_in-Finitely-Many-Skips_RPAR_\":\n       {\"display\": \"getFirst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Stepping Iterators\",\n         \"Termination\",\n         \"Finitely Many Skips\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"getFavoriteNat (in Infix  Functor  and  Applicative  Operators)\":\n    [{\"id\":\n      \"getFavoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#getFavoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\":\n       {\"display\": \"getFavoriteNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\",\n         \"Infix  Functor  and  Applicative  Operators\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"getDOp (in Provided Operator Names)\":\n    [{\"id\": \"getDOp-_LPAR_in-Provided-Operator-Names_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Custom-Operators/#getDOp-_LPAR_in-Provided-Operator-Names_RPAR_\":\n       {\"display\": \"getDOp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Custom Operators\",\n         \"Provided Operator Names\"]}},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"getBytes' (in Exceptions and Lifting)\":\n    [{\"id\": \"getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_-next\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_-next\":\n       {\"display\": \"getBytes'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Reversing Lifts\",\n         \"Reversible Lifting with  MonadControl\",\n         \"Exceptions and Lifting\"]},\n       \"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_\":\n       {\"display\": \"getBytes'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Reversing Lifts\",\n         \"Reversible Lifting with  MonadControl\",\n         \"Exceptions and Lifting\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"},\n     {\"id\": \"getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_-next\":\n       {\"display\": \"getBytes'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Reversing Lifts\",\n         \"Reversible Lifting with  MonadControl\",\n         \"Exceptions and Lifting\"]},\n       \"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_\":\n       {\"display\": \"getBytes'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Reversing Lifts\",\n         \"Reversible Lifting with  MonadControl\",\n         \"Exceptions and Lifting\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"getBytes (in Exceptions and Lifting)\":\n    [{\"id\": \"getBytes-_LPAR_in-Exceptions-and-Lifting_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes-_LPAR_in-Exceptions-and-Lifting_RPAR_\":\n       {\"display\": \"getBytes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Reversing Lifts\",\n         \"Reversible Lifting with  MonadControl\",\n         \"Exceptions and Lifting\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"getByte (in Exceptions and Lifting)\":\n    [{\"id\": \"getByte-_LPAR_in-Exceptions-and-Lifting_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getByte-_LPAR_in-Exceptions-and-Lifting_RPAR_\":\n       {\"display\": \"getByte\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Reversing Lifts\",\n         \"Reversible Lifting with  MonadControl\",\n         \"Exceptions and Lifting\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"getAlpha (in Coercions and  Option)\":\n    [{\"id\": \"getAlpha-_LPAR_in-Coercions-and--Option_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Optional-Values/#getAlpha-_LPAR_in-Coercions-and--Option_RPAR_\":\n       {\"display\": \"getAlpha\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Optional Values\",\n         \"Coercions\",\n         \"Coercions and  Option\"]}},\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"g (in Selecting Patterns)\":\n    [{\"id\": \"g-_LPAR_in-Selecting-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#g-_LPAR_in-Selecting-Patterns_RPAR_\":\n       {\"display\": \"g\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Selecting Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"g (in Ordinary vs Strict Implicit Parameters)\":\n    [{\"id\": \"g-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Terms/Functions/#g-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_\":\n       {\"display\": \"g\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Functions\",\n         \"Implicit Parameters\",\n         \"Ordinary vs Strict Implicit Parameters\"]}},\n      \"address\": \"/Terms/Functions/\"}],\n    \"g (in Mutual recursion without parameter decrease)\":\n    [{\"id\": \"g-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#g-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_\":\n       {\"display\": \"g\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Mutual Well-Founded Recursion\",\n         \"Mutual recursion without parameter decrease\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"g (in Impossible Code Paths)\":\n    [{\"id\": \"g-_LPAR_in-Impossible-Code-Paths_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Empty-Type/#g-_LPAR_in-Impossible-Code-Paths_RPAR_\":\n       {\"display\": \"g\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Empty Type\",\n         \"Impossible Code Paths\"]}},\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"g (in E-matching Patterns)\":\n    [{\"id\": \"g-_LPAR_in-E-matching-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#g-_LPAR_in-E-matching-Patterns_RPAR_\":\n       {\"display\": \"g\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"E-matching Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"g (in Dead Code and Subsingleton Elimination)\":\n    [{\"id\": \"g-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Truth/#g-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_\":\n       {\"display\": \"g\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Truth\",\n         \"Dead Code and Subsingleton Elimination\"]}},\n      \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"funext'\":\n    [{\"id\": \"funext___\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#funext___\":\n       {\"display\": \"funext'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotients and Function Extensionality\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"fromBaseIO (in Lifting  IO  Monads)\":\n    [{\"id\": \"fromBaseIO-_LPAR_in-Lifting--IO--Monads_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Lifting-Monads/#fromBaseIO-_LPAR_in-Lifting--IO--Monads_RPAR_\":\n       {\"display\": \"fromBaseIO\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lifting Monads\",\n         \"Lifting  IO  Monads\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"friday (in Implementing Coercions)\":\n    [{\"id\": \"friday-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#friday-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"friday\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"four (in Defining Coercions)\":\n    [{\"id\": \"four-_LPAR_in-Defining-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#four-_LPAR_in-Defining-Coercions_RPAR_\":\n       {\"display\": \"four\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Defining Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"fooInst (in Default Size Instance)\":\n    [{\"id\": \"fooInst-_LPAR_in-Default-Size-Instance_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#fooInst-_LPAR_in-Default-Size-Instance_RPAR_\":\n       {\"display\": \"fooInst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Well-Founded Relations\",\n         \"Default Size Instance\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"find (in Definition by Partial Fixpoint)\":\n    [{\"id\": \"find-_LPAR_in-Definition-by-Partial-Fixpoint_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#find-_LPAR_in-Definition-by-Partial-Fixpoint_RPAR_\":\n       {\"display\": \"find\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Definition by Partial Fixpoint\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"filled (in Grouping and Filling)\":\n    [{\"id\": \"filled-_LPAR_in-Grouping-and-Filling_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#filled-_LPAR_in-Grouping-and-Filling_RPAR_\":\n       {\"display\": \"filled\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Format\",\n         \"Grouping and Filling\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"fileSize (in Iterators and Effects)\":\n    [{\"id\": \"fileSize-_LPAR_in-Iterators-and-Effects_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#fileSize-_LPAR_in-Iterators-and-Effects_RPAR_\":\n       {\"display\": \"fileSize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterators and Effects\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"fib (in Termination Proof Obligations)\":\n    [{\"id\": \"fib-_LPAR_in-Termination-Proof-Obligations_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_-next\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Termination Proof Obligations\"]},\n       \"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Termination Proof Obligations\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"fib-_LPAR_in-Termination-Proof-Obligations_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_-next\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Termination Proof Obligations\"]},\n       \"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Termination Proof Obligations\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"fib (in Refined Parameters)\":\n    [{\"id\": \"fib-_LPAR_in-Refined-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Refined-Parameters_RPAR_\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Refined Parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"fib (in Nested Patterns and Sub-Terms)\":\n    [{\"id\": \"fib-_LPAR_in-Nested-Patterns-and-Sub-Terms_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Nested-Patterns-and-Sub-Terms_RPAR_\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Nested Patterns and Sub-Terms\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"fib (in Enriched Proof Obligation Contexts)\":\n    [{\"id\": \"fib-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\":\n       {\"display\": \"fib\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"false_is_true (in Inconsistencies From Axioms)\":\n    [{\"id\": \"false_is_true-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\",\n      \"data\":\n      {\"/Axioms/#false_is_true-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\":\n       {\"display\": \"false_is_true\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Consistency\",\n         \"Inconsistencies From Axioms\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"fact (in Custom Operators in Lean's Output)\":\n    [{\"id\": \"fact-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Custom-Operators/#fact-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_\":\n       {\"display\": \"fact\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Custom Operators\",\n         \"Custom Operators in Lean's Output\"]}},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"f (in Termination failure)\":\n    [{\"id\": \"f-_LPAR_in-Termination-failure_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#f-_LPAR_in-Termination-failure_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Inferring Well-Founded Recursion\",\n         \"Termination failure\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"f (in Selecting Patterns)\":\n    [{\"id\": \"f-_LPAR_in-Selecting-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#f-_LPAR_in-Selecting-Patterns_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Selecting Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"f (in Ordinary vs Strict Implicit Parameters)\":\n    [{\"id\": \"f-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Terms/Functions/#f-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Functions\",\n         \"Implicit Parameters\",\n         \"Ordinary vs Strict Implicit Parameters\"]}},\n      \"address\": \"/Terms/Functions/\"}],\n    \"f (in Mutual recursion without parameter decrease)\":\n    [{\"id\": \"f-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#f-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Mutual Well-Founded Recursion\",\n         \"Mutual recursion without parameter decrease\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"f (in Impossible Code Paths)\":\n    [{\"id\": \"f-_LPAR_in-Impossible-Code-Paths_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Empty-Type/#f-_LPAR_in-Impossible-Code-Paths_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Empty Type\",\n         \"Impossible Code Paths\"]}},\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"f (in Exporting Private Definitions)\":\n    [{\"id\": \"f-_LPAR_in-Exporting-Private-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#f-_LPAR_in-Exporting-Private-Definitions_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exporting Private Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"f (in Expanding Quasiquotation)\":\n    [{\"id\": \"f-_LPAR_in-Expanding-Quasiquotation_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#f-_LPAR_in-Expanding-Quasiquotation_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Quasiquotation\",\n         \"Expanding Quasiquotation\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"f (in Enriched Proof Obligation Contexts)\":\n    [{\"id\": \"f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]},\n       \"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]},\n       \"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]},\n       \"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]},\n       \"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]},\n       \"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]},\n       \"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"f (in E-matching Patterns)\":\n    [{\"id\": \"f-_LPAR_in-E-matching-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#f-_LPAR_in-E-matching-Patterns_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"E-matching Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"f (in Discriminant Refinement)\":\n    [{\"id\": \"f-_LPAR_in-Discriminant-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#f-_LPAR_in-Discriminant-Refinement_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Discriminant Refinement\",\n         \"Discriminant Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"f (in Dead Code and Subsingleton Elimination)\":\n    [{\"id\": \"f-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Truth/#f-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_\":\n       {\"display\": \"f\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Truth\",\n         \"Dead Code and Subsingleton Elimination\"]}},\n      \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"extEq\":\n    [{\"id\": \"extEq\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#extEq\":\n       {\"display\": \"extEq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotients and Function Extensionality\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"extApp\":\n    [{\"id\": \"extApp\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#extApp\":\n       {\"display\": \"extApp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotients and Function Extensionality\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"expandRep (in The Macro Attribute)\":\n    [{\"id\": \"expandRep-_LPAR_in-The-Macro-Attribute_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#expandRep-_LPAR_in-The-Macro-Attribute_RPAR_\":\n       {\"display\": \"expandRep\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Defining Macros\",\n         \"The Macro Attribute\",\n         \"The Macro Attribute\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"excluded_middle (in Printing Axioms of Simple Definitions)\":\n    [{\"id\":\n      \"excluded_middle-_LPAR_in-Printing-Axioms-of-Simple-Definitions_RPAR_\",\n      \"data\":\n      {\"/Axioms/#excluded_middle-_LPAR_in-Printing-Axioms-of-Simple-Definitions_RPAR_\":\n       {\"display\": \"excluded_middle\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Displaying Axiom Dependencies\",\n         \"Printing Axioms of Simple Definitions\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"ex_four_plus_five' (in Proving Existential Statements)\":\n    [{\"id\":\n      \"ex_four_plus_five___-_LPAR_in-Proving-Existential-Statements_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Quantifiers/#ex_four_plus_five___-_LPAR_in-Proving-Existential-Statements_RPAR_\":\n       {\"display\": \"ex_four_plus_five'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Quantifiers\",\n         \"Proving Existential Statements\"]}},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"ex_four_plus_five (in Proving Existential Statements)\":\n    [{\"id\": \"ex_four_plus_five-_LPAR_in-Proving-Existential-Statements_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Quantifiers/#ex_four_plus_five-_LPAR_in-Proving-Existential-Statements_RPAR_\":\n       {\"display\": \"ex_four_plus_five\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Quantifiers\",\n         \"Proving Existential Statements\"]}},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"ex3 (in Suffixed Splices)\":\n    [{\"id\": \"ex3-_LPAR_in-Suffixed-Splices_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#ex3-_LPAR_in-Suffixed-Splices_RPAR_\":\n       {\"display\": \"ex3\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Splices\",\n         \"Suffixed Splices\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"ex2 (in Suffixed Splices)\":\n    [{\"id\": \"ex2-_LPAR_in-Suffixed-Splices_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#ex2-_LPAR_in-Suffixed-Splices_RPAR_\":\n       {\"display\": \"ex2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Splices\",\n         \"Suffixed Splices\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"ex2 (in Antiquotation Annotations)\":\n    [{\"id\": \"ex2-_LPAR_in-Antiquotation-Annotations_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#ex2-_LPAR_in-Antiquotation-Annotations_RPAR_\":\n       {\"display\": \"ex2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Quasiquotation\",\n         \"Antiquotation Annotations\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"ex1 (in Suffixed Splices)\":\n    [{\"id\": \"ex1-_LPAR_in-Suffixed-Splices_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#ex1-_LPAR_in-Suffixed-Splices_RPAR_\":\n       {\"display\": \"ex1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Splices\",\n         \"Suffixed Splices\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"ex1 (in Antiquotation Annotations)\":\n    [{\"id\": \"ex1-_LPAR_in-Antiquotation-Annotations_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#ex1-_LPAR_in-Antiquotation-Annotations_RPAR_\":\n       {\"display\": \"ex1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Quotation\",\n         \"Quasiquotation\",\n         \"Antiquotation Annotations\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"everyOther (in Recursive Equational Lemmas)\":\n    [{\"id\": \"everyOther-_LPAR_in-Recursive-Equational-Lemmas_RPAR_\",\n      \"data\":\n      {\"/Elaboration-and-Compilation/#everyOther-_LPAR_in-Recursive-Equational-Lemmas_RPAR_\":\n       {\"display\": \"everyOther\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Elaboration and Compilation\",\n         \"Elaboration Results\",\n         \"Recursive Equational Lemmas\"]}},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"even (in Mutual Structural Recursion Over Non-Mutual Types)\":\n    [{\"id\":\n      \"even-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#even-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_\":\n       {\"display\": \"even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Non-Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"emptyIsEmpty (in Extending  trivial)\":\n    [{\"id\": \"emptyIsEmpty-_LPAR_in-Extending--trivial_RPAR_\",\n      \"data\":\n      {\"/Tactic-Proofs/Custom-Tactics/#emptyIsEmpty-_LPAR_in-Extending--trivial_RPAR_\":\n       {\"display\": \"emptyIsEmpty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Tactic Proofs\",\n         \"Custom Tactics\",\n         \"Tactic Macros\",\n         \"Extensible Tactic Macros\",\n         \"Extending  trivial\"]}},\n      \"address\": \"/Tactic-Proofs/Custom-Tactics/\"}],\n    \"elabNotType (in Avoiding a Type)\":\n    [{\"id\": \"elabNotType-_LPAR_in-Avoiding-a-Type_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Elaborators/#elabNotType-_LPAR_in-Avoiding-a-Type_RPAR_\":\n       {\"display\": \"elabNotType\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Elaborators\",\n         \"Term Elaborators\",\n         \"Avoiding a Type\"]}},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"e (in Duplicated Terms in Notation Expansion)\":\n    [{\"id\": \"e-_LPAR_in-Duplicated-Terms-in-Notation-Expansion_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Notations/#e-_LPAR_in-Duplicated-Terms-in-Notation-Expansion_RPAR_\":\n       {\"display\": \"e\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Notations\",\n         \"Duplicated Terms in Notation Expansion\"]}},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"dup (in Duplicated Terms in Notation Expansion)\":\n    [{\"id\": \"dup-_LPAR_in-Duplicated-Terms-in-Notation-Expansion_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Notations/#dup-_LPAR_in-Duplicated-Terms-in-Notation-Expansion_RPAR_\":\n       {\"display\": \"dup\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Notations\",\n         \"Duplicated Terms in Notation Expansion\"]}},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"double_spec (in Schematic Variables)\":\n    [{\"id\": \"double_spec-_LPAR_in-Schematic-Variables_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#double_spec-_LPAR_in-Schematic-Variables_RPAR_\":\n       {\"display\": \"double_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Specification Lemmas\",\n         \"Schematic Variables\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"double_spec (in Schematic Postconditions)\":\n    [{\"id\": \"double_spec-_LPAR_in-Schematic-Postconditions_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#double_spec-_LPAR_in-Schematic-Postconditions_RPAR_\":\n       {\"display\": \"double_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"Schematic Postconditions\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"double_neg_elim (in Using  #print axioms  with  #guard_msgs)\":\n    [{\"id\":\n      \"double_neg_elim-_LPAR_in-Using--___print-axioms--with--___guard_msgs_RPAR_\",\n      \"data\":\n      {\"/Axioms/#double_neg_elim-_LPAR_in-Using--___print-axioms--with--___guard_msgs_RPAR_\":\n       {\"display\": \"double_neg_elim\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Displaying Axiom Dependencies\",\n         \"Using  #print axioms  with  #guard_msgs\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"double_inj (in Injectivity Patterns)\":\n    [{\"id\": \"double_inj-_LPAR_in-Injectivity-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#double_inj-_LPAR_in-Injectivity-Patterns_RPAR_\":\n       {\"display\": \"double_inj\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Injectivity Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"double (in Schematic Variables)\":\n    [{\"id\": \"double-_LPAR_in-Schematic-Variables_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#double-_LPAR_in-Schematic-Variables_RPAR_\":\n       {\"display\": \"double\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Specification Lemmas\",\n         \"Schematic Variables\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"double (in Schematic Postconditions)\":\n    [{\"id\": \"double-_LPAR_in-Schematic-Postconditions_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#double-_LPAR_in-Schematic-Postconditions_RPAR_\":\n       {\"display\": \"double\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"Schematic Postconditions\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"double (in Injectivity Patterns)\":\n    [{\"id\": \"double-_LPAR_in-Injectivity-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#double-_LPAR_in-Injectivity-Patterns_RPAR_\":\n       {\"display\": \"double\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Injectivity Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"div_trans (in Inspecting Patterns)\":\n    [{\"id\": \"div_trans-_LPAR_in-Inspecting-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#div_trans-_LPAR_in-Inspecting-Patterns_RPAR_\":\n       {\"display\": \"div_trans\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Inspecting Patterns\",\n         \"Inspecting Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"div.eq2 (in Division by Iterated Subtraction: Termination Proof)\":\n    [{\"id\":\n      \"div___eq2-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#div___eq2-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\":\n       {\"display\": \"div.eq2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"div.eq1 (in Division by Iterated Subtraction: Termination Proof)\":\n    [{\"id\":\n      \"div___eq1-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#div___eq1-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\":\n       {\"display\": \"div.eq1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"div.eq0 (in Division by Iterated Subtraction: Termination Proof)\":\n    [{\"id\":\n      \"div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_-next\":\n       {\"display\": \"div.eq0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]},\n       \"/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\":\n       {\"display\": \"div.eq0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_-next\":\n       {\"display\": \"div.eq0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]},\n       \"/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\":\n       {\"display\": \"div.eq0\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"div (in Division by Iterated Subtraction: Termination Proof)\":\n    [{\"id\":\n      \"div-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#div-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_\":\n       {\"display\": \"div\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Theory and Construction\",\n         \"Division by Iterated Subtraction: Termination Proof\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"div (in Division by Iterated Subtraction)\":\n    [{\"id\": \"div-_LPAR_in-Division-by-Iterated-Subtraction_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#div-_LPAR_in-Division-by-Iterated-Subtraction_RPAR_\":\n       {\"display\": \"div\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Division by Iterated Subtraction\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"discardElems (in Memory Re-Use in IR)\":\n    [{\"id\": \"discardElems-_LPAR_in-Memory-Re-Use-in-IR_RPAR_\",\n      \"data\":\n      {\"/Run-Time-Code/Reference-Counting/#discardElems-_LPAR_in-Memory-Re-Use-in-IR_RPAR_\":\n       {\"display\": \"discardElems\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Run-Time Code\",\n         \"Reference Counting\",\n         \"Compiler IR\",\n         \"Memory Re-Use in IR\"]}},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"deriveIsEnum (in Deriving Handlers)\":\n    [{\"id\": \"deriveIsEnum-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#deriveIsEnum-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"deriveIsEnum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"decreasingCorrect'' (in Patterns for Constructors)\":\n    [{\"id\":\n      \"decreasingCorrect______-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#decreasingCorrect______-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"decreasingCorrect''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"decreasingCorrect' (in Patterns for Constructors)\":\n    [{\"id\": \"decreasingCorrect___-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#decreasingCorrect___-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"decreasingCorrect'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"decreasingCorrect (in Patterns for Constructors)\":\n    [{\"id\": \"decreasingCorrect-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#decreasingCorrect-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"decreasingCorrect\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"decreasing (in Patterns for Constructors)\":\n    [{\"id\": \"decreasing-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#decreasing-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"decreasing\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"countdown.go (in Consuming Iterators Directly)\":\n    [{\"id\": \"countdown___go-_LPAR_in-Consuming-Iterators-Directly_RPAR_\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#countdown___go-_LPAR_in-Consuming-Iterators-Directly_RPAR_\":\n       {\"display\": \"go\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Consuming Iterators Directly\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"countdown' (in Structural Recursion vs Subtraction)\":\n    [{\"id\": \"countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_-next\":\n       {\"display\": \"countdown'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Structural Recursion vs Subtraction\"]},\n       \"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_\":\n       {\"display\": \"countdown'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Structural Recursion vs Subtraction\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_-next\":\n       {\"display\": \"countdown'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Structural Recursion vs Subtraction\"]},\n       \"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_\":\n       {\"display\": \"countdown'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Structural Recursion vs Subtraction\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"countdown' (in Structural Recursion and Definitional Equality)\":\n    [{\"id\":\n      \"countdown___-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_\":\n       {\"display\": \"countdown'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Structural Recursion and Definitional Equality\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"countdown (in Structural Recursion vs Subtraction)\":\n    [{\"id\": \"countdown-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#countdown-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_\":\n       {\"display\": \"countdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Structural Recursion vs Subtraction\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"countdown (in Structural Recursion and Definitional Equality)\":\n    [{\"id\":\n      \"countdown-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#countdown-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_\":\n       {\"display\": \"countdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Structural Recursion and Definitional Equality\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"countdown (in Redirecting Standard I/O to Strings)\":\n    [{\"id\": \"countdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_\",\n      \"data\":\n      {\"/IO/Files___-File-Handles___-and-Streams/#countdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_\":\n       {\"display\": \"countdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Files, File Handles, and Streams\",\n         \"Standard I/O\",\n         \"Redirecting Standard I/O to Strings\"]}},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"countdown (in Converting Iterators to Lists)\":\n    [{\"id\": \"countdown-_LPAR_in-Converting-Iterators-to-Lists_RPAR_\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#countdown-_LPAR_in-Converting-Iterators-to-Lists_RPAR_\":\n       {\"display\": \"countdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Converting Iterators to Lists\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"countdown (in Consuming Iterators in Loops)\":\n    [{\"id\": \"countdown-_LPAR_in-Consuming-Iterators-in-Loops_RPAR_\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#countdown-_LPAR_in-Consuming-Iterators-in-Loops_RPAR_\":\n       {\"display\": \"countdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Consuming Iterators in Loops\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"countdown (in Consuming Iterators Directly)\":\n    [{\"id\": \"countdown-_LPAR_in-Consuming-Iterators-Directly_RPAR_\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#countdown-_LPAR_in-Consuming-Iterators-Directly_RPAR_\":\n       {\"display\": \"countdown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Consuming Iterators Directly\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"count (in Universe monomorphism in auto-bound implicit parameters)\":\n    [{\"id\":\n      \"count-_LPAR_in-Universe-monomorphism-in-auto-bound-implicit-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#count-_LPAR_in-Universe-monomorphism-in-auto-bound-implicit-parameters_RPAR_\":\n       {\"display\": \"count\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe monomorphism in auto-bound implicit parameters\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"cos\":\n    [{\"id\": \"cos\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#cos\":\n       {\"display\": \"cos\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"Integrating  grind 's Features\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"coords (in Field Indices and Structure Inheritance)\":\n    [{\"id\": \"coords-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#coords-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\":\n       {\"display\": \"coords\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Field Indices and Structure Inheritance\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"constantIndex (in Ineligible decreasing parameters)\":\n    [{\"id\": \"constantIndex-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#constantIndex-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"constantIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"colors (in Mixing Collections)\":\n    [{\"id\": \"colors-_LPAR_in-Mixing-Collections_RPAR_\",\n      \"data\":\n      {\"/Iterators/#colors-_LPAR_in-Mixing-Collections_RPAR_\":\n       {\"display\": \"colors\",\n        \"context\":\n        [\"The Lean Language Reference\", \"Iterators\", \"Mixing Collections\"]}},\n      \"address\": \"/Iterators/\"}],\n    \"colors (in Cross-Phase Code Re-Use)\":\n    [{\"id\": \"colors-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#colors-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\":\n       {\"display\": \"colors\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"colors (in Avoiding Intermediate Structures)\":\n    [{\"id\": \"colors-_LPAR_in-Avoiding-Intermediate-Structures_RPAR_\",\n      \"data\":\n      {\"/Iterators/#colors-_LPAR_in-Avoiding-Intermediate-Structures_RPAR_\":\n       {\"display\": \"colors\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Avoiding Intermediate Structures\"]}},\n      \"address\": \"/Iterators/\"}],\n    \"color (in Explicit Root Namespace)\":\n    [{\"id\": \"color-_LPAR_in-Explicit-Root-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#color-_LPAR_in-Explicit-Root-Namespace_RPAR_\":\n       {\"display\": \"color\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Explicit Root Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"codes (in Mixing Collections)\":\n    [{\"id\": \"codes-_LPAR_in-Mixing-Collections_RPAR_\",\n      \"data\":\n      {\"/Iterators/#codes-_LPAR_in-Mixing-Collections_RPAR_\":\n       {\"display\": \"codes\",\n        \"context\":\n        [\"The Lean Language Reference\", \"Iterators\", \"Mixing Collections\"]}},\n      \"address\": \"/Iterators/\"}],\n    \"codes (in Avoiding Intermediate Structures)\":\n    [{\"id\": \"codes-_LPAR_in-Avoiding-Intermediate-Structures_RPAR_\",\n      \"data\":\n      {\"/Iterators/#codes-_LPAR_in-Avoiding-Intermediate-Structures_RPAR_\":\n       {\"display\": \"codes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Avoiding Intermediate Structures\"]}},\n      \"address\": \"/Iterators/\"}],\n    \"bump_correct' (in Stateful Proofs)\":\n    [{\"id\": \"bump_correct___-_LPAR_in-Stateful-Proofs_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Proof-Mode/#bump_correct___-_LPAR_in-Stateful-Proofs_RPAR_\":\n       {\"display\": \"bump_correct'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Proof Mode\",\n         \"Stateful Proofs\"]}},\n      \"address\": \"/The--mvcgen--tactic/Proof-Mode/\"}],\n    \"bump_correct (in Stateful Proofs)\":\n    [{\"id\": \"bump_correct-_LPAR_in-Stateful-Proofs_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Proof-Mode/#bump_correct-_LPAR_in-Stateful-Proofs_RPAR_\":\n       {\"display\": \"bump_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Proof Mode\",\n         \"Stateful Proofs\"]}},\n      \"address\": \"/The--mvcgen--tactic/Proof-Mode/\"}],\n    \"bump (in Stateful Proofs)\":\n    [{\"id\": \"bump-_LPAR_in-Stateful-Proofs_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Proof-Mode/#bump-_LPAR_in-Stateful-Proofs_RPAR_\":\n       {\"display\": \"bump\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Proof Mode\",\n         \"Stateful Proofs\"]}},\n      \"address\": \"/The--mvcgen--tactic/Proof-Mode/\"}],\n    \"broccoli (in Using  Ord  Instances for  LT  and  LE  Instances)\":\n    [{\"id\":\n      \"broccoli-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Basic-Classes/#broccoli-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\":\n       {\"display\": \"broccoli\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Basic Classes\",\n         \"Ordering\",\n         \"Using  Ord  Instances for  LT  and  LE  Instances\"]}},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"boolCases (in Matching, With and Without Generalization)\":\n    [{\"id\":\n      \"boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_-next\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_-next\":\n       {\"display\": \"boolCases\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Generalization\",\n         \"Matching, With and Without Generalization\"]},\n       \"/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_\":\n       {\"display\": \"boolCases\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Generalization\",\n         \"Matching, With and Without Generalization\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"},\n     {\"id\":\n      \"boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_-next\":\n       {\"display\": \"boolCases\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Generalization\",\n         \"Matching, With and Without Generalization\"]},\n       \"/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_\":\n       {\"display\": \"boolCases\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Generalization\",\n         \"Matching, With and Without Generalization\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"bogus\":\n    [{\"id\": \"bogus\",\n      \"data\":\n      {\"/Introduction/#bogus\":\n       {\"display\": \"bogus\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Lean Code\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"binarySearch.go (in Array Indexing)\":\n    [{\"id\": \"binarySearch___go-_LPAR_in-Array-Indexing_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#binarySearch___go-_LPAR_in-Array-Indexing_RPAR_\":\n       {\"display\": \"go\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Inferring Well-Founded Recursion\",\n         \"Array Indexing\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"binarySearch (in Array Indexing)\":\n    [{\"id\": \"binarySearch-_LPAR_in-Array-Indexing_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#binarySearch-_LPAR_in-Array-Indexing_RPAR_\":\n       {\"display\": \"binarySearch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Inferring Well-Founded Recursion\",\n         \"Array Indexing\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"bigSum (in Creating and Tracking Proofs That Trust the Compiler)\":\n    [{\"id\":\n      \"bigSum-_LPAR_in-Creating-and-Tracking-Proofs-That-Trust-the-Compiler_RPAR_\",\n      \"data\":\n      {\"/Axioms/#bigSum-_LPAR_in-Creating-and-Tracking-Proofs-That-Trust-the-Compiler_RPAR_\":\n       {\"display\": \"bigSum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Standard Axioms\",\n         \"Creating and Tracking Proofs That Trust the Compiler\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"better_double_spec (in Schematic Postconditions)\":\n    [{\"id\": \"better_double_spec-_LPAR_in-Schematic-Postconditions_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#better_double_spec-_LPAR_in-Schematic-Postconditions_RPAR_\":\n       {\"display\": \"better_double_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"Schematic Postconditions\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"asString (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"asString-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#asString-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"asString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"arbitrary! (in One vs. Two Sets of Macro Rules)\":\n    [{\"id\": \"arbitrary___-_LPAR_in-One-vs___-Two-Sets-of-Macro-Rules_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#arbitrary___-_LPAR_in-One-vs___-Two-Sets-of-Macro-Rules_RPAR_\":\n       {\"display\": \"arbitrary!\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Defining Macros\",\n         \"The  macro_rules  Command\",\n         \"One vs. Two Sets of Macro Rules\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"append (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"append-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#append-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"append\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"answer_eq_other (in Partial Functions in Proofs)\":\n    [{\"id\": \"answer_eq_other-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#answer_eq_other-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\":\n       {\"display\": \"answer_eq_other\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Partial Functions\",\n         \"Partial Functions in Proofs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"answerUser (in Partial Functions in Proofs)\":\n    [{\"id\": \"answerUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#answerUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\":\n       {\"display\": \"answerUser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Partial Functions\",\n         \"Partial Functions in Proofs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"answerOtherUser (in Partial Functions in Proofs)\":\n    [{\"id\": \"answerOtherUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#answerOtherUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_\":\n       {\"display\": \"answerOtherUser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Partial Functions\",\n         \"Partial Functions in Proofs\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"allWeekdays' (in Implementing Ranges)\":\n    [{\"id\": \"allWeekdays___-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#allWeekdays___-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"allWeekdays'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"allWeekdays (in Implementing Ranges)\":\n    [{\"id\": \"allWeekdays-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#allWeekdays-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"allWeekdays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"allNats (in Converting Infinite Iterators to Lists)\":\n    [{\"id\":\n      \"allNats-_LPAR_in-Converting-Infinite-Iterators-to-Lists_RPAR_-next\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#allNats-_LPAR_in-Converting-Infinite-Iterators-to-Lists_RPAR_-next\":\n       {\"display\": \"allNats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Converting Infinite Iterators to Lists\"]},\n       \"/Iterators/Consuming-Iterators/#allNats-_LPAR_in-Converting-Infinite-Iterators-to-Lists_RPAR_\":\n       {\"display\": \"allNats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Converting Infinite Iterators to Lists\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"},\n     {\"id\": \"allNats-_LPAR_in-Converting-Infinite-Iterators-to-Lists_RPAR_\",\n      \"data\":\n      {\"/Iterators/Consuming-Iterators/#allNats-_LPAR_in-Converting-Infinite-Iterators-to-Lists_RPAR_-next\":\n       {\"display\": \"allNats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Converting Infinite Iterators to Lists\"]},\n       \"/Iterators/Consuming-Iterators/#allNats-_LPAR_in-Converting-Infinite-Iterators-to-Lists_RPAR_\":\n       {\"display\": \"allNats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Consuming Iterators\",\n         \"Converting Infinite Iterators to Lists\"]}},\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"afterVarying (in Ineligible decreasing parameters)\":\n    [{\"id\": \"afterVarying-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#afterVarying-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"afterVarying\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"adminUser (in Generalized Field Notation)\":\n    [{\"id\": \"adminUser-_LPAR_in-Generalized-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Terms/Function-Application/#adminUser-_LPAR_in-Generalized-Field-Notation_RPAR_\":\n       {\"display\": \"adminUser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Function Application\",\n         \"Generalized Field Notation\",\n         \"Generalized Field Notation\"]}},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"add_spec_pre\":\n    [{\"id\": \"add_spec_pre\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#add_spec_pre\":\n       {\"display\": \"add_spec_pre\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"An Advanced Note About Pure Preconditions and a Notion of Frame Rule\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"add_spec_hyp\":\n    [{\"id\": \"add_spec_hyp\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#add_spec_hyp\":\n       {\"display\": \"add_spec_hyp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"An Advanced Note About Pure Preconditions and a Notion of Frame Rule\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"addThree (in Printing Axioms of Simple Definitions)\":\n    [{\"id\": \"addThree-_LPAR_in-Printing-Axioms-of-Simple-Definitions_RPAR_\",\n      \"data\":\n      {\"/Axioms/#addThree-_LPAR_in-Printing-Axioms-of-Simple-Definitions_RPAR_\":\n       {\"display\": \"addThree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Displaying Axiom Dependencies\",\n         \"Printing Axioms of Simple Definitions\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"addPairs (in Local Instances)\":\n    [{\"id\": \"addPairs-_LPAR_in-Local-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#addPairs-_LPAR_in-Local-Instances_RPAR_\":\n       {\"display\": \"addPairs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"addPairs (in Local Instances Have Priority)\":\n    [{\"id\": \"addPairs-_LPAR_in-Local-Instances-Have-Priority_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#addPairs-_LPAR_in-Local-Instances-Have-Priority_RPAR_\":\n       {\"display\": \"addPairs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances Have Priority\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"addOp_ok_spec\":\n    [{\"id\": \"addOp_ok_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#addOp_ok_spec\":\n       {\"display\": \"addOp_ok_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"addOp\":\n    [{\"id\": \"addOp\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#addOp\":\n       {\"display\": \"addOp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"addFirstThird (in Idiom Brackets)\":\n    [{\"id\": \"addFirstThird-_LPAR_in-Idiom-Brackets_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Macros/#addFirstThird-_LPAR_in-Idiom-Brackets_RPAR_\":\n       {\"display\": \"addFirstThird\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Macros\",\n         \"Defining Macros\",\n         \"The  macro_rules  Command\",\n         \"Idiom Brackets\"]}},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"addAll (in Section Variables)\":\n    [{\"id\": \"addAll-_LPAR_in-Section-Variables_RPAR_-next\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_-next\":\n       {\"display\": \"addAll\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Section Variables\"]},\n       \"/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_\":\n       {\"display\": \"addAll\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Section Variables\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"},\n     {\"id\": \"addAll-_LPAR_in-Section-Variables_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_-next\":\n       {\"display\": \"addAll\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Section Variables\"]},\n       \"/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_\":\n       {\"display\": \"addAll\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Section Variables\",\n         \"Section Variables\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"addAlias'' (in Modifying Values in Maps)\":\n    [{\"id\": \"addAlias______-_LPAR_in-Modifying-Values-in-Maps_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#addAlias______-_LPAR_in-Modifying-Values-in-Maps_RPAR_\":\n       {\"display\": \"addAlias''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Suitable Operators for Uniqueness\",\n         \"Modifying Values in Maps\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"addAlias' (in Modifying Values in Maps)\":\n    [{\"id\": \"addAlias___-_LPAR_in-Modifying-Values-in-Maps_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#addAlias___-_LPAR_in-Modifying-Values-in-Maps_RPAR_\":\n       {\"display\": \"addAlias'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Suitable Operators for Uniqueness\",\n         \"Modifying Values in Maps\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"addAlias (in Modifying Values in Maps)\":\n    [{\"id\": \"addAlias-_LPAR_in-Modifying-Values-in-Maps_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#addAlias-_LPAR_in-Modifying-Values-in-Maps_RPAR_\":\n       {\"display\": \"addAlias\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Suitable Operators for Uniqueness\",\n         \"Modifying Values in Maps\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"add' (in Recursion vs Recursors)\":\n    [{\"id\": \"add___-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#add___-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"add'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"add' (in Integer Negation and Addition)\":\n    [{\"id\": \"add___-_LPAR_in-Integer-Negation-and-Addition_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#add___-_LPAR_in-Integer-Negation-and-Addition_RPAR_\":\n       {\"display\": \"add'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Eliminating Quotients\",\n         \"Integer Negation and Addition\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"add (in Recursion vs Recursors)\":\n    [{\"id\": \"add-_LPAR_in-Recursion-vs-Recursors_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#add-_LPAR_in-Recursion-vs-Recursors_RPAR_\":\n       {\"display\": \"add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Recursion vs Recursors\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"add (in Parameter Scope)\":\n    [{\"id\": \"add-_LPAR_in-Parameter-Scope_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#add-_LPAR_in-Parameter-Scope_RPAR_\":\n       {\"display\": \"add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Bracketed Parameter Bindings\",\n         \"Parameter Scope\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"add (in Match Patterns Follow Reduction)\":\n    [{\"id\": \"add-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#add-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_\":\n       {\"display\": \"add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Custom Pattern Functions\",\n         \"Match Patterns Follow Reduction\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"ack (in Termination Proof Tactics During Inference)\":\n    [{\"id\": \"ack-_LPAR_in-Termination-Proof-Tactics-During-Inference_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#ack-_LPAR_in-Termination-Proof-Tactics-During-Inference_RPAR_\":\n       {\"display\": \"ack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Inferring Well-Founded Recursion\",\n         \"Termination Proof Tactics During Inference\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"ack (in No Backtracking of Lexicographic Order)\":\n    [{\"id\": \"ack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#ack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_\":\n       {\"display\": \"ack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Default Termination Proof Tactic\",\n         \"No Backtracking of Lexicographic Order\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"ack (in Monadic functions)\":\n    [{\"id\": \"ack-_LPAR_in-Monadic-functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#ack-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"ack\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"accessControl (in Throwing and Catching Errors)\":\n    [{\"id\": \"accessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_\",\n      \"data\":\n      {\"/IO/Logical-Model/#accessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_\":\n       {\"display\": \"accessControl\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"IO\",\n         \"Logical Model\",\n         \"Errors and Error Handling in  IO\",\n         \"Throwing and Catching Errors\"]}},\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"acc_thd (in Iterating Over Triples)\":\n    [{\"id\": \"acc_thd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#acc_thd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"acc_thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"acc_snd (in Iterating Over Triples)\":\n    [{\"id\": \"acc_snd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#acc_snd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"acc_snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"acc_fst (in Iterating Over Triples)\":\n    [{\"id\": \"acc_fst-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#acc_fst-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"acc_fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"acc_done (in Iterating Over Triples)\":\n    [{\"id\": \"acc_done-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#acc_done-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"acc_done\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"abcs (in Atomic Types and  Repr)\":\n    [{\"id\": \"abcs-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#abcs-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"abcs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"abc (in Iterating Over Triples)\":\n    [{\"id\": \"abc-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#abc-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"abc\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"abc (in Custom Slices)\":\n    [{\"id\": \"abc-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#abc-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"abc\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"abc (in Atomic Types and  Repr)\":\n    [{\"id\": \"abc-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#abc-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"abc\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"aNonemptySumInstance (in Implicit and Explicit Parameters to Instances)\":\n    [{\"id\":\n      \"aNonemptySumInstance-_LPAR_in-Implicit-and-Explicit-Parameters-to-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#aNonemptySumInstance-_LPAR_in-Implicit-and-Explicit-Parameters-to-Instances_RPAR_\":\n       {\"display\": \"aNonemptySumInstance\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Instance Parameters and Synthesis\",\n         \"Implicit and Explicit Parameters to Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"_private.Manual.Language.InductiveTypes.Structures.0.NatStringBimap.mk (in Modifiers on structure constructor)\":\n    [{\"id\":\n      \"_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Modifiers on structure constructor\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.values\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___values\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___values\":\n       {\"display\": \"values\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.size_keys'\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys___\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys___\":\n       {\"display\": \"size_keys'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.size_keys\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.mem_indices_of_mem\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___mem_indices_of_mem\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___mem_indices_of_mem\":\n       {\"display\": \"mem_indices_of_mem\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.keys\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___keys\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___keys\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.indices\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___indices\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___indices\":\n       {\"display\": \"indices\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem_indices_lt\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_indices_lt\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_indices_lt\":\n       {\"display\": \"getElem_indices_lt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem_def\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_def\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_def\":\n       {\"display\": \"getElem_def\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem?_def\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def\":\n       {\"display\": \"getElem?_def\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem!_def\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def-next\":\n       {\"display\": \"getElem!_def\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.WF'\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF___\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF___\":\n       {\"display\": \"WF'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.WF\":\n    [{\"id\":\n      \"_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.xs (in Exporting Private Definitions)\":\n    [{\"id\": \"_private___0___xs-_LPAR_in-Exporting-Private-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___xs-_LPAR_in-Exporting-Private-Definitions_RPAR_\":\n       {\"display\": \"xs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exporting Private Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.toPalindrome (in Cross-Phase Code Re-Use)\":\n    [{\"id\":\n      \"_private___0___toPalindrome-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___toPalindrome-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\":\n       {\"display\": \"toPalindrome\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.secret (in Private Field Values)\":\n    [{\"id\": \"_private___0___secret-_LPAR_in-Private-Field-Values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#_private___0___secret-_LPAR_in-Private-Field-Values_RPAR_\":\n       {\"display\": \"secret\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Field Values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"_private.0.revArrays (in Meta Definitions)\":\n    [{\"id\": \"_private___0___revArrays-_LPAR_in-Meta-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___revArrays-_LPAR_in-Meta-Definitions_RPAR_-next\":\n       {\"display\": \"revArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Meta Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___revArrays-_LPAR_in-Meta-Definitions_RPAR_\":\n       {\"display\": \"revArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Meta Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"_private___0___revArrays-_LPAR_in-Meta-Definitions_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___revArrays-_LPAR_in-Meta-Definitions_RPAR_-next\":\n       {\"display\": \"revArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Meta Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___revArrays-_LPAR_in-Meta-Definitions_RPAR_\":\n       {\"display\": \"revArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Meta Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.palArrays (in Cross-Phase Code Re-Use)\":\n    [{\"id\": \"_private___0___palArrays-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___palArrays-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_-next\":\n       {\"display\": \"palArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]},\n       \"/Source-Files-and-Modules/#_private___0___palArrays-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\":\n       {\"display\": \"palArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\":\n      \"_private___0___palArrays-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___palArrays-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_-next\":\n       {\"display\": \"palArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]},\n       \"/Source-Files-and-Modules/#_private___0___palArrays-_LPAR_in-Cross-Phase-Code-Re-Use_RPAR_\":\n       {\"display\": \"palArrays\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"The Meta Phase\",\n         \"Cross-Phase Code Re-Use\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.greeting (in Private and Public Definitions)\":\n    [{\"id\":\n      \"_private___0___greeting-_LPAR_in-Private-and-Public-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greeting-_LPAR_in-Private-and-Public-Definitions_RPAR_\":\n       {\"display\": \"greeting\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Private and Public Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.greetTwice_is_greet_twice (in Exposed and Unexposed Definitions)\":\n    [{\"id\":\n      \"_private___0___greetTwice_is_greet_twice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greetTwice_is_greet_twice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\":\n       {\"display\": \"greetTwice_is_greet_twice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___greetTwice_is_greet_twice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\":\n       {\"display\": \"greetTwice_is_greet_twice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\":\n      \"_private___0___greetTwice_is_greet_twice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greetTwice_is_greet_twice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\":\n       {\"display\": \"greetTwice_is_greet_twice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___greetTwice_is_greet_twice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\":\n       {\"display\": \"greetTwice_is_greet_twice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.greetTwice (in Private and Public Definitions)\":\n    [{\"id\":\n      \"_private___0___greetTwice-_LPAR_in-Private-and-Public-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Private-and-Public-Definitions_RPAR_-next\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Private and Public Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Private-and-Public-Definitions_RPAR_\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Private and Public Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\":\n      \"_private___0___greetTwice-_LPAR_in-Private-and-Public-Definitions_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Private-and-Public-Definitions_RPAR_-next\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Private and Public Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Private-and-Public-Definitions_RPAR_\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Private and Public Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.greetTwice (in Exposed and Unexposed Definitions)\":\n    [{\"id\":\n      \"_private___0___greetTwice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\":\n      \"_private___0___greetTwice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_-next\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]},\n       \"/Source-Files-and-Modules/#_private___0___greetTwice-_LPAR_in-Exposed-and-Unexposed-Definitions_RPAR_\":\n       {\"display\": \"greetTwice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exposed and Unexposed Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.drop2 (in Exporting Private Definitions)\":\n    [{\"id\":\n      \"_private___0___drop2-_LPAR_in-Exporting-Private-Definitions_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___drop2-_LPAR_in-Exporting-Private-Definitions_RPAR_\":\n       {\"display\": \"drop2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Exporting Private Definitions\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.Tree.count_leaf_eq_zero (in Importing Private Information)\":\n    [{\"id\":\n      \"_private___0___Tree___count_leaf_eq_zero-_LPAR_in-Importing-Private-Information_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___Tree___count_leaf_eq_zero-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"Tree.count_leaf_eq_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#_private___0___Tree___count_leaf_eq_zero-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"Tree.count_leaf_eq_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\":\n      \"_private___0___Tree___count_leaf_eq_zero-_LPAR_in-Importing-Private-Information_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#_private___0___Tree___count_leaf_eq_zero-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"Tree.count_leaf_eq_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#_private___0___Tree___count_leaf_eq_zero-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"Tree.count_leaf_eq_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"_private.0.State.toString (in Private Methods)\":\n    [{\"id\":\n      \"_private___0___State___toString-_LPAR_in-Private-Methods_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#_private___0___State___toString-_LPAR_in-Private-Methods_RPAR_-next\":\n       {\"display\": \"State.toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]},\n       \"/The-Type-System/Inductive-Types/#_private___0___State___toString-_LPAR_in-Private-Methods_RPAR_\":\n       {\"display\": \"State.toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"_private___0___State___toString-_LPAR_in-Private-Methods_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#_private___0___State___toString-_LPAR_in-Private-Methods_RPAR_-next\":\n       {\"display\": \"State.toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]},\n       \"/The-Type-System/Inductive-Types/#_private___0___State___toString-_LPAR_in-Private-Methods_RPAR_\":\n       {\"display\": \"State.toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"_private.0.State.mk (in Private Methods)\":\n    [{\"id\": \"_private___0___State___mk-_LPAR_in-Private-Methods_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#_private___0___State___mk-_LPAR_in-Private-Methods_RPAR_-next\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]},\n       \"/The-Type-System/Inductive-Types/#_private___0___State___mk-_LPAR_in-Private-Methods_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"_private___0___State___mk-_LPAR_in-Private-Methods_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#_private___0___State___mk-_LPAR_in-Private-Methods_RPAR_-next\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]},\n       \"/The-Type-System/Inductive-Types/#_private___0___State___mk-_LPAR_in-Private-Methods_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"_private.0.IndexMap.values\":\n    [{\"id\": \"_private___0___IndexMap___values\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___values\":\n       {\"display\": \"values\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.size_keys'\":\n    [{\"id\": \"_private___0___IndexMap___size_keys___\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___-next\":\n       {\"display\": \"size_keys'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___\":\n       {\"display\": \"size_keys'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___size_keys___-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___-next\":\n       {\"display\": \"size_keys'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___\":\n       {\"display\": \"size_keys'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.size_keys\":\n    [{\"id\": \"_private___0___IndexMap___size_keys-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next-next\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___size_keys-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next-next\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___size_keys\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next-next\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.mem_indices_of_mem\":\n    [{\"id\": \"_private___0___IndexMap___mem_indices_of_mem\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___mem_indices_of_mem\":\n       {\"display\": \"mem_indices_of_mem\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.keys\":\n    [{\"id\": \"_private___0___IndexMap___keys-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next-next\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___keys\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next-next\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___keys-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next-next\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.indices\":\n    [{\"id\": \"_private___0___IndexMap___indices\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___indices\":\n       {\"display\": \"indices\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.getElem_indices_lt\":\n    [{\"id\": \"_private___0___IndexMap___getElem_indices_lt\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem_indices_lt\":\n       {\"display\": \"getElem_indices_lt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.getElem_def\":\n    [{\"id\": \"_private___0___IndexMap___getElem_def\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem_def\":\n       {\"display\": \"getElem_def\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.getElem?_def\":\n    [{\"id\": \"_private___0___IndexMap___getElem____def\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem____def\":\n       {\"display\": \"getElem?_def\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.getElem!_def\":\n    [{\"id\": \"_private___0___IndexMap___getElem____def-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem____def-next\":\n       {\"display\": \"getElem!_def\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.WF'\":\n    [{\"id\": \"_private___0___IndexMap___WF___\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF___\":\n       {\"display\": \"WF'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"_private.0.IndexMap.WF\":\n    [{\"id\": \"_private___0___IndexMap___WF\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___WF-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___WF-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"_private___0___IndexMap___WF-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"Z_mk'_respects_eq (in Manually Quotiented Integers)\":\n    [{\"id\": \"Z_mk____respects_eq-_LPAR_in-Manually-Quotiented-Integers_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z_mk____respects_eq-_LPAR_in-Manually-Quotiented-Integers_RPAR_\":\n       {\"display\": \"Z_mk'_respects_eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Manually Quotiented Integers\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.mk' (in Manually Quotiented Integers)\":\n    [{\"id\": \"Z___mk___-_LPAR_in-Manually-Quotiented-Integers_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___mk___-_LPAR_in-Manually-Quotiented-Integers_RPAR_\":\n       {\"display\": \"Z.mk'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Manually Quotiented Integers\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.mk (in The Integers as a Quotient Type)\":\n    [{\"id\": \"Z___mk-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___mk-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\":\n       {\"display\": \"Z.mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Introducing Quotients\",\n         \"The Integers as a Quotient Type\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.instSetoid (in The Integers as a Quotient Type)\":\n    [{\"id\": \"Z___instSetoid-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___instSetoid-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\":\n       {\"display\": \"Z.instSetoid\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Introducing Quotients\",\n         \"The Integers as a Quotient Type\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.eq.eqv (in The Integers as a Quotient Type)\":\n    [{\"id\": \"Z___eq___eqv-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___eq___eqv-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\":\n       {\"display\": \"Z.eq.eqv\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Introducing Quotients\",\n         \"The Integers as a Quotient Type\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.eq (in The Integers as a Quotient Type)\":\n    [{\"id\": \"Z___eq-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___eq-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\":\n       {\"display\": \"Z.eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Introducing Quotients\",\n         \"The Integers as a Quotient Type\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.canonical (in Manually Quotiented Integers)\":\n    [{\"id\": \"Z___canonical-_LPAR_in-Manually-Quotiented-Integers_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___canonical-_LPAR_in-Manually-Quotiented-Integers_RPAR_\":\n       {\"display\": \"canonical\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Manually Quotiented Integers\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.b (in Manually Quotiented Integers)\":\n    [{\"id\": \"Z___b-_LPAR_in-Manually-Quotiented-Integers_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___b-_LPAR_in-Manually-Quotiented-Integers_RPAR_\":\n       {\"display\": \"b\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Manually Quotiented Integers\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.add_neg_inverse (in Proofs About Quotients)\":\n    [{\"id\": \"Z___add_neg_inverse-_LPAR_in-Proofs-About-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___add_neg_inverse-_LPAR_in-Proofs-About-Quotients_RPAR_\":\n       {\"display\": \"Z.add_neg_inverse\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Proofs About Quotients\",\n         \"Proofs About Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z.a (in Manually Quotiented Integers)\":\n    [{\"id\": \"Z___a-_LPAR_in-Manually-Quotiented-Integers_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___a-_LPAR_in-Manually-Quotiented-Integers_RPAR_\":\n       {\"display\": \"a\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Manually Quotiented Integers\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z' (in The Integers as a Quotient Type)\":\n    [{\"id\": \"Z___-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z___-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\":\n       {\"display\": \"Z'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Introducing Quotients\",\n         \"The Integers as a Quotient Type\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z (in The Integers as a Quotient Type)\":\n    [{\"id\": \"Z-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_\":\n       {\"display\": \"Z\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotient API\",\n         \"Introducing Quotients\",\n         \"The Integers as a Quotient Type\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Z (in Manually Quotiented Integers)\":\n    [{\"id\": \"Z-_LPAR_in-Manually-Quotiented-Integers_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#Z-_LPAR_in-Manually-Quotiented-Integers_RPAR_\":\n       {\"display\": \"Z\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Alternatives to Quotient Types\",\n         \"Manually Quotiented Integers\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Yes.intro (in A true proposition)\":\n    [{\"id\": \"Yes___intro-_LPAR_in-A-true-proposition_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Yes___intro-_LPAR_in-A-true-proposition_RPAR_\":\n       {\"display\": \"intro\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A true proposition\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Yes (in A true proposition)\":\n    [{\"id\": \"Yes-_LPAR_in-A-true-proposition_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Yes-_LPAR_in-A-true-proposition_RPAR_\":\n       {\"display\": \"Yes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A true proposition\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Writer.write (in Dependent Coercion to Functions)\":\n    [{\"id\": \"Writer___write-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Writer___write-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\":\n       {\"display\": \"write\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Dependent Coercion to Functions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Writer.Writes (in Dependent Coercion to Functions)\":\n    [{\"id\": \"Writer___Writes-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Writer___Writes-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\":\n       {\"display\": \"Writes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Dependent Coercion to Functions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Writer (in Dependent Coercion to Functions)\":\n    [{\"id\": \"Writer-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Writer-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_\":\n       {\"display\": \"Writer\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Dependent Coercion to Functions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"WithParam.mk (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"WithParam___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#WithParam___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"WithParam'.zero (in Ineligible decreasing parameters)\":\n    [{\"id\":\n      \"WithParam______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#WithParam______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WithParam'.succ (in Ineligible decreasing parameters)\":\n    [{\"id\":\n      \"WithParam______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#WithParam______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WithParam' (in Ineligible decreasing parameters)\":\n    [{\"id\": \"WithParam___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#WithParam___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"WithParam'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WithParam (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"WithParam-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#WithParam-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"WithParam\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"WithCheck (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"WithCheck-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#WithCheck-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"WithCheck\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Weekday.we (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___we-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___we-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"we\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.tu (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___tu-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___tu-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"tu\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.toFin (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___toFin-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___toFin-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"Weekday.toFin\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.th (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___th-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___th-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"th\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.su (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___su-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___su-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"su\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.sa (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___sa-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___sa-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"sa\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.mo (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___mo-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___mo-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"mo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.fromFin (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___fromFin-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___fromFin-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"Weekday.fromFin\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday.fr (in Implementing Coercions)\":\n    [{\"id\": \"Weekday___fr-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday___fr-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"fr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Weekday (in Implementing Coercions)\":\n    [{\"id\": \"Weekday-_LPAR_in-Implementing-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Weekday-_LPAR_in-Implementing-Coercions_RPAR_\":\n       {\"display\": \"Weekday\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Implementing Coercions\",\n         \"Implementing Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Vehicle.wheels (in #print  and Structure Types)\":\n    [{\"id\": \"Vehicle___wheels-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Vehicle___wheels-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"wheels\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Vehicle (in #print  and Structure Types)\":\n    [{\"id\": \"Vehicle-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Vehicle-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"Vehicle\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Vegetable.size (in Using  Ord  Instances for  LT  and  LE  Instances)\":\n    [{\"id\":\n      \"Vegetable___size-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Basic-Classes/#Vegetable___size-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Basic Classes\",\n         \"Ordering\",\n         \"Using  Ord  Instances for  LT  and  LE  Instances\"]}},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Vegetable.color (in Using  Ord  Instances for  LT  and  LE  Instances)\":\n    [{\"id\":\n      \"Vegetable___color-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Basic-Classes/#Vegetable___color-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\":\n       {\"display\": \"color\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Basic Classes\",\n         \"Ordering\",\n         \"Using  Ord  Instances for  LT  and  LE  Instances\"]}},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Vegetable (in Using  Ord  Instances for  LT  and  LE  Instances)\":\n    [{\"id\":\n      \"Vegetable-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Basic-Classes/#Vegetable-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_\":\n       {\"display\": \"Vegetable\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Basic Classes\",\n         \"Ordering\",\n         \"Using  Ord  Instances for  LT  and  LE  Instances\"]}},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Veg.Leafy.spinach (in Exported Names)\":\n    [{\"id\": \"Veg___Leafy___spinach-_LPAR_in-Exported-Names_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Veg___Leafy___spinach-_LPAR_in-Exported-Names_RPAR_\":\n       {\"display\": \"spinach\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Exporting Names\",\n         \"Exported Names\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Veg.Leafy.cabbage (in Exported Names)\":\n    [{\"id\": \"Veg___Leafy___cabbage-_LPAR_in-Exported-Names_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Veg___Leafy___cabbage-_LPAR_in-Exported-Names_RPAR_\":\n       {\"display\": \"cabbage\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Exporting Names\",\n         \"Exported Names\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Veg.Leafy (in Exported Names)\":\n    [{\"id\": \"Veg___Leafy-_LPAR_in-Exported-Names_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Veg___Leafy-_LPAR_in-Exported-Names_RPAR_\":\n       {\"display\": \"Leafy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Exporting Names\",\n         \"Exported Names\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Vector.append_associative' (in Heterogeneous Equality)\":\n    [{\"id\":\n      \"Vector___append_associative___-_LPAR_in-Heterogeneous-Equality_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Propositional-Equality/#Vector___append_associative___-_LPAR_in-Heterogeneous-Equality_RPAR_\":\n       {\"display\": \"Vector.append_associative'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Heterogeneous Equality\",\n         \"Heterogeneous Equality\"]}},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Vector.append_associative (in Heterogeneous Equality)\":\n    [{\"id\":\n      \"Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_-next\",\n      \"data\":\n      {\"/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_-next\":\n       {\"display\": \"Vector.append_associative\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Heterogeneous Equality\",\n         \"Heterogeneous Equality\"]},\n       \"/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_\":\n       {\"display\": \"Vector.append_associative\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Heterogeneous Equality\",\n         \"Heterogeneous Equality\"]}},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"},\n     {\"id\":\n      \"Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_\",\n      \"data\":\n      {\"/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_-next\":\n       {\"display\": \"Vector.append_associative\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Heterogeneous Equality\",\n         \"Heterogeneous Equality\"]},\n       \"/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_\":\n       {\"display\": \"Vector.append_associative\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Heterogeneous Equality\",\n         \"Heterogeneous Equality\"]}},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Vacant (in A constructorless type)\":\n    [{\"id\": \"Vacant-_LPAR_in-A-constructorless-type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Vacant-_LPAR_in-A-constructorless-type_RPAR_\":\n       {\"display\": \"Vacant\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A constructorless type\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Utterance (in Reducibility and Instance Synthesis)\":\n    [{\"id\": \"Utterance-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Utterance-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\":\n       {\"display\": \"Utterance\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Instance Synthesis\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Username.validate.notOk (in Generalized Field Notation)\":\n    [{\"id\":\n      \"Username___validate___notOk-_LPAR_in-Generalized-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Terms/Function-Application/#Username___validate___notOk-_LPAR_in-Generalized-Field-Notation_RPAR_\":\n       {\"display\": \"notOk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Function Application\",\n         \"Generalized Field Notation\",\n         \"Generalized Field Notation\"]}},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Username.validate (in Generalized Field Notation)\":\n    [{\"id\": \"Username___validate-_LPAR_in-Generalized-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Terms/Function-Application/#Username___validate-_LPAR_in-Generalized-Field-Notation_RPAR_\":\n       {\"display\": \"Username.validate\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Function Application\",\n         \"Generalized Field Notation\",\n         \"Generalized Field Notation\"]}},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Username (in Generalized Field Notation)\":\n    [{\"id\": \"Username-_LPAR_in-Generalized-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Terms/Function-Application/#Username-_LPAR_in-Generalized-Field-Notation_RPAR_\":\n       {\"display\": \"Username\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Function Application\",\n         \"Generalized Field Notation\",\n         \"Generalized Field Notation\"]}},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"User.name (in Infix  Functor  and  Applicative  Operators)\":\n    [{\"id\":\n      \"User___name-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#User___name-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\":\n       {\"display\": \"name\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\",\n         \"Infix  Functor  and  Applicative  Operators\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"User.name\":\n    [{\"id\": \"User___name\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#User___name\":\n       {\"display\": \"name\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"User.favoriteNat (in Infix  Functor  and  Applicative  Operators)\":\n    [{\"id\":\n      \"User___favoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#User___favoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\":\n       {\"display\": \"favoriteNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\",\n         \"Infix  Functor  and  Applicative  Operators\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"User.favoriteNat\":\n    [{\"id\": \"User___favoriteNat\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#User___favoriteNat\":\n       {\"display\": \"favoriteNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"User (in Infix  Functor  and  Applicative  Operators)\":\n    [{\"id\": \"User-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#User-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_\":\n       {\"display\": \"User\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\",\n         \"Infix  Functor  and  Applicative  Operators\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"User\":\n    [{\"id\": \"User\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Syntax/#User\":\n       {\"display\": \"User\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Syntax\",\n         \"Infix Operators\",\n         \"Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Ty.nat (in Coercing to Function Types)\":\n    [{\"id\": \"Ty___nat-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Ty___nat-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"nat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Ty.interp (in Coercing to Function Types)\":\n    [{\"id\": \"Ty___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Ty___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Ty.interp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Ty.arr (in Coercing to Function Types)\":\n    [{\"id\": \"Ty___arr-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Ty___arr-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"arr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Ty (in Coercing to Function Types)\":\n    [{\"id\": \"Ty-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Ty-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Ty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Two.mk (in Spuriously mutual types)\":\n    [{\"id\": \"Two___mk-_LPAR_in-Spuriously-mutual-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Two___mk-_LPAR_in-Spuriously-mutual-types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Spuriously mutual types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Two (in Spuriously mutual types)\":\n    [{\"id\": \"Two-_LPAR_in-Spuriously-mutual-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Two-_LPAR_in-Spuriously-mutual-types_RPAR_\":\n       {\"display\": \"Two\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Spuriously mutual types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Twice.second (in Duplicate Evaluation in Coercions)\":\n    [{\"id\": \"Twice___second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#Twice___second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\":\n       {\"display\": \"second\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Duplicate Evaluation in Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"Twice.first_eq_second (in Duplicate Evaluation in Coercions)\":\n    [{\"id\":\n      \"Twice___first_eq_second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#Twice___first_eq_second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\":\n       {\"display\": \"first_eq_second\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Duplicate Evaluation in Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"Twice.first (in Duplicate Evaluation in Coercions)\":\n    [{\"id\": \"Twice___first-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#Twice___first-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\":\n       {\"display\": \"first\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Duplicate Evaluation in Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"Twice (in Duplicate Evaluation in Coercions)\":\n    [{\"id\": \"Twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#Twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_\":\n       {\"display\": \"Twice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Duplicate Evaluation in Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"Truthy.val (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Truthy___val-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Truthy___val-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Truthy.toBool (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Truthy___toBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Truthy___toBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"Truthy.toBool\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Truthy.isTrue (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Truthy___isTrue-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Truthy___isTrue-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"isTrue\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Truthy (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Truthy-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Truthy-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"Truthy\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"TripleSlice.triple (in Custom Slices)\":\n    [{\"id\": \"TripleSlice___triple-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TripleSlice___triple-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"triple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TripleSlice.stop (in Custom Slices)\":\n    [{\"id\": \"TripleSlice___stop-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TripleSlice___stop-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"stop\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TripleSlice.start (in Custom Slices)\":\n    [{\"id\": \"TripleSlice___start-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TripleSlice___start-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"start\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TripleSlice (in Custom Slices)\":\n    [{\"id\": \"TripleSlice-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TripleSlice-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"TripleSlice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TriplePos.thd (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___thd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___thd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.thd (in Custom Slices)\":\n    [{\"id\": \"TriplePos___thd-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TriplePos___thd-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TriplePos.snd (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___snd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___snd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.snd (in Custom Slices)\":\n    [{\"id\": \"TriplePos___snd-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TriplePos___snd-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TriplePos.fst (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___fst-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___fst-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.fst (in Custom Slices)\":\n    [{\"id\": \"TriplePos___fst-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TriplePos___fst-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TriplePos.done (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___done-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___done-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"done\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.done (in Custom Slices)\":\n    [{\"id\": \"TriplePos___done-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TriplePos___done-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"done\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TriplePos.Succ.thd (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___Succ___thd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___Succ___thd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.Succ.snd (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___Succ___snd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___Succ___snd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.Succ.fst (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___Succ___fst-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___Succ___fst-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos.Succ (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos___Succ-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos___Succ-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"TriplePos.Succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos (in Iterating Over Triples)\":\n    [{\"id\": \"TriplePos-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TriplePos-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"TriplePos\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TriplePos (in Custom Slices)\":\n    [{\"id\": \"TriplePos-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#TriplePos-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"TriplePos\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"TripleIterator.triple (in Iterating Over Triples)\":\n    [{\"id\": \"TripleIterator___triple-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TripleIterator___triple-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"triple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TripleIterator.pos (in Iterating Over Triples)\":\n    [{\"id\": \"TripleIterator___pos-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TripleIterator___pos-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"pos\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TripleIterator.IsPlausibleStep.yield (in Iterating Over Triples)\":\n    [{\"id\":\n      \"TripleIterator___IsPlausibleStep___yield-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TripleIterator___IsPlausibleStep___yield-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"yield\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TripleIterator.IsPlausibleStep.done (in Iterating Over Triples)\":\n    [{\"id\":\n      \"TripleIterator___IsPlausibleStep___done-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TripleIterator___IsPlausibleStep___done-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"done\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TripleIterator.IsPlausibleStep (in Iterating Over Triples)\":\n    [{\"id\":\n      \"TripleIterator___IsPlausibleStep-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TripleIterator___IsPlausibleStep-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"TripleIterator.IsPlausibleStep\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"TripleIterator (in Iterating Over Triples)\":\n    [{\"id\": \"TripleIterator-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#TripleIterator-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"TripleIterator\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple.thd (in Iterating Over Triples)\":\n    [{\"id\": \"Triple___thd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Triple___thd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple.thd (in Field Indices and Structure Inheritance)\":\n    [{\"id\":\n      \"Triple___thd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Triple___thd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\":\n       {\"display\": \"thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Field Indices and Structure Inheritance\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Triple.thd (in Custom Slices)\":\n    [{\"id\": \"Triple___thd-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Triple___thd-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"thd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Triple.snd (in Iterating Over Triples)\":\n    [{\"id\": \"Triple___snd-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Triple___snd-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple.snd (in Custom Slices)\":\n    [{\"id\": \"Triple___snd-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Triple___snd-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Triple.iter (in Iterating Over Triples)\":\n    [{\"id\": \"Triple___iter-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Triple___iter-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"Triple.iter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple.get? (in Iterating Over Triples)\":\n    [{\"id\": \"Triple___get___-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Triple___get___-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"Triple.get?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple.fst (in Iterating Over Triples)\":\n    [{\"id\": \"Triple___fst-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Triple___fst-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple.fst (in Custom Slices)\":\n    [{\"id\": \"Triple___fst-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Triple___fst-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Triple (in Iterating Over Triples)\":\n    [{\"id\": \"Triple-_LPAR_in-Iterating-Over-Triples_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Triple-_LPAR_in-Iterating-Over-Triples_RPAR_\":\n       {\"display\": \"Triple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over Triples\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Triple (in Field Indices and Structure Inheritance)\":\n    [{\"id\": \"Triple-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Triple-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\":\n       {\"display\": \"Triple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Field Indices and Structure Inheritance\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Triple (in Custom Slices)\":\n    [{\"id\": \"Triple-_LPAR_in-Custom-Slices_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Triple-_LPAR_in-Custom-Slices_RPAR_\":\n       {\"display\": \"Triple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Ranges and Slices\",\n         \"Custom Slices\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Triple\":\n    [{\"id\": \"Triple\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Triple\":\n       {\"display\": \"Triple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Tree.val (in Displaying Differences)\":\n    [{\"id\": \"Tree___val-_LPAR_in-Displaying-Differences_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Tree___val-_LPAR_in-Displaying-Differences_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Testing Output with  #guard_msgs\",\n         \"Displaying Differences\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Tree.rev' (in Monadic functions)\":\n    [{\"id\": \"Tree___rev___-_LPAR_in-Monadic-functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___rev___-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"Tree.rev'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.rev (in Monadic functions)\":\n    [{\"id\": \"Tree___rev-_LPAR_in-Monadic-functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___rev-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"Tree.rev\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.node (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Tree___node-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___node-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"node\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.map (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]},\n       \"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Tree.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.leaf (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Tree___leaf-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___leaf-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.leaf (in Importing Private Information)\":\n    [{\"id\": \"Tree___leaf-_LPAR_in-Importing-Private-Information_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Tree___leaf-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#Tree___leaf-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Tree___leaf-_LPAR_in-Importing-Private-Information_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Tree___leaf-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#Tree___leaf-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Tree.leaf (in Course-of-Values Tables)\":\n    [{\"id\": \"Tree___leaf-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___leaf-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.fastBEq (in Checking Equality with Pointers)\":\n    [{\"id\": \"Tree___fastBEq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___fastBEq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\":\n       {\"display\": \"Tree.fastBEq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Checking Equality with Pointers\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.empty (in Checking Equality with Pointers)\":\n    [{\"id\": \"Tree___empty-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___empty-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\":\n       {\"display\": \"empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Checking Equality with Pointers\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.cs (in Monadic functions)\":\n    [{\"id\": \"Tree___cs-_LPAR_in-Monadic-functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___cs-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"cs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.count (in Importing Private Information)\":\n    [{\"id\": \"Tree___count-_LPAR_in-Importing-Private-Information_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Tree___count-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"Tree.count\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#Tree___count-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"Tree.count\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Tree___count-_LPAR_in-Importing-Private-Information_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Tree___count-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"Tree.count\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#Tree___count-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"Tree.count\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Tree.brecOnTable (in Course-of-Values Tables)\":\n    [{\"id\": \"Tree___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"Tree.brecOnTable\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.brecOn' (in Course-of-Values Tables)\":\n    [{\"id\": \"Tree___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"Tree.brecOn'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.branches (in Displaying Differences)\":\n    [{\"id\": \"Tree___branches-_LPAR_in-Displaying-Differences_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Tree___branches-_LPAR_in-Displaying-Differences_RPAR_\":\n       {\"display\": \"branches\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Testing Output with  #guard_msgs\",\n         \"Displaying Differences\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Tree.branch (in Course-of-Values Tables)\":\n    [{\"id\": \"Tree___branch-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___branch-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"branch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.branch (in Checking Equality with Pointers)\":\n    [{\"id\": \"Tree___branch-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___branch-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\":\n       {\"display\": \"branch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Checking Equality with Pointers\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.big (in Displaying Differences)\":\n    [{\"id\": \"Tree___big-_LPAR_in-Displaying-Differences_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Tree___big-_LPAR_in-Displaying-Differences_RPAR_\":\n       {\"display\": \"Tree.big\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Testing Output with  #guard_msgs\",\n         \"Displaying Differences\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Tree.beq (in Checking Equality with Pointers)\":\n    [{\"id\": \"Tree___beq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___beq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\":\n       {\"display\": \"Tree.beq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Checking Equality with Pointers\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree.below' (in Course-of-Values Tables)\":\n    [{\"id\": \"Tree___below___-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree___below___-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"Tree.below'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Tree-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree (in Monadic functions)\":\n    [{\"id\": \"Tree-_LPAR_in-Monadic-functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree (in Importing Private Information)\":\n    [{\"id\": \"Tree-_LPAR_in-Importing-Private-Information_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Tree-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#Tree-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Tree-_LPAR_in-Importing-Private-Information_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Tree-_LPAR_in-Importing-Private-Information_RPAR_-next\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]},\n       \"/Source-Files-and-Modules/#Tree-_LPAR_in-Importing-Private-Information_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Importing Private Information\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Tree (in Displaying Differences)\":\n    [{\"id\": \"Tree-_LPAR_in-Displaying-Differences_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Tree-_LPAR_in-Displaying-Differences_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Testing Output with  #guard_msgs\",\n         \"Displaying Differences\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Tree (in Course-of-Values Tables)\":\n    [{\"id\": \"Tree-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Tree (in Checking Equality with Pointers)\":\n    [{\"id\": \"Tree-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Checking-Equality-with-Pointers_RPAR_\":\n       {\"display\": \"Tree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial and Unsafe Definitions\",\n         \"Unsafe Definitions\",\n         \"Checking Equality with Pointers\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Transformers.mkFresh_spec\":\n    [{\"id\": \"Transformers___mkFresh_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Transformers___mkFresh_spec\":\n       {\"display\": \"mkFresh_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Monad Transformers and Lifting\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Transformers.mkFreshN_spec\":\n    [{\"id\": \"Transformers___mkFreshN_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Transformers___mkFreshN_spec\":\n       {\"display\": \"mkFreshN_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Monad Transformers and Lifting\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Transformers.mkFreshN\":\n    [{\"id\": \"Transformers___mkFreshN\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Transformers___mkFreshN\":\n       {\"display\": \"mkFreshN\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Monad Transformers and Lifting\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Transformers.mkFresh\":\n    [{\"id\": \"Transformers___mkFresh\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Transformers___mkFresh\":\n       {\"display\": \"mkFresh\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Monad Transformers and Lifting\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Transformers.CounterM\":\n    [{\"id\": \"Transformers___CounterM\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Transformers___CounterM\":\n       {\"display\": \"CounterM\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Monad Transformers and Lifting\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Transformers.AppM\":\n    [{\"id\": \"Transformers___AppM\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Transformers___AppM\":\n       {\"display\": \"AppM\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Monad Transformers and Lifting\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Tm.zero (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___zero-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___zero-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.var (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___var-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___var-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"var\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.v (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___v-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___v-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Tm.v\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.succ (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___succ-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___succ-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.rep (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___rep-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___rep-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"rep\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.lam (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___lam-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___lam-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"lam\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.interp (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Tm.interp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm.app (in Coercing to Function Types)\":\n    [{\"id\": \"Tm___app-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm___app-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"app\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Tm (in Mutual strict positivity)\":\n    [{\"id\": \"Tm-_LPAR_in-Mutual-strict-positivity_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Tm-_LPAR_in-Mutual-strict-positivity_RPAR_\":\n       {\"display\": \"Tm\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Mutual strict positivity\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Tm (in Coercing to Function Types)\":\n    [{\"id\": \"Tm-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Tm-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Tm\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"ThreeChoices.yes (in An instance for a sum class)\":\n    [{\"id\": \"ThreeChoices___yes-_LPAR_in-An-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#ThreeChoices___yes-_LPAR_in-An-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"yes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"An instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"ThreeChoices.no (in An instance for a sum class)\":\n    [{\"id\": \"ThreeChoices___no-_LPAR_in-An-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#ThreeChoices___no-_LPAR_in-An-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"no\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"An instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"ThreeChoices.maybe (in An instance for a sum class)\":\n    [{\"id\": \"ThreeChoices___maybe-_LPAR_in-An-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#ThreeChoices___maybe-_LPAR_in-An-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"maybe\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"An instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"ThreeChoices (in An instance for a sum class)\":\n    [{\"id\": \"ThreeChoices-_LPAR_in-An-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#ThreeChoices-_LPAR_in-An-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"ThreeChoices\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"An instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Three.mk (in Spuriously mutual types)\":\n    [{\"id\": \"Three___mk-_LPAR_in-Spuriously-mutual-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Three___mk-_LPAR_in-Spuriously-mutual-types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Spuriously mutual types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Three (in Spuriously mutual types)\":\n    [{\"id\": \"Three-_LPAR_in-Spuriously-mutual-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Three-_LPAR_in-Spuriously-mutual-types_RPAR_\":\n       {\"display\": \"Three\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Spuriously mutual types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Textbook (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"Textbook-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Textbook-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"Textbook\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"T (in Universe polymorphism and definitional equality)\":\n    [{\"id\":\n      \"T-_LPAR_in-Universe-polymorphism-and-definitional-equality_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#T-_LPAR_in-Universe-polymorphism-and-definitional-equality_RPAR_\":\n       {\"display\": \"T\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe polymorphism and definitional equality\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Supply.counter\":\n    [{\"id\": \"Supply___counter\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Supply___counter\":\n       {\"display\": \"counter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Supply\":\n    [{\"id\": \"Supply\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Supply\":\n       {\"display\": \"Supply\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Sum'.swap (in Dependent Pairs as Sums)\":\n    [{\"id\": \"Sum______swap-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#Sum______swap-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\":\n       {\"display\": \"Sum'.swap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs as Sums\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Sum'.inr (in Dependent Pairs as Sums)\":\n    [{\"id\": \"Sum______inr-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#Sum______inr-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\":\n       {\"display\": \"Sum'.inr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs as Sums\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Sum'.inl (in Dependent Pairs as Sums)\":\n    [{\"id\": \"Sum______inl-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#Sum______inl-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\":\n       {\"display\": \"Sum'.inl\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs as Sums\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Sum' (in Dependent Pairs as Sums)\":\n    [{\"id\": \"Sum___-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Tuples/#Sum___-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_\":\n       {\"display\": \"Sum'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Tuples\",\n         \"Dependent Pairs\",\n         \"Dependent Pairs as Sums\"]}},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Stx.node (in Nested positions)\":\n    [{\"id\": \"Stx___node-_LPAR_in-Nested-positions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Stx___node-_LPAR_in-Nested-positions_RPAR_\":\n       {\"display\": \"node\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Nested positions\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Stx.atom (in Nested positions)\":\n    [{\"id\": \"Stx___atom-_LPAR_in-Nested-positions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Stx___atom-_LPAR_in-Nested-positions_RPAR_\":\n       {\"display\": \"atom\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Nested positions\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Stx (in Nested positions)\":\n    [{\"id\": \"Stx-_LPAR_in-Nested-positions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Stx-_LPAR_in-Nested-positions_RPAR_\":\n       {\"display\": \"Stx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Nested positions\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"StringMonoid (in Sort Coercions)\":\n    [{\"id\": \"StringMonoid-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#StringMonoid-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"StringMonoid\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"StringList.nil (in A recursive instance for a sum class)\":\n    [{\"id\":\n      \"StringList___nil-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#StringList___nil-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"A recursive instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"StringList.cons (in A recursive instance for a sum class)\":\n    [{\"id\":\n      \"StringList___cons-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#StringList___cons-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"A recursive instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"StringList (in A recursive instance for a sum class)\":\n    [{\"id\": \"StringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#StringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_\":\n       {\"display\": \"StringList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instances of  class inductive s\",\n         \"A recursive instance for a sum class\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"StateMTriple\":\n    [{\"id\": \"StateMTriple\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#StateMTriple\":\n       {\"display\": \"StateMTriple\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Compositional Reasoning About Effectful Programs Using Hoare Triples\",\n         \"Hoare Triples\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"State (in Private Methods)\":\n    [{\"id\": \"State-_LPAR_in-Private-Methods_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#State-_LPAR_in-Private-Methods_RPAR_-next\":\n       {\"display\": \"State\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]},\n       \"/The-Type-System/Inductive-Types/#State-_LPAR_in-Private-Methods_RPAR_\":\n       {\"display\": \"State\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"State-_LPAR_in-Private-Methods_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#State-_LPAR_in-Private-Methods_RPAR_-next\":\n       {\"display\": \"State\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]},\n       \"/The-Type-System/Inductive-Types/#State-_LPAR_in-Private-Methods_RPAR_\":\n       {\"display\": \"State\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Methods\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Spurious (in Universes, constructors, and parameters)\":\n    [{\"id\":\n      \"Spurious-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Spurious-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\":\n       {\"display\": \"Spurious\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Universe Levels\",\n         \"Universes, constructors, and parameters\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Solo.solo (in A unit type)\":\n    [{\"id\": \"Solo___solo-_LPAR_in-A-unit-type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Solo___solo-_LPAR_in-A-unit-type_RPAR_\":\n       {\"display\": \"solo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A unit type\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Solo.mk (in Custom Unit Type)\":\n    [{\"id\": \"Solo___mk-_LPAR_in-Custom-Unit-Type_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#Solo___mk-_LPAR_in-Custom-Unit-Type_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Custom Unit Type\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Solo (in Custom Unit Type)\":\n    [{\"id\": \"Solo-_LPAR_in-Custom-Unit-Type_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#Solo-_LPAR_in-Custom-Unit-Type_RPAR_\":\n       {\"display\": \"Solo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Custom Unit Type\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Solo (in A unit type)\":\n    [{\"id\": \"Solo-_LPAR_in-A-unit-type_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Solo-_LPAR_in-A-unit-type_RPAR_\":\n       {\"display\": \"Solo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A unit type\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"SetTree (in Nested Inductive Types and Quotients)\":\n    [{\"id\": \"SetTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#SetTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\":\n       {\"display\": \"SetTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Logical Model\",\n         \"Quotients and Inductive Types\",\n         \"Nested Inductive Types and Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Serialize.ser (in Output Parameters and Stuck Search)\":\n    [{\"id\":\n      \"Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next\":\n       {\"display\": \"ser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]},\n       \"/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_\":\n       {\"display\": \"ser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"},\n     {\"id\":\n      \"Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next\":\n       {\"display\": \"ser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]},\n       \"/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_\":\n       {\"display\": \"ser\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"Serialize (in Output Parameters and Stuck Search)\":\n    [{\"id\":\n      \"Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next\":\n       {\"display\": \"Serialize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]},\n       \"/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_\":\n       {\"display\": \"Serialize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"},\n     {\"id\": \"Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next\":\n       {\"display\": \"Serialize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]},\n       \"/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_\":\n       {\"display\": \"Serialize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters and Stuck Search\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"Sequence.ofList (in Reducibility and Generalized Field Notation)\":\n    [{\"id\":\n      \"Sequence___ofList-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Sequence___ofList-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_\":\n       {\"display\": \"Sequence.ofList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Generalized Field Notation\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Sequence (in Reducibility and Generalized Field Notation)\":\n    [{\"id\":\n      \"Sequence-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Sequence-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_\":\n       {\"display\": \"Sequence\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Generalized Field Notation\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"S.usize_2\":\n    [{\"id\": \"S___usize_2\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___usize_2\":\n       {\"display\": \"usize_2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.usize_1\":\n    [{\"id\": \"S___usize_1\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___usize_1\":\n       {\"display\": \"usize_1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc8_2\":\n    [{\"id\": \"S___sc8_2\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc8_2\":\n       {\"display\": \"sc8_2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc8_1\":\n    [{\"id\": \"S___sc8_1\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc8_1\":\n       {\"display\": \"sc8_1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc64_3\":\n    [{\"id\": \"S___sc64_3\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc64_3\":\n       {\"display\": \"sc64_3\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc64_2\":\n    [{\"id\": \"S___sc64_2\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc64_2\":\n       {\"display\": \"sc64_2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc64_1\":\n    [{\"id\": \"S___sc64_1\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc64_1\":\n       {\"display\": \"sc64_1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc32_1\":\n    [{\"id\": \"S___sc32_1\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc32_1\":\n       {\"display\": \"sc32_1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc16_2\":\n    [{\"id\": \"S___sc16_2\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc16_2\":\n       {\"display\": \"sc16_2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.sc16_1\":\n    [{\"id\": \"S___sc16_1\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___sc16_1\":\n       {\"display\": \"sc16_1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.ptr_3\":\n    [{\"id\": \"S___ptr_3\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___ptr_3\":\n       {\"display\": \"ptr_3\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.ptr_2\":\n    [{\"id\": \"S___ptr_2\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___ptr_2\":\n       {\"display\": \"ptr_2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.ptr_1\":\n    [{\"id\": \"S___ptr_1\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S___ptr_1\":\n       {\"display\": \"ptr_1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"S.Semigroup.op_assoc (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"S___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"op_assoc\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Semigroup (in Class vs Structure Constructors)\":\n    [{\"id\": \"S___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Semigroup\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Monoid.ident_right (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"S___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident_right\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Monoid.ident_left (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"S___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident_left\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Monoid.ident (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"S___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Monoid (in Class vs Structure Constructors)\":\n    [{\"id\": \"S___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Monoid\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Magma.op (in Class vs Structure Constructors)\":\n    [{\"id\": \"S___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"op\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S.Magma (in Class vs Structure Constructors)\":\n    [{\"id\": \"S___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#S___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Magma\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"S\":\n    [{\"id\": \"S\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#S\":\n       {\"display\": \"S\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Run-Time Representation\",\n         \"Other Inductive Types\",\n         \"FFI\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RunsMatch (in Universe mismatch)\":\n    [{\"id\": \"RunsMatch-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RunsMatch-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"RunsMatch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RunLengths (in Universe mismatch)\":\n    [{\"id\": \"RunLengths-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RunLengths-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"RunLengths\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Rtrans (in Multi-Patterns)\":\n    [{\"id\": \"Rtrans-_LPAR_in-Multi-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Rtrans-_LPAR_in-Multi-Patterns_RPAR_\":\n       {\"display\": \"Rtrans\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Multi-Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"RoseTree.leaf (in Nested Inductive Types and Quotients)\":\n    [{\"id\":\n      \"RoseTree___leaf-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#RoseTree___leaf-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Logical Model\",\n         \"Quotients and Inductive Types\",\n         \"Nested Inductive Types and Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"RoseTree.branch (in Nested Inductive Types and Quotients)\":\n    [{\"id\":\n      \"RoseTree___branch-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#RoseTree___branch-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\":\n       {\"display\": \"branch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Logical Model\",\n         \"Quotients and Inductive Types\",\n         \"Nested Inductive Types and Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"RoseTree (in Nested Inductive Types and Quotients)\":\n    [{\"id\": \"RoseTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#RoseTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_\":\n       {\"display\": \"RoseTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Logical Model\",\n         \"Quotients and Inductive Types\",\n         \"Nested Inductive Types and Quotients\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Result.throw_spec\":\n    [{\"id\": \"Result___throw_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result___throw_spec\":\n       {\"display\": \"Result.throw_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Result.ok\":\n    [{\"id\": \"Result___ok\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result___ok\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Result.of_wp\":\n    [{\"id\": \"Result___of_wp\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result___of_wp\":\n       {\"display\": \"Result.of_wp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Result.instWP\":\n    [{\"id\": \"Result___instWP\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result___instWP\":\n       {\"display\": \"Result.instWP\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Result.fail\":\n    [{\"id\": \"Result___fail\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result___fail\":\n       {\"display\": \"fail\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Result.div\":\n    [{\"id\": \"Result___div\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result___div\":\n       {\"display\": \"div\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Result\":\n    [{\"id\": \"Result\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Result\":\n       {\"display\": \"Result\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"RawMaze.passages (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___passages-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___passages-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"passages\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.insert_wf (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___insert_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___insert_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"RawMaze.insert_wf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.insert (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"RawMaze.insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.description (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"description\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.base_wf (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___base_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___base_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"RawMaze.base_wf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.base (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"RawMaze.base\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.WF.mk (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___WF___mk-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___WF___mk-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze.WF (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze___WF-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze___WF-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"RawMaze.WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RawMaze (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"RawMaze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#RawMaze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"RawMaze\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"RTree.node (in Nested Inductive Types)\":\n    [{\"id\": \"RTree___node-_LPAR_in-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RTree___node-_LPAR_in-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"node\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RTree.empty (in Nested Inductive Types)\":\n    [{\"id\": \"RTree___empty-_LPAR_in-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RTree___empty-_LPAR_in-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RTree'' (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"RTree______-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RTree______-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"RTree''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RTree (in Nested Inductive Types)\":\n    [{\"id\": \"RTree-_LPAR_in-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RTree-_LPAR_in-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"RTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RTree (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"RTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"RTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE.runsMatch (in Universe mismatch)\":\n    [{\"id\": \"RLE___runsMatch-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE___runsMatch-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"runsMatch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE.run (in Universe mismatch)\":\n    [{\"id\": \"RLE___run-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE___run-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"run\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE.rle (in Universe mismatch)\":\n    [{\"id\": \"RLE___rle-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE___rle-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"rle\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE.nonZero (in Universe mismatch)\":\n    [{\"id\": \"RLE___nonZero-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE___nonZero-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"nonZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE.noRepeats (in Universe mismatch)\":\n    [{\"id\": \"RLE___noRepeats-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE___noRepeats-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"noRepeats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE.nil (in Universe mismatch)\":\n    [{\"id\": \"RLE___nil-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE___nil-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"RLE (in Universe mismatch)\":\n    [{\"id\": \"RLE-_LPAR_in-Universe-mismatch_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_-next\":\n       {\"display\": \"RLE\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]},\n       \"/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"RLE\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"RLE-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_-next\":\n       {\"display\": \"RLE\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]},\n       \"/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"RLE\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"R (in Multi-Patterns)\":\n    [{\"id\": \"R-_LPAR_in-Multi-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#R-_LPAR_in-Multi-Patterns_RPAR_\":\n       {\"display\": \"R\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Multi-Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"R\":\n    [{\"id\": \"R\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#R\":\n       {\"display\": \"R\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"Integrating  grind 's Features\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"Quadrant.sw (in Displaying Output)\":\n    [{\"id\": \"Quadrant___sw-_LPAR_in-Displaying-Output_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Quadrant___sw-_LPAR_in-Displaying-Output_RPAR_\":\n       {\"display\": \"sw\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Evaluating Terms\",\n         \"Displaying Output\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Quadrant.se (in Displaying Output)\":\n    [{\"id\": \"Quadrant___se-_LPAR_in-Displaying-Output_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Quadrant___se-_LPAR_in-Displaying-Output_RPAR_\":\n       {\"display\": \"se\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Evaluating Terms\",\n         \"Displaying Output\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Quadrant.nw (in Displaying Output)\":\n    [{\"id\": \"Quadrant___nw-_LPAR_in-Displaying-Output_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Quadrant___nw-_LPAR_in-Displaying-Output_RPAR_\":\n       {\"display\": \"nw\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Evaluating Terms\",\n         \"Displaying Output\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Quadrant.ne (in Displaying Output)\":\n    [{\"id\": \"Quadrant___ne-_LPAR_in-Displaying-Output_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Quadrant___ne-_LPAR_in-Displaying-Output_RPAR_\":\n       {\"display\": \"ne\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Evaluating Terms\",\n         \"Displaying Output\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Quadrant (in Displaying Output)\":\n    [{\"id\": \"Quadrant-_LPAR_in-Displaying-Output_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#Quadrant-_LPAR_in-Displaying-Output_RPAR_\":\n       {\"display\": \"Quadrant\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Evaluating Terms\",\n         \"Displaying Output\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"ProofUnitLike.mk (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"ProofUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#ProofUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"ProofUnitLike (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"ProofUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#ProofUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"ProofUnitLike\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"PrefixRunOf.zero (in Universe mismatch)\":\n    [{\"id\": \"PrefixRunOf___zero-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#PrefixRunOf___zero-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"PrefixRunOf.succ (in Universe mismatch)\":\n    [{\"id\": \"PrefixRunOf___succ-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#PrefixRunOf___succ-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"PrefixRunOf (in Universe mismatch)\":\n    [{\"id\": \"PrefixRunOf-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#PrefixRunOf-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"PrefixRunOf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"PostShape.args\":\n    [{\"id\": \"PostShape___args\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#PostShape___args\":\n       {\"display\": \"PostShape.args\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Proof Mode for Stateful Goals\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Point.y (in The  @[grind ext]  Attribute)\":\n    [{\"id\": \"Point___y-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Point___y-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ext]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Point.x (in The  @[grind ext]  Attribute)\":\n    [{\"id\": \"Point___x-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Point___x-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ext]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Point.swap (in The  @[grind ext]  Attribute)\":\n    [{\"id\":\n      \"Point___swap-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Point___swap-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\":\n       {\"display\": \"Point.swap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ext]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Point (in The  @[grind ext]  Attribute)\":\n    [{\"id\": \"Point-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Point-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_\":\n       {\"display\": \"Point\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"The  @[grind ext]  Attribute\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Phrase (in Reducibility and Instance Synthesis)\":\n    [{\"id\": \"Phrase-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Phrase-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\":\n       {\"display\": \"Phrase\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Instance Synthesis\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Permissions.writable (in Fixed-Width Literals)\":\n    [{\"id\": \"Permissions___writable-_LPAR_in-Fixed-Width-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Fixed-Precision-Integers/#Permissions___writable-_LPAR_in-Fixed-Width-Literals_RPAR_\":\n       {\"display\": \"writable\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Fixed-Precision Integers\",\n         \"Syntax\",\n         \"Fixed-Width Literals\"]}},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Permissions.readable (in Fixed-Width Literals)\":\n    [{\"id\": \"Permissions___readable-_LPAR_in-Fixed-Width-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Fixed-Precision-Integers/#Permissions___readable-_LPAR_in-Fixed-Width-Literals_RPAR_\":\n       {\"display\": \"readable\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Fixed-Precision Integers\",\n         \"Syntax\",\n         \"Fixed-Width Literals\"]}},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Permissions.executable (in Fixed-Width Literals)\":\n    [{\"id\": \"Permissions___executable-_LPAR_in-Fixed-Width-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Fixed-Precision-Integers/#Permissions___executable-_LPAR_in-Fixed-Width-Literals_RPAR_\":\n       {\"display\": \"executable\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Fixed-Precision Integers\",\n         \"Syntax\",\n         \"Fixed-Width Literals\"]}},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Permissions.encode (in Fixed-Width Literals)\":\n    [{\"id\": \"Permissions___encode-_LPAR_in-Fixed-Width-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Fixed-Precision-Integers/#Permissions___encode-_LPAR_in-Fixed-Width-Literals_RPAR_\":\n       {\"display\": \"Permissions.encode\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Fixed-Precision Integers\",\n         \"Syntax\",\n         \"Fixed-Width Literals\"]}},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Permissions.decode (in Fixed-Width Literals)\":\n    [{\"id\": \"Permissions___decode-_LPAR_in-Fixed-Width-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Fixed-Precision-Integers/#Permissions___decode-_LPAR_in-Fixed-Width-Literals_RPAR_\":\n       {\"display\": \"Permissions.decode\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Fixed-Precision Integers\",\n         \"Syntax\",\n         \"Fixed-Width Literals\"]}},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Permissions (in Fixed-Width Literals)\":\n    [{\"id\": \"Permissions-_LPAR_in-Fixed-Width-Literals_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Fixed-Precision-Integers/#Permissions-_LPAR_in-Fixed-Width-Literals_RPAR_\":\n       {\"display\": \"Permissions\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Fixed-Precision Integers\",\n         \"Syntax\",\n         \"Fixed-Width Literals\"]}},\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Parity.odd (in Inaccessible Patterns)\":\n    [{\"id\": \"Parity___odd-_LPAR_in-Inaccessible-Patterns_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#Parity___odd-_LPAR_in-Inaccessible-Patterns_RPAR_\":\n       {\"display\": \"odd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Inaccessible Patterns\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Parity.even (in Inaccessible Patterns)\":\n    [{\"id\": \"Parity___even-_LPAR_in-Inaccessible-Patterns_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#Parity___even-_LPAR_in-Inaccessible-Patterns_RPAR_\":\n       {\"display\": \"even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Inaccessible Patterns\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Parity (in Inaccessible Patterns)\":\n    [{\"id\": \"Parity-_LPAR_in-Inaccessible-Patterns_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#Parity-_LPAR_in-Inaccessible-Patterns_RPAR_\":\n       {\"display\": \"Parity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Inaccessible Patterns\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Palindrome.text (in Non-default constructor name)\":\n    [{\"id\": \"Palindrome___text-_LPAR_in-Non-default-constructor-name_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome___text-_LPAR_in-Non-default-constructor-name_RPAR_\":\n       {\"display\": \"text\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Non-default constructor name\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome.single (in Invalid Nested Inductive Types)\":\n    [{\"id\":\n      \"Palindrome___single-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome___single-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"single\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome.ofString (in Non-default constructor name)\":\n    [{\"id\":\n      \"Palindrome___ofString-_LPAR_in-Non-default-constructor-name_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome___ofString-_LPAR_in-Non-default-constructor-name_RPAR_\":\n       {\"display\": \"ofString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Non-default constructor name\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome.nil (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"Palindrome___nil-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome___nil-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome.is_palindrome (in Non-default constructor name)\":\n    [{\"id\":\n      \"Palindrome___is_palindrome-_LPAR_in-Non-default-constructor-name_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome___is_palindrome-_LPAR_in-Non-default-constructor-name_RPAR_\":\n       {\"display\": \"is_palindrome\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Non-default constructor name\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome.cons (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"Palindrome___cons-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome___cons-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome (in Non-default constructor name)\":\n    [{\"id\": \"Palindrome-_LPAR_in-Non-default-constructor-name_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome-_LPAR_in-Non-default-constructor-name_RPAR_\":\n       {\"display\": \"Palindrome\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Non-default constructor name\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Palindrome (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"Palindrome-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Palindrome-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"Palindrome\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Pair.unattach (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.unattach\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.snd (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Pair___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.snd (in Field Indices and Structure Inheritance)\":\n    [{\"id\":\n      \"Pair___snd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Pair___snd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Field Indices and Structure Inheritance\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Pair.sizeOf_lt_of_mem (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___sizeOf_lt_of_mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___sizeOf_lt_of_mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.sizeOf_lt_of_mem\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.map_wfParam (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___map_wfParam-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___map_wfParam-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.map_wfParam\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.map_unattach (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___map_unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___map_unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.map_unattach\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.map (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Pair___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.fst (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Pair___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.fst (in Field Indices and Structure Inheritance)\":\n    [{\"id\":\n      \"Pair___fst-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Pair___fst-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Field Indices and Structure Inheritance\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Pair.attach (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___attach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___attach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.attach\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.Mem.snd (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___Mem___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___Mem___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"snd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.Mem.fst (in Preprocessing for a custom data type)\":\n    [{\"id\":\n      \"Pair___Mem___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___Mem___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"fst\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair.Mem (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Pair___Mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair___Mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair.Mem\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair (in Preprocessing for a custom data type)\":\n    [{\"id\": \"Pair-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Pair-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_\":\n       {\"display\": \"Pair\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Preprocessing Function Definitions\",\n         \"Preprocessing for a custom data type\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Pair (in Field Indices and Structure Inheritance)\":\n    [{\"id\": \"Pair-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Pair-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_\":\n       {\"display\": \"Pair\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Field Indices and Structure Inheritance\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"PBool (in Overly-universe-polymorphic  Bool)\":\n    [{\"id\": \"PBool-_LPAR_in-Overly-universe-polymorphic--Bool_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#PBool-_LPAR_in-Overly-universe-polymorphic--Bool_RPAR_\":\n       {\"display\": \"PBool\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Prop vs Type\",\n         \"Overly-universe-polymorphic  Bool\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat.to_of_eq_id (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"OptONat___to_of_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat___to_of_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"OptONat.to_of_eq_id\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat.toOption (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"OptONat___toOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat___toOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"OptONat.toOption\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat.some (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"OptONat___some-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat___some-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"some\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat.of_to_eq_id (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"OptONat___of_to_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat___of_to_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"OptONat.of_to_eq_id\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat.ofOption (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"OptONat___ofOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat___ofOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"OptONat.ofOption\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat.none (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"OptONat___none-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat___none-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"none\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OptONat (in Translating Nested Inductive Types)\":\n    [{\"id\": \"OptONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OptONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"OptONat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OneSmaller.shrink (in Semi-Output Parameters with Pre-Existing Values)\":\n    [{\"id\":\n      \"OneSmaller___shrink-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#OneSmaller___shrink-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_\":\n       {\"display\": \"shrink\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Semi-Output Parameters with Pre-Existing Values\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"OneSmaller.shrink (in Output Parameters with Pre-Existing Values)\":\n    [{\"id\":\n      \"OneSmaller___shrink-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#OneSmaller___shrink-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_\":\n       {\"display\": \"shrink\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters with Pre-Existing Values\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"OneSmaller.biggest (in Semi-Output Parameters with Pre-Existing Values)\":\n    [{\"id\":\n      \"OneSmaller___biggest-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#OneSmaller___biggest-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_\":\n       {\"display\": \"biggest\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Semi-Output Parameters with Pre-Existing Values\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"OneSmaller.biggest (in Output Parameters with Pre-Existing Values)\":\n    [{\"id\":\n      \"OneSmaller___biggest-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#OneSmaller___biggest-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_\":\n       {\"display\": \"biggest\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters with Pre-Existing Values\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"OneSmaller (in Semi-Output Parameters with Pre-Existing Values)\":\n    [{\"id\":\n      \"OneSmaller-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#OneSmaller-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_\":\n       {\"display\": \"OneSmaller\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Semi-Output Parameters with Pre-Existing Values\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"OneSmaller (in Output Parameters with Pre-Existing Values)\":\n    [{\"id\":\n      \"OneSmaller-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#OneSmaller-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_\":\n       {\"display\": \"OneSmaller\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Output Parameters\",\n         \"Output Parameters with Pre-Existing Values\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"OddList.cons (in Mutually Defined Inductive Types)\":\n    [{\"id\": \"OddList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OddList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Mutually Defined Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"OddList (in Mutually Defined Inductive Types)\":\n    [{\"id\": \"OddList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#OddList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\":\n       {\"display\": \"OddList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Mutually Defined Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Odd.succ (in Even and odd)\":\n    [{\"id\": \"Odd___succ-_LPAR_in-Even-and-odd_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Odd___succ-_LPAR_in-Even-and-odd_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Even and odd\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Odd (in Even and odd)\":\n    [{\"id\": \"Odd-_LPAR_in-Even-and-odd_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Odd-_LPAR_in-Even-and-odd_RPAR_\":\n       {\"display\": \"Odd\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Even and odd\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat.rec (in Translating Nested Inductive Types)\":\n    [{\"id\": \"ONat___rec-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat___rec-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"ONat.rec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat.mk (in Translating Nested Inductive Types)\":\n    [{\"id\":\n      \"ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next\":\n       {\"display\": \"ONat.mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]},\n       \"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next\":\n       {\"display\": \"ONat.mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]},\n       \"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat.mk (in Nested Inductive Types)\":\n    [{\"id\": \"ONat___mk-_LPAR_in-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat'.mk (in Translating Nested Inductive Types)\":\n    [{\"id\": \"ONat______mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat______mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat' (in Translating Nested Inductive Types)\":\n    [{\"id\": \"ONat___-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat___-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"ONat'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat (in Translating Nested Inductive Types)\":\n    [{\"id\": \"ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next\":\n       {\"display\": \"ONat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]},\n       \"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"ONat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next\":\n       {\"display\": \"ONat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]},\n       \"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"ONat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Translating Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ONat (in Nested Inductive Types)\":\n    [{\"id\": \"ONat-_LPAR_in-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"ONat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NotUnitLike.mk (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"NotUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#NotUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"NotUnitLike (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"NotUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#NotUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"NotUnitLike\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"Not30.lt (in Splitting Predicates)\":\n    [{\"id\": \"Not30___lt-_LPAR_in-Splitting-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/Case-Analysis/#Not30___lt-_LPAR_in-Splitting-Predicates_RPAR_\":\n       {\"display\": \"lt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Case Analysis\",\n         \"Selection Heuristics\",\n         \"Splitting Predicates\"]}},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Not30.gt (in Splitting Predicates)\":\n    [{\"id\": \"Not30___gt-_LPAR_in-Splitting-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/Case-Analysis/#Not30___gt-_LPAR_in-Splitting-Predicates_RPAR_\":\n       {\"display\": \"gt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Case Analysis\",\n         \"Selection Heuristics\",\n         \"Splitting Predicates\"]}},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Not30 (in Splitting Predicates)\":\n    [{\"id\": \"Not30-_LPAR_in-Splitting-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/Case-Analysis/#Not30-_LPAR_in-Splitting-Predicates_RPAR_\":\n       {\"display\": \"Not30\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Case Analysis\",\n         \"Selection Heuristics\",\n         \"Splitting Predicates\"]}},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"NonZero (in Universe mismatch)\":\n    [{\"id\": \"NonZero-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NonZero-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"NonZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NonEmptyString (in Extensional Equality of Subtypes)\":\n    [{\"id\": \"NonEmptyString-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#NonEmptyString-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"NonEmptyString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Extensional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"NonEmptyString (in Definitional Equality of Subtypes)\":\n    [{\"id\": \"NonEmptyString-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#NonEmptyString-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_\":\n       {\"display\": \"NonEmptyString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Definitional Equality of Subtypes\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"NonEmptyList.non_empty (in Dependent Coercion)\":\n    [{\"id\": \"NonEmptyList___non_empty-_LPAR_in-Dependent-Coercion_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#NonEmptyList___non_empty-_LPAR_in-Dependent-Coercion_RPAR_\":\n       {\"display\": \"non_empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Dependent Coercion\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"NonEmptyList.contents (in Dependent Coercion)\":\n    [{\"id\": \"NonEmptyList___contents-_LPAR_in-Dependent-Coercion_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#NonEmptyList___contents-_LPAR_in-Dependent-Coercion_RPAR_\":\n       {\"display\": \"contents\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Dependent Coercion\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"NonEmptyList (in Dependent Coercion)\":\n    [{\"id\": \"NonEmptyList-_LPAR_in-Dependent-Coercion_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#NonEmptyList-_LPAR_in-Dependent-Coercion_RPAR_\":\n       {\"display\": \"NonEmptyList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Dependent Coercion\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"NoRepeats (in Universe mismatch)\":\n    [{\"id\": \"NoRepeats-_LPAR_in-Universe-mismatch_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NoRepeats-_LPAR_in-Universe-mismatch_RPAR_\":\n       {\"display\": \"NoRepeats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Universe Levels\",\n         \"Universe mismatch\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NoConfusion\":\n    [{\"id\": \"NoConfusion\",\n      \"data\":\n      {\"/Basic-Types/Natural-Numbers/#NoConfusion\":\n       {\"display\": \"NoConfusion\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Natural Numbers\",\n         \"Logical Model\",\n         \"Peano Axioms\"]}},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"No (in A constructorless proposition)\":\n    [{\"id\": \"No-_LPAR_in-A-constructorless-proposition_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#No-_LPAR_in-A-constructorless-proposition_RPAR_\":\n       {\"display\": \"No\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A constructorless proposition\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NaturalNum (in Mutual Block Scope)\":\n    [{\"id\": \"NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_-next\":\n       {\"display\": \"NaturalNum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]},\n       \"/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_\":\n       {\"display\": \"NaturalNum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_-next\":\n       {\"display\": \"NaturalNum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]},\n       \"/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_\":\n       {\"display\": \"NaturalNum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Mutual Recursion\",\n         \"Mutual Block Scope\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Nats.next (in Iterating Over  Nat)\":\n    [{\"id\": \"Nats___next-_LPAR_in-Iterating-Over--Nat_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Nats___next-_LPAR_in-Iterating-Over--Nat_RPAR_\":\n       {\"display\": \"next\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over  Nat\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Nats.iter (in Iterating Over  Nat)\":\n    [{\"id\": \"Nats___iter-_LPAR_in-Iterating-Over--Nat_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Nats___iter-_LPAR_in-Iterating-Over--Nat_RPAR_\":\n       {\"display\": \"Nats.iter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over  Nat\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Nats (in Iterating Over  Nat)\":\n    [{\"id\": \"Nats-_LPAR_in-Iterating-Over--Nat_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#Nats-_LPAR_in-Iterating-Over--Nat_RPAR_\":\n       {\"display\": \"Nats\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterating Over  Nat\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"NatWrapper.val (in Variations in Instance Definitions)\":\n    [{\"id\":\n      \"NatWrapper___val-_LPAR_in-Variations-in-Instance-Definitions_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatWrapper___val-_LPAR_in-Variations-in-Instance-Definitions_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Variations in Instance Definitions\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatWrapper.val (in Instance Name Generation)\":\n    [{\"id\": \"NatWrapper___val-_LPAR_in-Instance-Name-Generation_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatWrapper___val-_LPAR_in-Instance-Name-Generation_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instance Name Generation\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatWrapper (in Variations in Instance Definitions)\":\n    [{\"id\": \"NatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_\":\n       {\"display\": \"NatWrapper\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Variations in Instance Definitions\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatWrapper (in Instance Name Generation)\":\n    [{\"id\": \"NatWrapper-_LPAR_in-Instance-Name-Generation_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatWrapper-_LPAR_in-Instance-Name-Generation_RPAR_\":\n       {\"display\": \"NatWrapper\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Instance Name Generation\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatTree.leaf (in Instances are not recursive)\":\n    [{\"id\": \"NatTree___leaf-_LPAR_in-Instances-are-not-recursive_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatTree___leaf-_LPAR_in-Instances-are-not-recursive_RPAR_\":\n       {\"display\": \"leaf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances are not recursive\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatTree.branch (in Instances are not recursive)\":\n    [{\"id\": \"NatTree___branch-_LPAR_in-Instances-are-not-recursive_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatTree___branch-_LPAR_in-Instances-are-not-recursive_RPAR_\":\n       {\"display\": \"branch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances are not recursive\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatTree.beq (in Instances are not recursive)\":\n    [{\"id\": \"NatTree___beq-_LPAR_in-Instances-are-not-recursive_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatTree___beq-_LPAR_in-Instances-are-not-recursive_RPAR_\":\n       {\"display\": \"NatTree.beq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances are not recursive\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatTree (in Instances are not recursive)\":\n    [{\"id\": \"NatTree-_LPAR_in-Instances-are-not-recursive_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatTree-_LPAR_in-Instances-are-not-recursive_RPAR_\":\n       {\"display\": \"NatTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances are not recursive\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatStringBimap.stringToNat (in Modifiers on structure constructor)\":\n    [{\"id\":\n      \"NatStringBimap___stringToNat-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NatStringBimap___stringToNat-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\":\n       {\"display\": \"stringToNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Modifiers on structure constructor\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NatStringBimap.natToString (in Modifiers on structure constructor)\":\n    [{\"id\":\n      \"NatStringBimap___natToString-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NatStringBimap___natToString-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\":\n       {\"display\": \"natToString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Modifiers on structure constructor\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NatStringBimap.insert (in Modifiers on structure constructor)\":\n    [{\"id\":\n      \"NatStringBimap___insert-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NatStringBimap___insert-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\":\n       {\"display\": \"NatStringBimap.insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Modifiers on structure constructor\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NatStringBimap.empty (in Modifiers on structure constructor)\":\n    [{\"id\":\n      \"NatStringBimap___empty-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NatStringBimap___empty-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\":\n       {\"display\": \"NatStringBimap.empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Modifiers on structure constructor\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NatStringBimap (in Modifiers on structure constructor)\":\n    [{\"id\":\n      \"NatStringBimap-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#NatStringBimap-_LPAR_in-Modifiers-on-structure-constructor_RPAR_\":\n       {\"display\": \"NatStringBimap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Modifiers on structure constructor\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"NatRoseTree.node (in Instances for nested types)\":\n    [{\"id\": \"NatRoseTree___node-_LPAR_in-Instances-for-nested-types_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatRoseTree___node-_LPAR_in-Instances-for-nested-types_RPAR_\":\n       {\"display\": \"node\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances for nested types\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatRoseTree.beq (in Instances for nested types)\":\n    [{\"id\":\n      \"NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_-next\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_-next\":\n       {\"display\": \"NatRoseTree.beq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances for nested types\"]},\n       \"/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_\":\n       {\"display\": \"NatRoseTree.beq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances for nested types\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"},\n     {\"id\": \"NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_-next\":\n       {\"display\": \"NatRoseTree.beq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances for nested types\"]},\n       \"/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_\":\n       {\"display\": \"NatRoseTree.beq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances for nested types\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatRoseTree (in Instances for nested types)\":\n    [{\"id\": \"NatRoseTree-_LPAR_in-Instances-for-nested-types_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#NatRoseTree-_LPAR_in-Instances-for-nested-types_RPAR_\":\n       {\"display\": \"NatRoseTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Recursive Instances\",\n         \"Instances for nested types\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"NatPair.y (in Local Instances)\":\n    [{\"id\": \"NatPair___y-_LPAR_in-Local-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#NatPair___y-_LPAR_in-Local-Instances_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"NatPair.y (in Local Instances Have Priority)\":\n    [{\"id\": \"NatPair___y-_LPAR_in-Local-Instances-Have-Priority_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#NatPair___y-_LPAR_in-Local-Instances-Have-Priority_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances Have Priority\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"NatPair.x (in Local Instances)\":\n    [{\"id\": \"NatPair___x-_LPAR_in-Local-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#NatPair___x-_LPAR_in-Local-Instances_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"NatPair.x (in Local Instances Have Priority)\":\n    [{\"id\": \"NatPair___x-_LPAR_in-Local-Instances-Have-Priority_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#NatPair___x-_LPAR_in-Local-Instances-Have-Priority_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances Have Priority\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"NatPair (in Local Instances)\":\n    [{\"id\": \"NatPair-_LPAR_in-Local-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#NatPair-_LPAR_in-Local-Instances_RPAR_\":\n       {\"display\": \"NatPair\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"NatPair (in Local Instances Have Priority)\":\n    [{\"id\": \"NatPair-_LPAR_in-Local-Instances-Have-Priority_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Synthesis/#NatPair-_LPAR_in-Local-Instances-Have-Priority_RPAR_\":\n       {\"display\": \"NatPair\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Synthesis\",\n         \"Candidate Instances\",\n         \"Local Instances Have Priority\"]}},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"NatOrInt.nat (in Maximal Parentheses)\":\n    [{\"id\": \"NatOrInt___nat-_LPAR_in-Maximal-Parentheses_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#NatOrInt___nat-_LPAR_in-Maximal-Parentheses_RPAR_\":\n       {\"display\": \"nat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Maximal Parentheses\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"NatOrInt.int (in Maximal Parentheses)\":\n    [{\"id\": \"NatOrInt___int-_LPAR_in-Maximal-Parentheses_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#NatOrInt___int-_LPAR_in-Maximal-Parentheses_RPAR_\":\n       {\"display\": \"int\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Maximal Parentheses\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"NatOrInt (in Maximal Parentheses)\":\n    [{\"id\": \"NatOrInt-_LPAR_in-Maximal-Parentheses_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#NatOrInt-_LPAR_in-Maximal-Parentheses_RPAR_\":\n       {\"display\": \"NatOrInt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Maximal Parentheses\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"NatOrBool.nat (in Sort Coercions as Ordinary Coercions)\":\n    [{\"id\":\n      \"NatOrBool___nat-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#NatOrBool___nat-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\":\n       {\"display\": \"nat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions as Ordinary Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"NatOrBool.bool (in Sort Coercions as Ordinary Coercions)\":\n    [{\"id\":\n      \"NatOrBool___bool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#NatOrBool___bool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\":\n       {\"display\": \"bool\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions as Ordinary Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"NatOrBool.asType (in Sort Coercions as Ordinary Coercions)\":\n    [{\"id\":\n      \"NatOrBool___asType-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#NatOrBool___asType-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\":\n       {\"display\": \"NatOrBool.asType\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions as Ordinary Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"NatOrBool (in Sort Coercions as Ordinary Coercions)\":\n    [{\"id\": \"NatOrBool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#NatOrBool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_\":\n       {\"display\": \"NatOrBool\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions as Ordinary Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"NatInterval.low_le_high (in Custom Natural Number Literals)\":\n    [{\"id\":\n      \"NatInterval___low_le_high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\",\n      \"data\":\n      {\"/Terms/Numeric-Literals/#NatInterval___low_le_high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\":\n       {\"display\": \"low_le_high\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Numeric Literals\",\n         \"Natural Numbers\",\n         \"Custom Natural Number Literals\"]}},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"NatInterval.low (in Custom Natural Number Literals)\":\n    [{\"id\": \"NatInterval___low-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\",\n      \"data\":\n      {\"/Terms/Numeric-Literals/#NatInterval___low-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\":\n       {\"display\": \"low\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Numeric Literals\",\n         \"Natural Numbers\",\n         \"Custom Natural Number Literals\"]}},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"NatInterval.high (in Custom Natural Number Literals)\":\n    [{\"id\":\n      \"NatInterval___high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\",\n      \"data\":\n      {\"/Terms/Numeric-Literals/#NatInterval___high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\":\n       {\"display\": \"high\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Numeric Literals\",\n         \"Natural Numbers\",\n         \"Custom Natural Number Literals\"]}},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"NatInterval (in Custom Natural Number Literals)\":\n    [{\"id\": \"NatInterval-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\",\n      \"data\":\n      {\"/Terms/Numeric-Literals/#NatInterval-_LPAR_in-Custom-Natural-Number-Literals_RPAR_\":\n       {\"display\": \"NatInterval\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Numeric Literals\",\n         \"Natural Numbers\",\n         \"Custom Natural Number Literals\"]}},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"Nat.parity (in Inaccessible Patterns)\":\n    [{\"id\": \"Nat___parity-_LPAR_in-Inaccessible-Patterns_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#Nat___parity-_LPAR_in-Inaccessible-Patterns_RPAR_\":\n       {\"display\": \"Nat.parity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Inaccessible Patterns\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Nat.otherZero (in Axioms and Stuck Reduction)\":\n    [{\"id\": \"Nat___otherZero-_LPAR_in-Axioms-and-Stuck-Reduction_RPAR_\",\n      \"data\":\n      {\"/Axioms/#Nat___otherZero-_LPAR_in-Axioms-and-Stuck-Reduction_RPAR_\":\n       {\"display\": \"Nat.otherZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Reduction\",\n         \"Axioms and Stuck Reduction\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"Nat.otherZero (in Axioms and Compilation)\":\n    [{\"id\": \"Nat___otherZero-_LPAR_in-Axioms-and-Compilation_RPAR_\",\n      \"data\":\n      {\"/Axioms/#Nat___otherZero-_LPAR_in-Axioms-and-Compilation_RPAR_\":\n       {\"display\": \"Nat.otherZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Reduction\",\n         \"Axioms and Compilation\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"Nat.half (in Turning Off Field Notation)\":\n    [{\"id\": \"Nat___half-_LPAR_in-Turning-Off-Field-Notation_RPAR_\",\n      \"data\":\n      {\"/Terms/Function-Application/#Nat___half-_LPAR_in-Turning-Off-Field-Notation_RPAR_\":\n       {\"display\": \"Nat.half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Function Application\",\n         \"Generalized Field Notation\",\n         \"Turning Off Field Notation\"]}},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"NamedFun.name (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"NamedFun___name-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#NamedFun___name-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"name\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"NamedFun.function (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"NamedFun___function-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#NamedFun___function-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"function\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"NamedFun.comp (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"NamedFun___comp-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#NamedFun___comp-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"NamedFun.comp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"NamedFun (in Coercing Decorated Functions to Function Types)\":\n    [{\"id\":\n      \"NamedFun-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#NamedFun-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_\":\n       {\"display\": \"NamedFun\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing Decorated Functions to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"NS.three (in Opening Scoped Declarations)\":\n    [{\"id\": \"NS___three-_LPAR_in-Opening-Scoped-Declarations_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#NS___three-_LPAR_in-Opening-Scoped-Declarations_RPAR_\":\n       {\"display\": \"three\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Scoped Declarations\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"NS.interestingName (in Querying the Environment)\":\n    [{\"id\": \"NS___interestingName-_LPAR_in-Querying-the-Environment_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Elaborators/#NS___interestingName-_LPAR_in-Querying-the-Environment_RPAR_\":\n       {\"display\": \"NS.interestingName\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Elaborators\",\n         \"Command Elaborators\",\n         \"Querying the Environment\"]}},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"N.NatOrInt.nat (in Inductive Types with Constructors)\":\n    [{\"id\":\n      \"N___NatOrInt___nat-_LPAR_in-Inductive-Types-with-Constructors_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#N___NatOrInt___nat-_LPAR_in-Inductive-Types-with-Constructors_RPAR_\":\n       {\"display\": \"nat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Inductive Types with Constructors\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"N.NatOrInt.int (in Inductive Types with Constructors)\":\n    [{\"id\":\n      \"N___NatOrInt___int-_LPAR_in-Inductive-Types-with-Constructors_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#N___NatOrInt___int-_LPAR_in-Inductive-Types-with-Constructors_RPAR_\":\n       {\"display\": \"int\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Inductive Types with Constructors\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"N.NatOrInt (in Inductive Types with Constructors)\":\n    [{\"id\": \"N___NatOrInt-_LPAR_in-Inductive-Types-with-Constructors_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#N___NatOrInt-_LPAR_in-Inductive-Types-with-Constructors_RPAR_\":\n       {\"display\": \"NatOrInt\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Inductive Types with Constructors\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MyStructure.field2 (in Auto-implicit parameters in structure fields)\":\n    [{\"id\":\n      \"MyStructure___field2-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#MyStructure___field2-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_\":\n       {\"display\": \"field2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Auto-implicit parameters in structure fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"MyStructure.field1 (in Auto-implicit parameters in structure fields)\":\n    [{\"id\":\n      \"MyStructure___field1-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#MyStructure___field1-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_\":\n       {\"display\": \"field1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Auto-implicit parameters in structure fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"MyStructure (in Auto-implicit parameters in structure fields)\":\n    [{\"id\":\n      \"MyStructure-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#MyStructure-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_\":\n       {\"display\": \"MyStructure\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Auto-implicit parameters in structure fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"MyList (in Leading  .  and Unfolding Definitions)\":\n    [{\"id\": \"MyList-_LPAR_in-Leading--___--and-Unfolding-Definitions_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#MyList-_LPAR_in-Leading--___--and-Unfolding-Definitions_RPAR_\":\n       {\"display\": \"MyList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Leading  .\",\n         \"Leading  .  and Unfolding Definitions\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"Monoid.op_id_identity (in Sort Coercions)\":\n    [{\"id\": \"Monoid___op_id_identity-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid___op_id_identity-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"op_id_identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Monoid.op_assoc (in Sort Coercions)\":\n    [{\"id\": \"Monoid___op_assoc-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid___op_assoc-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"op_assoc\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Monoid.op (in Sort Coercions)\":\n    [{\"id\": \"Monoid___op-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid___op-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"op\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Monoid.id_op_identity (in Sort Coercions)\":\n    [{\"id\": \"Monoid___id_op_identity-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid___id_op_identity-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"id_op_identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Monoid.id (in Sort Coercions)\":\n    [{\"id\": \"Monoid___id-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid___id-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"id\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Monoid.Carrier (in Sort Coercions)\":\n    [{\"id\": \"Monoid___Carrier-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid___Carrier-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"Carrier\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Monoid (in Sort Coercions)\":\n    [{\"id\": \"Monoid-_LPAR_in-Sort-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Sorts/#Monoid-_LPAR_in-Sort-Coercions_RPAR_\":\n       {\"display\": \"Monoid\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Sorts\",\n         \"Sort Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"Maze.wf (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"Maze___wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze___wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"wf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Maze.raw (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"Maze___raw-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze___raw-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"raw\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Maze.insert (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"Maze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"Maze.insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Maze.go? (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"Maze___go___-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze___go___-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"Maze.go?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Maze.description (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"Maze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"Maze.description\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Maze.base (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\":\n      \"Maze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"Maze.base\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Maze (in Nested Inductive Types with  Std.HashMap)\":\n    [{\"id\": \"Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_-next\":\n       {\"display\": \"Maze\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]},\n       \"/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"Maze\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"},\n     {\"id\":\n      \"Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_-next\",\n      \"data\":\n      {\"/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_-next\":\n       {\"display\": \"Maze\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]},\n       \"/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_\":\n       {\"display\": \"Maze\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Maps and Sets\",\n         \"Library Design\",\n         \"Raw Data and Invariants\",\n         \"Nested Inductive Types with  Std.HashMap\"]}},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"M (in State Types)\":\n    [{\"id\": \"M-_LPAR_in-State-Types_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#M-_LPAR_in-State-Types_RPAR_\":\n       {\"display\": \"M\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Varieties of Monads\",\n         \"Monad Type Classes\",\n         \"State Types\"]}},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"LogM.value (in A Logging Monad)\":\n    [{\"id\": \"LogM___value-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#LogM___value-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"value\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"LogM.run (in A Logging Monad)\":\n    [{\"id\": \"LogM___run-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#LogM___run-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"LogM.run\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"LogM.of_wp_run_eq (in A Logging Monad)\":\n    [{\"id\": \"LogM___of_wp_run_eq-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#LogM___of_wp_run_eq-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"LogM.of_wp_run_eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"LogM.log (in A Logging Monad)\":\n    [{\"id\": \"LogM___log-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#LogM___log-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"log\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"LogM (in A Logging Monad)\":\n    [{\"id\": \"LogM-_LPAR_in-A-Logging-Monad_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/#LogM-_LPAR_in-A-Logging-Monad_RPAR_\":\n       {\"display\": \"LogM\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Enabling  mvcgen  For Monads\",\n         \"A Logging Monad\"]}},\n      \"address\": \"/The--mvcgen--tactic/Enabling--mvcgen--For-Monads/\"}],\n    \"LocatedStx.mk (in Nested positions)\":\n    [{\"id\": \"LocatedStx___mk-_LPAR_in-Nested-positions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#LocatedStx___mk-_LPAR_in-Nested-positions_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Nested positions\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"LocatedStx (in Nested positions)\":\n    [{\"id\": \"LocatedStx-_LPAR_in-Nested-positions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#LocatedStx-_LPAR_in-Nested-positions_RPAR_\":\n       {\"display\": \"LocatedStx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Nested positions\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ListCursor.right (in Unexpansion and Arguments)\":\n    [{\"id\": \"ListCursor___right-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___right-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"ListCursor.right\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"ListCursor.rewind (in Unexpansion and Arguments)\":\n    [{\"id\": \"ListCursor___rewind-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___rewind-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"ListCursor.rewind\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"ListCursor.left (in Unexpansion and Arguments)\":\n    [{\"id\": \"ListCursor___left-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___left-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"ListCursor.left\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"ListCursor.fastForward (in Unexpansion and Arguments)\":\n    [{\"id\":\n      \"ListCursor___fastForward-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___fastForward-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"ListCursor.fastForward\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"ListCursor.before (in Unexpansion and Arguments)\":\n    [{\"id\": \"ListCursor___before-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___before-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"before\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"ListCursor.after (in Unexpansion and Arguments)\":\n    [{\"id\": \"ListCursor___after-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___after-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"after\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"ListCursor (in Unexpansion and Arguments)\":\n    [{\"id\": \"ListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_\":\n       {\"display\": \"ListCursor\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Extending Lean's Output\",\n         \"Unexpanders\",\n         \"Unexpansion and Arguments\"]}},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"List.myMap (in Enriched Proof Obligation Contexts)\":\n    [{\"id\": \"List___myMap-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___myMap-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_\":\n       {\"display\": \"List.myMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Well-Founded Recursion\",\n         \"Termination proofs\",\n         \"Enriched Proof Obligation Contexts\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.free_theorem (in Inconsistencies From Axioms)\":\n    [{\"id\": \"List___free_theorem-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\",\n      \"data\":\n      {\"/Axioms/#List___free_theorem-_LPAR_in-Inconsistencies-From-Axioms_RPAR_\":\n       {\"display\": \"List.free_theorem\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Axioms\",\n         \"Consistency\",\n         \"Inconsistencies From Axioms\"]}},\n      \"address\": \"/Axioms/\"}],\n    \"List.findIndex_implies_pred (in Partial Correctness Theorem)\":\n    [{\"id\":\n      \"List___findIndex_implies_pred-_LPAR_in-Partial-Correctness-Theorem_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___findIndex_implies_pred-_LPAR_in-Partial-Correctness-Theorem_RPAR_\":\n       {\"display\": \"List.findIndex_implies_pred\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Partial Correctness Theorems\",\n         \"Partial Correctness Theorem\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.findIndex (in Tail Recursion with Branching)\":\n    [{\"id\": \"List___findIndex-_LPAR_in-Tail-Recursion-with-Branching_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Tail-Recursion-with-Branching_RPAR_\":\n       {\"display\": \"List.findIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Tail-Recursive Functions\",\n         \"Tail Recursion with Branching\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.findIndex (in Partial Correctness Theorem)\":\n    [{\"id\": \"List___findIndex-_LPAR_in-Partial-Correctness-Theorem_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Partial-Correctness-Theorem_RPAR_\":\n       {\"display\": \"List.findIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Partial Correctness Theorems\",\n         \"Partial Correctness Theorem\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.findIndex (in Monadic functions)\":\n    [{\"id\": \"List___findIndex-_LPAR_in-Monadic-functions_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_-next\":\n       {\"display\": \"List.findIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]},\n       \"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"List.findIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"List___findIndex-_LPAR_in-Monadic-functions_RPAR_-next\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_-next\":\n       {\"display\": \"List.findIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]},\n       \"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_\":\n       {\"display\": \"List.findIndex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Monadic functions\",\n         \"Monadic functions\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.disjoint\":\n    [{\"id\": \"List___disjoint\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#List___disjoint\":\n       {\"display\": \"_root_.List.disjoint\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"List.brecOnTable (in Course-of-Values Tables)\":\n    [{\"id\": \"List___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"List.brecOnTable\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.brecOn' (in Course-of-Values Tables)\":\n    [{\"id\": \"List___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"List.brecOn'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"List.below' (in Course-of-Values Tables)\":\n    [{\"id\": \"List___below___-_LPAR_in-Course-of-Values-Tables_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#List___below___-_LPAR_in-Course-of-Values-Tables_RPAR_\":\n       {\"display\": \"List.below'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Elaboration Using Course-of-Values Recursion\",\n         \"Course-of-Values Tables\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"LengthList (in Computing types)\":\n    [{\"id\": \"LengthList-_LPAR_in-Computing-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/#LengthList-_LPAR_in-Computing-types_RPAR_\":\n       {\"display\": \"LengthList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Computing types\"]}},\n      \"address\": \"/The-Type-System/\"}],\n    \"LenList.zipWith (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___zipWith-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___zipWith-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList.zipWith\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.tail (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___tail-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___tail-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList.tail\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.map (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___map-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___map-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList.map\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.list_length_eq (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___list_length_eq-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___list_length_eq-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList.list_length_eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.list (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___list-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___list-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"list\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.lengthOk (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___lengthOk-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___lengthOk-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"lengthOk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.head (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___head-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___head-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList.head\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList.diagonal (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList___diagonal-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList___diagonal-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList.diagonal\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"LenList (in Lists with Lengths as Applicative Functors)\":\n    [{\"id\":\n      \"LenList-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/#LenList-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_\":\n       {\"display\": \"LenList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Lists with Lengths as Applicative Functors\"]}},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Lean.Parser.Category.balanced (in Parsing Matched Parentheses and Brackets)\":\n    [{\"id\":\n      \"Lean___Parser___Category___balanced-_LPAR_in-Parsing-Matched-Parentheses-and-Brackets_RPAR_\",\n      \"data\":\n      {\"/Notations-and-Macros/Defining-New-Syntax/#Lean___Parser___Category___balanced-_LPAR_in-Parsing-Matched-Parentheses-and-Brackets_RPAR_\":\n       {\"display\": \"balanced\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Notations and Macros\",\n         \"Defining New Syntax\",\n         \"Syntax Rules\",\n         \"Parsing Matched Parentheses and Brackets\"]}},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"LazyList.toList (in Lazy Lists)\":\n    [{\"id\": \"LazyList___toList-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___toList-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"LazyList.toList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList.take (in Lazy Lists)\":\n    [{\"id\": \"LazyList___take-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___take-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"LazyList.take\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList.ofFn (in Lazy Lists)\":\n    [{\"id\": \"LazyList___ofFn-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___ofFn-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"LazyList.ofFn\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList.nil (in Lazy Lists)\":\n    [{\"id\": \"LazyList___nil-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___nil-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList.delayed (in Lazy Lists)\":\n    [{\"id\": \"LazyList___delayed-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___delayed-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"delayed\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList.cons (in Lazy Lists)\":\n    [{\"id\": \"LazyList___cons-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___cons-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList.append (in Lazy Lists)\":\n    [{\"id\": \"LazyList___append-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList___append-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"LazyList.append\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"LazyList (in Lazy Lists)\":\n    [{\"id\": \"LazyList-_LPAR_in-Lazy-Lists_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Lazy-Computations/#LazyList-_LPAR_in-Lazy-Lists_RPAR_\":\n       {\"display\": \"LazyList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Lazy Computations\",\n         \"Coercions\",\n         \"Lazy Lists\"]}},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Later.get (in Controlling Evaluation with Coercions)\":\n    [{\"id\":\n      \"Later___get-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#Later___get-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_\":\n       {\"display\": \"get\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Controlling Evaluation with Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"Later (in Controlling Evaluation with Coercions)\":\n    [{\"id\": \"Later-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercion-Insertion/#Later-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_\":\n       {\"display\": \"Later\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercion Insertion\",\n         \"Controlling Evaluation with Coercions\"]}},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"L (in Automatic universe parameters and the  universe  command)\":\n    [{\"id\":\n      \"L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next-next\",\n      \"data\":\n      {\"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]}},\n      \"address\": \"/The-Type-System/Universes/\"},\n     {\"id\":\n      \"L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next\",\n      \"data\":\n      {\"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]}},\n      \"address\": \"/The-Type-System/Universes/\"},\n     {\"id\":\n      \"L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]}},\n      \"address\": \"/The-Type-System/Universes/\"},\n     {\"id\":\n      \"L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]},\n       \"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_\":\n       {\"display\": \"L\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe Variable Bindings\",\n         \"Automatic universe parameters and the  universe  command\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"K\":\n    [{\"id\": \"K\",\n      \"data\":\n      {\"/Basic-Propositions/Propositional-Equality/#K\":\n       {\"display\": \"K\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Uniqueness of Equality Proofs\"]}},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"ItIsSecret (in Stateful Predicates)\":\n    [{\"id\": \"ItIsSecret-_LPAR_in-Stateful-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#ItIsSecret-_LPAR_in-Stateful-Predicates_RPAR_\":\n       {\"display\": \"ItIsSecret\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Stateful Predicates\",\n         \"Stateful Predicates\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"IsEnum.to_from_id (in Deriving Handlers)\":\n    [{\"id\": \"IsEnum___to_from_id-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#IsEnum___to_from_id-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"to_from_id\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"IsEnum.toIdx (in Deriving Handlers)\":\n    [{\"id\": \"IsEnum___toIdx-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#IsEnum___toIdx-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"toIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"IsEnum.size (in Deriving Handlers)\":\n    [{\"id\": \"IsEnum___size-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#IsEnum___size-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"IsEnum.from_to_id (in Deriving Handlers)\":\n    [{\"id\": \"IsEnum___from_to_id-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#IsEnum___from_to_id-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"from_to_id\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"IsEnum.fromIdx (in Deriving Handlers)\":\n    [{\"id\": \"IsEnum___fromIdx-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#IsEnum___fromIdx-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"fromIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"IsEnum (in Deriving Handlers)\":\n    [{\"id\": \"IsEnum-_LPAR_in-Deriving-Handlers_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#IsEnum-_LPAR_in-Deriving-Handlers_RPAR_\":\n       {\"display\": \"IsEnum\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Handlers\",\n         \"Deriving Handlers\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"IsEmpty (in Extending  trivial)\":\n    [{\"id\": \"IsEmpty-_LPAR_in-Extending--trivial_RPAR_\",\n      \"data\":\n      {\"/Tactic-Proofs/Custom-Tactics/#IsEmpty-_LPAR_in-Extending--trivial_RPAR_\":\n       {\"display\": \"IsEmpty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Tactic Proofs\",\n         \"Custom Tactics\",\n         \"Tactic Macros\",\n         \"Extensible Tactic Macros\",\n         \"Extending  trivial\"]}},\n      \"address\": \"/Tactic-Proofs/Custom-Tactics/\"}],\n    \"IndexMap.values\":\n    [{\"id\": \"IndexMap___values\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___values\":\n       {\"display\": \"values\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.size_keys\":\n    [{\"id\": \"IndexMap___size_keys\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___size_keys\":\n       {\"display\": \"size_keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.size\":\n    [{\"id\": \"IndexMap___size-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___size\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___size-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___size-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___size\":\n       {\"display\": \"size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.mem_insert\":\n    [{\"id\": \"IndexMap___mem_insert\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next-next\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___mem_insert-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next-next\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___mem_insert-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next-next\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert\":\n       {\"display\": \"mem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.keys\":\n    [{\"id\": \"IndexMap___keys\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___keys\":\n       {\"display\": \"keys\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.insert\":\n    [{\"id\": \"IndexMap___insert-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___insert-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___insert-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___insert-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___insert\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___insert\":\n       {\"display\": \"insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.indices\":\n    [{\"id\": \"IndexMap___indices\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___indices\":\n       {\"display\": \"indices\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.getIdx_findIdx\":\n    [{\"id\": \"IndexMap___getIdx_findIdx-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next-next\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___getIdx_findIdx\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next-next\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___getIdx_findIdx-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next-next\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx\":\n       {\"display\": \"getIdx_findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.getIdx?\":\n    [{\"id\": \"IndexMap___getIdx___-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___-next\":\n       {\"display\": \"getIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___\":\n       {\"display\": \"getIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___getIdx___\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___-next\":\n       {\"display\": \"getIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___\":\n       {\"display\": \"getIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.getIdx\":\n    [{\"id\": \"IndexMap___getIdx\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx-next\":\n       {\"display\": \"getIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx\":\n       {\"display\": \"getIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___getIdx-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx-next\":\n       {\"display\": \"getIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx\":\n       {\"display\": \"getIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.getElem_insert\":\n    [{\"id\": \"IndexMap___getElem_insert\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next-next\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___getElem_insert-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next-next\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___getElem_insert-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next-next\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert\":\n       {\"display\": \"getElem_insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.findIdx_insert_self\":\n    [{\"id\": \"IndexMap___findIdx_insert_self-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next-next\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___findIdx_insert_self-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next-next\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___findIdx_insert_self\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next-next\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self\":\n       {\"display\": \"findIdx_insert_self\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.findIdx?\":\n    [{\"id\": \"IndexMap___findIdx___-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___-next\":\n       {\"display\": \"findIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___\":\n       {\"display\": \"findIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___findIdx___\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___-next\":\n       {\"display\": \"findIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___\":\n       {\"display\": \"findIdx?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.findIdx\":\n    [{\"id\": \"IndexMap___findIdx\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx-next\":\n       {\"display\": \"findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx\":\n       {\"display\": \"findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___findIdx-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx-next\":\n       {\"display\": \"findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx\":\n       {\"display\": \"findIdx\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.eraseSwap\":\n    [{\"id\": \"IndexMap___eraseSwap-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___eraseSwap-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___eraseSwap-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___eraseSwap-next-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___eraseSwap\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___eraseSwap-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap\":\n       {\"display\": \"eraseSwap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.emptyWithCapacity\":\n    [{\"id\": \"IndexMap___emptyWithCapacity-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___emptyWithCapacity-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___emptyWithCapacity\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___emptyWithCapacity-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity\":\n       {\"display\": \"emptyWithCapacity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.contains\":\n    [{\"id\": \"IndexMap___contains\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___contains-next\":\n       {\"display\": \"contains\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___contains\":\n       {\"display\": \"contains\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap___contains-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___contains-next\":\n       {\"display\": \"contains\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap___contains\":\n       {\"display\": \"contains\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap.WF\":\n    [{\"id\": \"IndexMap___WF\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap___WF\":\n       {\"display\": \"WF\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IndexMap\":\n    [{\"id\": \"IndexMap-next-next-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IndexMap-next-next-next-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap-next\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IndexMap\":\n       {\"display\": \"IndexMap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"IndexMap\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfNormalization\":\n    [{\"id\": \"IfNormalization\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfNormalization\":\n       {\"display\": \"IfNormalization\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.vars\":\n    [{\"id\": \"IfExpr___vars\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___vars\":\n       {\"display\": \"vars\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.var\":\n    [{\"id\": \"IfExpr___var\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___var\":\n       {\"display\": \"var\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.normalized\":\n    [{\"id\": \"IfExpr___normalized\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalized\":\n       {\"display\": \"normalized\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.normalize_spec\":\n    [{\"id\": \"IfExpr___normalize_spec\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next-next\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IfExpr___normalize_spec-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next-next\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IfExpr___normalize_spec-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next-next\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec\":\n       {\"display\": \"normalize_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.normalize\":\n    [{\"id\": \"IfExpr___normalize-next-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next-next\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IfExpr___normalize\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next-next\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"},\n     {\"id\": \"IfExpr___normalize-next\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next-next\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]},\n       \"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize\":\n       {\"display\": \"normalize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.normSize\":\n    [{\"id\": \"IfExpr___normSize\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___normSize\":\n       {\"display\": \"normSize\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The solution using  grind\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.lit\":\n    [{\"id\": \"IfExpr___lit\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___lit\":\n       {\"display\": \"lit\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.ite\":\n    [{\"id\": \"IfExpr___ite\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___ite\":\n       {\"display\": \"ite\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.hasRedundantIf\":\n    [{\"id\": \"IfExpr___hasRedundantIf\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___hasRedundantIf\":\n       {\"display\": \"hasRedundantIf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.hasNestedIf\":\n    [{\"id\": \"IfExpr___hasNestedIf\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___hasNestedIf\":\n       {\"display\": \"hasNestedIf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.hasConstantIf\":\n    [{\"id\": \"IfExpr___hasConstantIf\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___hasConstantIf\":\n       {\"display\": \"hasConstantIf\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.eval\":\n    [{\"id\": \"IfExpr___eval\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___eval\":\n       {\"display\": \"eval\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr.disjoint\":\n    [{\"id\": \"IfExpr___disjoint\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr___disjoint\":\n       {\"display\": \"disjoint\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"IfExpr\":\n    [{\"id\": \"IfExpr\",\n      \"data\":\n      {\"/The--grind--tactic/Bigger-Examples/#IfExpr\":\n       {\"display\": \"IfExpr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Bigger Examples\",\n         \"if - then - else  Normalization\",\n         \"The formal statement\"]}},\n      \"address\": \"/The--grind--tactic/Bigger-Examples/\"}],\n    \"Identity.run (in Missing  WPMonad  Instance)\":\n    [{\"id\": \"Identity___run-_LPAR_in-Missing--WPMonad--Instance_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#Identity___run-_LPAR_in-Missing--WPMonad--Instance_RPAR_\":\n       {\"display\": \"Identity.run\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Identity.of_wp_run_eq (in Missing  WPMonad  Instance)\":\n    [{\"id\":\n      \"Identity___of_wp_run_eq-_LPAR_in-Missing--WPMonad--Instance_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#Identity___of_wp_run_eq-_LPAR_in-Missing--WPMonad--Instance_RPAR_\":\n       {\"display\": \"Identity.of_wp_run_eq\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Identity (in Missing  WPMonad  Instance)\":\n    [{\"id\": \"Identity-_LPAR_in-Missing--WPMonad--Instance_RPAR_\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Predicate-Transformers/#Identity-_LPAR_in-Missing--WPMonad--Instance_RPAR_\":\n       {\"display\": \"Identity\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Predicate Transformers\",\n         \"Predicate Transformers\",\n         \"Weakest Precondition Monad Morphisms\",\n         \"Missing  WPMonad  Instance\"]}},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"IdT.run (in The Identity Monad Transformer )\":\n    [{\"id\": \"IdT___run-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#IdT___run-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_\":\n       {\"display\": \"IdT.run\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Varieties of Monads\",\n         \"Monad Transformers\",\n         \"The Identity Monad Transformer \"]}},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"IdT (in The Identity Monad Transformer )\":\n    [{\"id\": \"IdT-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_\",\n      \"data\":\n      {\"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#IdT-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_\":\n       {\"display\": \"IdT\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Functors, Monads and  do -Notation\",\n         \"Varieties of Monads\",\n         \"Monad Transformers\",\n         \"The Identity Monad Transformer \"]}},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"HotDrink.toString (in Current Namespace)\":\n    [{\"id\": \"HotDrink___toString-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#HotDrink___toString-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"HotDrink.tea (in Current Namespace)\":\n    [{\"id\": \"HotDrink___tea-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#HotDrink___tea-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"tea\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"HotDrink.ofString? (in Current Namespace)\":\n    [{\"id\": \"HotDrink___ofString___-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#HotDrink___ofString___-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"HotDrink.ofString?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"HotDrink.coffee (in Current Namespace)\":\n    [{\"id\": \"HotDrink___coffee-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#HotDrink___coffee-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"coffee\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"HotDrink.cocoa (in Current Namespace)\":\n    [{\"id\": \"HotDrink___cocoa-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#HotDrink___cocoa-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"cocoa\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"HotDrink (in Current Namespace)\":\n    [{\"id\": \"HotDrink-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#HotDrink-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"HotDrink\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Heap.insert (in Instances are Not Unique)\":\n    [{\"id\": \"Heap___insert-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap___insert-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"Heap.insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap.contents (in Instances are Not Unique)\":\n    [{\"id\": \"Heap___contents-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap___contents-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"contents\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap.bubbleUp (in Instances are Not Unique)\":\n    [{\"id\": \"Heap___bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap___bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"Heap.bubbleUp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap'.insert (in Instances are Not Unique)\":\n    [{\"id\": \"Heap______insert-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap______insert-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"Heap'.insert\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap'.contents (in Instances are Not Unique)\":\n    [{\"id\": \"Heap______contents-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap______contents-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"contents\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap'.bubbleUp (in Instances are Not Unique)\":\n    [{\"id\": \"Heap______bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap______bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"Heap'.bubbleUp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap' (in Instances are Not Unique)\":\n    [{\"id\": \"Heap___-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap___-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"Heap'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Heap (in Instances are Not Unique)\":\n    [{\"id\": \"Heap-_LPAR_in-Instances-are-Not-Unique_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#Heap-_LPAR_in-Instances-are-Not-Unique_RPAR_\":\n       {\"display\": \"Heap\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Instances are Not Unique\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Half.val (in Proofs in Public)\":\n    [{\"id\": \"Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half___val-_LPAR_in-Proofs-in-Public_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___val-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Half.ok (in Proofs in Public)\":\n    [{\"id\": \"Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half___ok-_LPAR_in-Proofs-in-Public_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half___ok-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"ok\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Half (in Proofs in Public)\":\n    [{\"id\": \"Half-_LPAR_in-Proofs-in-Public_RPAR_\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half-_LPAR_in-Proofs-in-Public_RPAR_-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next\",\n      \"data\":\n      {\"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_-next\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]},\n       \"/Source-Files-and-Modules/#Half-_LPAR_in-Proofs-in-Public_RPAR_\":\n       {\"display\": \"Half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Source Files and Modules\",\n         \"Modules and Visibility\",\n         \"Proofs in Public\"]}},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Greetings.english (in Named Section)\":\n    [{\"id\": \"Greetings___english-_LPAR_in-Named-Section_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Greetings___english-_LPAR_in-Named-Section_RPAR_\":\n       {\"display\": \"Greetings.english\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Controlling Section Scopes\",\n         \"Named Section\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Graph.empty (in Default values)\":\n    [{\"id\": \"Graph___empty-_LPAR_in-Default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Graph___empty-_LPAR_in-Default-values_RPAR_\":\n       {\"display\": \"Graph.empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Graph.adjacency (in Default values)\":\n    [{\"id\": \"Graph___adjacency-_LPAR_in-Default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Graph___adjacency-_LPAR_in-Default-values_RPAR_\":\n       {\"display\": \"adjacency\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Graph (in Default values)\":\n    [{\"id\": \"Graph-_LPAR_in-Default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Graph-_LPAR_in-Default-values_RPAR_\":\n       {\"display\": \"Graph\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Forest.statement (in Explicit Root Namespace)\":\n    [{\"id\": \"Forest___statement-_LPAR_in-Explicit-Root-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Forest___statement-_LPAR_in-Explicit-Root-Namespace_RPAR_\":\n       {\"display\": \"statement\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Explicit Root Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Forest.nextStatement (in Explicit Root Namespace)\":\n    [{\"id\": \"Forest___nextStatement-_LPAR_in-Explicit-Root-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Forest___nextStatement-_LPAR_in-Explicit-Root-Namespace_RPAR_\":\n       {\"display\": \"nextStatement\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Explicit Root Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Forest.color (in Explicit Root Namespace)\":\n    [{\"id\": \"Forest___color-_LPAR_in-Explicit-Root-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Forest___color-_LPAR_in-Explicit-Root-Namespace_RPAR_\":\n       {\"display\": \"color\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Explicit Root Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Float.zero_eq_zero_plus_zero (in No Kernel Reasoning About Floating-Point Numbers)\":\n    [{\"id\":\n      \"Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_-next\":\n       {\"display\": \"Float.zero_eq_zero_plus_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Floating-Point Numbers\",\n         \"No Kernel Reasoning About Floating-Point Numbers\"]},\n       \"/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_\":\n       {\"display\": \"Float.zero_eq_zero_plus_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Floating-Point Numbers\",\n         \"No Kernel Reasoning About Floating-Point Numbers\"]}},\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"},\n     {\"id\":\n      \"Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_-next\",\n      \"data\":\n      {\"/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_-next\":\n       {\"display\": \"Float.zero_eq_zero_plus_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Floating-Point Numbers\",\n         \"No Kernel Reasoning About Floating-Point Numbers\"]},\n       \"/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_\":\n       {\"display\": \"Float.zero_eq_zero_plus_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Floating-Point Numbers\",\n         \"No Kernel Reasoning About Floating-Point Numbers\"]}},\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Fix (in Non-strictly-positive inductive types)\":\n    [{\"id\": \"Fix-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Fix-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_\":\n       {\"display\": \"Fix\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Strict Positivity\",\n         \"Non-strictly-positive inductive types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Fin'.zero (in Ineligible decreasing parameters)\":\n    [{\"id\": \"Fin______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Fin______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Fin'.succ (in Ineligible decreasing parameters)\":\n    [{\"id\": \"Fin______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Fin______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Fin' (in Ineligible decreasing parameters)\":\n    [{\"id\": \"Fin___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Fin___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_\":\n       {\"display\": \"Fin'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Explicit Structural Recursion\",\n         \"Ineligible decreasing parameters\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"FileIterator.stream? (in Iterators and Effects)\":\n    [{\"id\": \"FileIterator___stream___-_LPAR_in-Iterators-and-Effects_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#FileIterator___stream___-_LPAR_in-Iterators-and-Effects_RPAR_\":\n       {\"display\": \"stream?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterators and Effects\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"FileIterator.count (in Iterators and Effects)\":\n    [{\"id\": \"FileIterator___count-_LPAR_in-Iterators-and-Effects_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#FileIterator___count-_LPAR_in-Iterators-and-Effects_RPAR_\":\n       {\"display\": \"count\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterators and Effects\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"FileIterator (in Iterators and Effects)\":\n    [{\"id\": \"FileIterator-_LPAR_in-Iterators-and-Effects_RPAR_\",\n      \"data\":\n      {\"/Iterators/Iterator-Definitions/#FileIterator-_LPAR_in-Iterators-and-Effects_RPAR_\":\n       {\"display\": \"FileIterator\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Iterators\",\n         \"Iterator Definitions\",\n         \"Finite and Productive Iterators\",\n         \"Iterators and Effects\"]}},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"FamilyBike (in #print  and Structure Types)\":\n    [{\"id\": \"FamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#FamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"FamilyBike\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ExtFun\":\n    [{\"id\": \"ExtFun\",\n      \"data\":\n      {\"/The-Type-System/Quotients/#ExtFun\":\n       {\"display\": \"ExtFun\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Quotients\",\n         \"Quotients and Function Extensionality\"]}},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Exp.var (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"Exp___var-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Exp___var-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"var\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Exp.size (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"Exp___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Exp___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"Exp.size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Exp.app (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"Exp___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Exp___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"app\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Exp (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"Exp-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Exp-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"Exp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Exceptions.mkFresh_spec\":\n    [{\"id\": \"Exceptions___mkFresh_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___mkFresh_spec\":\n       {\"display\": \"mkFresh_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.mkFreshN_spec\":\n    [{\"id\": \"Exceptions___mkFreshN_spec\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___mkFreshN_spec\":\n       {\"display\": \"mkFreshN_spec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.mkFreshN_correct\":\n    [{\"id\": \"Exceptions___mkFreshN_correct\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___mkFreshN_correct\":\n       {\"display\": \"mkFreshN_correct\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.mkFreshN\":\n    [{\"id\": \"Exceptions___mkFreshN\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___mkFreshN\":\n       {\"display\": \"mkFreshN\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.mkFresh\":\n    [{\"id\": \"Exceptions___mkFresh\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___mkFresh\":\n       {\"display\": \"mkFresh\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.Supply.property\":\n    [{\"id\": \"Exceptions___Supply___property\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___Supply___property\":\n       {\"display\": \"property\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.Supply.limit\":\n    [{\"id\": \"Exceptions___Supply___limit\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___Supply___limit\":\n       {\"display\": \"limit\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.Supply.counter\":\n    [{\"id\": \"Exceptions___Supply___counter\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___Supply___counter\":\n       {\"display\": \"counter\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Exceptions.Supply\":\n    [{\"id\": \"Exceptions___Supply\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Exceptions___Supply\":\n       {\"display\": \"Supply\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Exceptions\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"ExamplePropagators.propagateAndUp\":\n    [{\"id\": \"ExamplePropagators___propagateAndUp\",\n      \"data\":\n      {\"/The--grind--tactic/Constraint-Propagation/#ExamplePropagators___propagateAndUp\":\n       {\"display\": \"propagateAndUp\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Constraint Propagation\"]}},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"ExamplePropagators.propagateAndDown\":\n    [{\"id\": \"ExamplePropagators___propagateAndDown\",\n      \"data\":\n      {\"/The--grind--tactic/Constraint-Propagation/#ExamplePropagators___propagateAndDown\":\n       {\"display\": \"propagateAndDown\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Constraint Propagation\"]}},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"EvenPrime.notOne (in No structure subtyping)\":\n    [{\"id\": \"EvenPrime___notOne-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenPrime___notOne-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"notOne\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenPrime.isPrime (in No structure subtyping)\":\n    [{\"id\": \"EvenPrime___isPrime-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenPrime___isPrime-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"isPrime\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenPrime (in No structure subtyping)\":\n    [{\"id\": \"EvenPrime-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenPrime-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"EvenPrime\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenOddList.nil (in Recursor with parameters and indices)\":\n    [{\"id\":\n      \"EvenOddList___nil-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenOddList___nil-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Recursors\",\n         \"Recursor Types\",\n         \"Recursor with parameters and indices\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenOddList.nil (in A type with parameter and index)\":\n    [{\"id\":\n      \"EvenOddList___nil-_LPAR_in-A-type-with-parameter-and-index_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenOddList___nil-_LPAR_in-A-type-with-parameter-and-index_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A type with parameter and index\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenOddList.cons (in Recursor with parameters and indices)\":\n    [{\"id\":\n      \"EvenOddList___cons-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenOddList___cons-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Recursors\",\n         \"Recursor Types\",\n         \"Recursor with parameters and indices\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenOddList.cons (in A type with parameter and index)\":\n    [{\"id\":\n      \"EvenOddList___cons-_LPAR_in-A-type-with-parameter-and-index_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenOddList___cons-_LPAR_in-A-type-with-parameter-and-index_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A type with parameter and index\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenOddList (in Recursor with parameters and indices)\":\n    [{\"id\": \"EvenOddList-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenOddList-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_\":\n       {\"display\": \"EvenOddList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Recursors\",\n         \"Recursor Types\",\n         \"Recursor with parameters and indices\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenOddList (in A type with parameter and index)\":\n    [{\"id\": \"EvenOddList-_LPAR_in-A-type-with-parameter-and-index_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenOddList-_LPAR_in-A-type-with-parameter-and-index_RPAR_\":\n       {\"display\": \"EvenOddList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"A type with parameter and index\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenNumber.val (in No structure subtyping)\":\n    [{\"id\": \"EvenNumber___val-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenNumber___val-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenNumber.isEven (in No structure subtyping)\":\n    [{\"id\": \"EvenNumber___isEven-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenNumber___isEven-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"isEven\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenNumber (in No structure subtyping)\":\n    [{\"id\": \"EvenNumber-_LPAR_in-No-structure-subtyping_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenNumber-_LPAR_in-No-structure-subtyping_RPAR_\":\n       {\"display\": \"EvenNumber\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"No structure subtyping\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenList.nil (in Mutually Defined Inductive Types)\":\n    [{\"id\": \"EvenList___nil-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenList___nil-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Mutually Defined Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenList.cons (in Mutually Defined Inductive Types)\":\n    [{\"id\": \"EvenList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Mutually Defined Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"EvenList (in Mutually Defined Inductive Types)\":\n    [{\"id\": \"EvenList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#EvenList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_\":\n       {\"display\": \"EvenList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Mutually Defined Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Even.zero (in Splitting Predicates)\":\n    [{\"id\": \"Even___zero-_LPAR_in-Splitting-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/Case-Analysis/#Even___zero-_LPAR_in-Splitting-Predicates_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Case Analysis\",\n         \"Selection Heuristics\",\n         \"Splitting Predicates\"]}},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Even.zero (in Even and odd)\":\n    [{\"id\": \"Even___zero-_LPAR_in-Even-and-odd_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Even___zero-_LPAR_in-Even-and-odd_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Even and odd\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Even.zero (in Even Numbers)\":\n    [{\"id\": \"Even___zero-_LPAR_in-Even-Numbers_RPAR_\",\n      \"data\":\n      {\"/Introduction/#Even___zero-_LPAR_in-Even-Numbers_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Examples\",\n         \"Even Numbers\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"Even.zero\":\n    [{\"id\": \"Even___zero\",\n      \"data\":\n      {\"/Introduction/#Even___zero\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Constant, Syntax, and Tactic References\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"Even.succ (in Even and odd)\":\n    [{\"id\": \"Even___succ-_LPAR_in-Even-and-odd_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Even___succ-_LPAR_in-Even-and-odd_RPAR_\":\n       {\"display\": \"succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Even and odd\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Even.step (in Splitting Predicates)\":\n    [{\"id\": \"Even___step-_LPAR_in-Splitting-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/Case-Analysis/#Even___step-_LPAR_in-Splitting-Predicates_RPAR_\":\n       {\"display\": \"step\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Case Analysis\",\n         \"Selection Heuristics\",\n         \"Splitting Predicates\"]}},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Even.plusTwo (in Even Numbers)\":\n    [{\"id\": \"Even___plusTwo-_LPAR_in-Even-Numbers_RPAR_\",\n      \"data\":\n      {\"/Introduction/#Even___plusTwo-_LPAR_in-Even-Numbers_RPAR_\":\n       {\"display\": \"plusTwo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Examples\",\n         \"Even Numbers\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"Even.plusTwo\":\n    [{\"id\": \"Even___plusTwo\",\n      \"data\":\n      {\"/Introduction/#Even___plusTwo\":\n       {\"display\": \"plusTwo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Constant, Syntax, and Tactic References\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"Even.number (in Defining Coercions)\":\n    [{\"id\": \"Even___number-_LPAR_in-Defining-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Even___number-_LPAR_in-Defining-Coercions_RPAR_\":\n       {\"display\": \"number\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Defining Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Even.isEven (in Defining Coercions)\":\n    [{\"id\": \"Even___isEven-_LPAR_in-Defining-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Even___isEven-_LPAR_in-Defining-Coercions_RPAR_\":\n       {\"display\": \"isEven\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Defining Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Even.half (in Default Instances)\":\n    [{\"id\": \"Even___half-_LPAR_in-Default-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#Even___half-_LPAR_in-Default-Instances_RPAR_\":\n       {\"display\": \"half\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Default Instances\",\n         \"Default Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Even (in Splitting Predicates)\":\n    [{\"id\": \"Even-_LPAR_in-Splitting-Predicates_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/Case-Analysis/#Even-_LPAR_in-Splitting-Predicates_RPAR_\":\n       {\"display\": \"Even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"Case Analysis\",\n         \"Selection Heuristics\",\n         \"Splitting Predicates\"]}},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Even (in Even and odd)\":\n    [{\"id\": \"Even-_LPAR_in-Even-and-odd_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Even-_LPAR_in-Even-and-odd_RPAR_\":\n       {\"display\": \"Even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Recursors\",\n         \"Even and odd\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Even (in Even Numbers)\":\n    [{\"id\": \"Even-_LPAR_in-Even-Numbers_RPAR_\",\n      \"data\":\n      {\"/Introduction/#Even-_LPAR_in-Even-Numbers_RPAR_\":\n       {\"display\": \"Even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Examples\",\n         \"Even Numbers\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"Even (in Defining Coercions)\":\n    [{\"id\": \"Even-_LPAR_in-Defining-Coercions_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Even-_LPAR_in-Defining-Coercions_RPAR_\":\n       {\"display\": \"Even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"Defining Coercions\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Even (in Default Instances)\":\n    [{\"id\": \"Even-_LPAR_in-Default-Instances_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Instance-Declarations/#Even-_LPAR_in-Default-Instances_RPAR_\":\n       {\"display\": \"Even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Instance Declarations\",\n         \"Default Instances\",\n         \"Default Instances\"]}},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Even\":\n    [{\"id\": \"Even\",\n      \"data\":\n      {\"/Introduction/#Even\":\n       {\"display\": \"Even\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Introduction\",\n         \"Typographical Conventions\",\n         \"Constant, Syntax, and Tactic References\"]}},\n      \"address\": \"/Introduction/\"}],\n    \"Error.integerOverflow\":\n    [{\"id\": \"Error___integerOverflow\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Error___integerOverflow\":\n       {\"display\": \"integerOverflow\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Error\":\n    [{\"id\": \"Error\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Error\":\n       {\"display\": \"Error\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Extending  mvcgen  With Support for Custom Monads\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"Eq.unique\":\n    [{\"id\": \"Eq___unique\",\n      \"data\":\n      {\"/Basic-Propositions/Propositional-Equality/#Eq___unique\":\n       {\"display\": \"Eq.unique\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Propositions\",\n         \"Propositional Equality\",\n         \"Uniqueness of Equality Proofs\"]}},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Env.get (in Coercing to Function Types)\":\n    [{\"id\": \"Env___get-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Env___get-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Env.get\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Env.extend (in Coercing to Function Types)\":\n    [{\"id\": \"Env___extend-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Env___extend-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Env.extend\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Env.empty (in Coercing to Function Types)\":\n    [{\"id\": \"Env___empty-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Env___empty-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Env.empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"Env (in Coercing to Function Types)\":\n    [{\"id\": \"Env-_LPAR_in-Coercing-to-Function-Types_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-to-Function-Types/#Env-_LPAR_in-Coercing-to-Function-Types_RPAR_\":\n       {\"display\": \"Env\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing to Function Types\",\n         \"Coercing to Function Types\"]}},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"ElectricVehicle.batteries (in #print  and Structure Types)\":\n    [{\"id\":\n      \"ElectricVehicle___batteries-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ElectricVehicle___batteries-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"batteries\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ElectricVehicle (in #print  and Structure Types)\":\n    [{\"id\": \"ElectricVehicle-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ElectricVehicle-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"ElectricVehicle\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ElectricFamilyBike (in #print  and Structure Types)\":\n    [{\"id\": \"ElectricFamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ElectricFamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"ElectricFamilyBike\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ElectricBike (in #print  and Structure Types)\":\n    [{\"id\": \"ElectricBike-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ElectricBike-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"ElectricBike\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either.right (in Parameters before and after the colon)\":\n    [{\"id\":\n      \"Either___right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either___right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"right\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either.left (in Parameters before and after the colon)\":\n    [{\"id\":\n      \"Either___left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either___left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"left\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either.inr (in Universes, constructors, and parameters)\":\n    [{\"id\":\n      \"Either___inr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either___inr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\":\n       {\"display\": \"inr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Universe Levels\",\n         \"Universes, constructors, and parameters\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either.inl (in Universes, constructors, and parameters)\":\n    [{\"id\":\n      \"Either___inl-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either___inl-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\":\n       {\"display\": \"inl\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Universe Levels\",\n         \"Universes, constructors, and parameters\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either''.right (in Parameters before and after the colon)\":\n    [{\"id\":\n      \"Either_________right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either_________right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"right\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either''.left (in Parameters before and after the colon)\":\n    [{\"id\":\n      \"Either_________left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either_________left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"left\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either'' (in Parameters before and after the colon)\":\n    [{\"id\":\n      \"Either______-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either______-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"Either''\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either' (in Parameters before and after the colon)\":\n    [{\"id\": \"Either___-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either___-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"Either'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either (in Universes, constructors, and parameters)\":\n    [{\"id\":\n      \"Either-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\":\n       {\"display\": \"Either\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Universe Levels\",\n         \"Universes, constructors, and parameters\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Either (in Parameters before and after the colon)\":\n    [{\"id\": \"Either-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Either-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_\":\n       {\"display\": \"Either\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Example Inductive Types\",\n         \"Parameters before and after the colon\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"DivBy3 (in Subtype Coercions)\":\n    [{\"id\": \"DivBy3-_LPAR_in-Subtype-Coercions_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Subtypes/#DivBy3-_LPAR_in-Subtype-Coercions_RPAR_\":\n       {\"display\": \"DivBy3\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Subtypes\",\n         \"Subtype Coercions\"]}},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"Dessert.cupcake (in Using  in  for Local Scopes)\":\n    [{\"id\": \"Dessert___cupcake-_LPAR_in-Using--in--for-Local-Scopes_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#Dessert___cupcake-_LPAR_in-Using--in--for-Local-Scopes_RPAR_\":\n       {\"display\": \"Dessert.cupcake\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Section Scopes\",\n         \"Controlling Section Scopes\",\n         \"Using  in  for Local Scopes\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Decreasing.singleton (in Patterns for Constructors)\":\n    [{\"id\": \"Decreasing___singleton-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Decreasing___singleton-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"singleton\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Decreasing.nil (in Patterns for Constructors)\":\n    [{\"id\": \"Decreasing___nil-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Decreasing___nil-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"nil\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Decreasing.cons (in Patterns for Constructors)\":\n    [{\"id\": \"Decreasing___cons-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Decreasing___cons-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"cons\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Decreasing (in Patterns for Constructors)\":\n    [{\"id\": \"Decreasing-_LPAR_in-Patterns-for-Constructors_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#Decreasing-_LPAR_in-Patterns-for-Constructors_RPAR_\":\n       {\"display\": \"Decreasing\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Patterns for Constructors\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Decision.yes (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Decision___yes-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Decision___yes-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"yes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Decision.ofBool (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Decision___ofBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Decision___ofBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"Decision.ofBool\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Decision.no (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Decision___no-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Decision___no-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"no\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Decision.maybe (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Decision___maybe-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Decision___maybe-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"maybe\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Decision (in CoeOut  vs  Coe  instances)\":\n    [{\"id\": \"Decision-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\",\n      \"data\":\n      {\"/Coercions/Coercing-Between-Types/#Decision-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_\":\n       {\"display\": \"Decision\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercing Between Types\",\n         \"CoeOut  vs  Coe  instances\"]}},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Decimal.toNat (in Defining Coercions: Decimal Numbers)\":\n    [{\"id\":\n      \"Decimal___toNat-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Decimal___toNat-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\":\n       {\"display\": \"Decimal.toNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Defining Coercions: Decimal Numbers\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Decimal.digits (in Defining Coercions: Decimal Numbers)\":\n    [{\"id\":\n      \"Decimal___digits-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Decimal___digits-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\":\n       {\"display\": \"digits\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Defining Coercions: Decimal Numbers\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Decimal (in Defining Coercions: Decimal Numbers)\":\n    [{\"id\": \"Decimal-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Decimal-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_\":\n       {\"display\": \"Decimal\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Defining Coercions: Decimal Numbers\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Day.we (in Implementing Ranges)\":\n    [{\"id\": \"Day___we-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___we-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"we\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.tu (in Implementing Ranges)\":\n    [{\"id\": \"Day___tu-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___tu-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"tu\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.toNat (in Implementing Ranges)\":\n    [{\"id\": \"Day___toNat-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___toNat-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day.toNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.th (in Implementing Ranges)\":\n    [{\"id\": \"Day___th-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___th-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"th\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.succMany?_zero (in Implementing Ranges)\":\n    [{\"id\": \"Day___succMany____zero-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___succMany____zero-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day.succMany?_zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.succMany?_steps (in Implementing Ranges)\":\n    [{\"id\": \"Day___succMany____steps-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___succMany____steps-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day.succMany?_steps\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.succMany?_add_one (in Implementing Ranges)\":\n    [{\"id\": \"Day___succMany____add_one-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___succMany____add_one-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day.succMany?_add_one\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.succ? (in Implementing Ranges)\":\n    [{\"id\": \"Day___succ___-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___succ___-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day.succ?\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.su (in Implementing Ranges)\":\n    [{\"id\": \"Day___su-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___su-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"su\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.sa (in Implementing Ranges)\":\n    [{\"id\": \"Day___sa-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___sa-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"sa\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.mo (in Implementing Ranges)\":\n    [{\"id\": \"Day___mo-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___mo-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"mo\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.isWeekday (in Implementing Ranges)\":\n    [{\"id\": \"Day___isWeekday-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___isWeekday-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day.isWeekday\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day.fr (in Implementing Ranges)\":\n    [{\"id\": \"Day___fr-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day___fr-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"fr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Day (in Implementing Ranges)\":\n    [{\"id\": \"Day-_LPAR_in-Implementing-Ranges_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/Ranges/#Day-_LPAR_in-Implementing-Ranges_RPAR_\":\n       {\"display\": \"Day\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"Ranges\",\n         \"Implementing Ranges\",\n         \"Implementing Ranges\"]}},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"DRTree (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"DRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#DRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"DRTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"D.x (in Disambiguation via Typing)\":\n    [{\"id\": \"D___x-_LPAR_in-Disambiguation-via-Typing_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#D___x-_LPAR_in-Disambiguation-via-Typing_RPAR_\":\n       {\"display\": \"D.x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Disambiguation via Typing\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"CustomUnit.customUnit (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"CustomUnit___customUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#CustomUnit___customUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"customUnit\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"CustomUnit (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"CustomUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#CustomUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"CustomUnit\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"Complex.real (in Private Field Values)\":\n    [{\"id\": \"Complex___real-_LPAR_in-Private-Field-Values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Complex___real-_LPAR_in-Private-Field-Values_RPAR_\":\n       {\"display\": \"real\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Field Values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Complex.imaginary (in Private Field Values)\":\n    [{\"id\": \"Complex___imaginary-_LPAR_in-Private-Field-Values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Complex___imaginary-_LPAR_in-Private-Field-Values_RPAR_\":\n       {\"display\": \"imaginary\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Field Values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Complex (in Private Field Values)\":\n    [{\"id\": \"Complex-_LPAR_in-Private-Field-Values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Complex-_LPAR_in-Private-Field-Values_RPAR_\":\n       {\"display\": \"Complex\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Private Field Values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Colors.hasYellow (in Postfix Ascription vs  show)\":\n    [{\"id\": \"Colors___hasYellow-_LPAR_in-Postfix-Ascription-vs--show_RPAR_\",\n      \"data\":\n      {\"/Terms/Type-Ascription/#Colors___hasYellow-_LPAR_in-Postfix-Ascription-vs--show_RPAR_\":\n       {\"display\": \"Colors.hasYellow\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Type Ascription\",\n         \"Postfix Ascription vs  show\"]}},\n      \"address\": \"/Terms/Type-Ascription/\"}],\n    \"Colors (in Postfix Ascription vs  show)\":\n    [{\"id\": \"Colors-_LPAR_in-Postfix-Ascription-vs--show_RPAR_\",\n      \"data\":\n      {\"/Terms/Type-Ascription/#Colors-_LPAR_in-Postfix-Ascription-vs--show_RPAR_\":\n       {\"display\": \"Colors\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Type Ascription\",\n         \"Postfix Ascription vs  show\"]}},\n      \"address\": \"/Terms/Type-Ascription/\"}],\n    \"ColdDrink.water (in Current Namespace)\":\n    [{\"id\": \"ColdDrink___water-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#ColdDrink___water-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"water\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"ColdDrink.toString (in Current Namespace)\":\n    [{\"id\": \"ColdDrink___toString-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#ColdDrink___toString-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"_root_.ColdDrink.toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"ColdDrink.juice (in Current Namespace)\":\n    [{\"id\": \"ColdDrink___juice-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#ColdDrink___juice-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"juice\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"ColdDrink (in Current Namespace)\":\n    [{\"id\": \"ColdDrink-_LPAR_in-Current-Namespace_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#ColdDrink-_LPAR_in-Current-Namespace_RPAR_\":\n       {\"display\": \"ColdDrink\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Current Namespace\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Codec.type (in Universe level expressions)\":\n    [{\"id\": \"Codec___type-_LPAR_in-Universe-level-expressions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#Codec___type-_LPAR_in-Universe-level-expressions_RPAR_\":\n       {\"display\": \"type\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe level expressions\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Codec.encode (in Universe level expressions)\":\n    [{\"id\": \"Codec___encode-_LPAR_in-Universe-level-expressions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#Codec___encode-_LPAR_in-Universe-level-expressions_RPAR_\":\n       {\"display\": \"encode\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe level expressions\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Codec.decode (in Universe level expressions)\":\n    [{\"id\": \"Codec___decode-_LPAR_in-Universe-level-expressions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#Codec___decode-_LPAR_in-Universe-level-expressions_RPAR_\":\n       {\"display\": \"decode\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe level expressions\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Codec.char (in Universe level expressions)\":\n    [{\"id\": \"Codec___char-_LPAR_in-Universe-level-expressions_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Universes/#Codec___char-_LPAR_in-Universe-level-expressions_RPAR_\":\n       {\"display\": \"Codec.char\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Universes\",\n         \"Polymorphism\",\n         \"Universe level expressions\"]}},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Clause (in Reducibility and Instance Synthesis)\":\n    [{\"id\": \"Clause-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Clause-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_\":\n       {\"display\": \"Clause\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Controlling Reduction\",\n         \"Reducibility and Instance Synthesis\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Children (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"Children-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Children-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"Children\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"CanRepr.mk (in Universes, constructors, and parameters)\":\n    [{\"id\":\n      \"CanRepr___mk-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#CanRepr___mk-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Universe Levels\",\n         \"Universes, constructors, and parameters\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"CanRepr (in Universes, constructors, and parameters)\":\n    [{\"id\":\n      \"CanRepr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#CanRepr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_\":\n       {\"display\": \"CanRepr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Universe Levels\",\n         \"Universes, constructors, and parameters\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"C2.Semigroup.op_assoc (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C2___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"op_assoc\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Semigroup (in Class vs Structure Constructors)\":\n    [{\"id\": \"C2___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Semigroup\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Monoid.ident_right (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C2___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident_right\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Monoid.ident_left (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C2___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident_left\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Monoid.ident (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C2___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Monoid (in Class vs Structure Constructors)\":\n    [{\"id\": \"C2___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Monoid\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Magma.op (in Class vs Structure Constructors)\":\n    [{\"id\": \"C2___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"op\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C2.Magma (in Class vs Structure Constructors)\":\n    [{\"id\": \"C2___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C2___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Magma\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C1.Monoid.ident_right (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C1___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C1___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident_right\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C1.Monoid.ident_left (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C1___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C1___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident_left\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C1.Monoid.ident (in Class vs Structure Constructors)\":\n    [{\"id\":\n      \"C1___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C1___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"ident\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C1.Monoid (in Class vs Structure Constructors)\":\n    [{\"id\": \"C1___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#C1___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_\":\n       {\"display\": \"Monoid\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class vs Structure Constructors\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"C.x (in Disambiguation via Typing)\":\n    [{\"id\": \"C___x-_LPAR_in-Disambiguation-via-Typing_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#C___x-_LPAR_in-Disambiguation-via-Typing_RPAR_\":\n       {\"display\": \"C.x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Disambiguation via Typing\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"C.a6 (in Opening Nested Namespaces)\":\n    [{\"id\": \"C___a6-_LPAR_in-Opening-Nested-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#C___a6-_LPAR_in-Opening-Nested-Namespaces_RPAR_\":\n       {\"display\": \"a6\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Nested Namespaces\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Book.title (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"Book___title-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Book___title-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"title\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Book.author (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"Book___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Book___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"author\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Book (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"Book-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Book-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"Book\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Binding (in Mutual strict positivity)\":\n    [{\"id\": \"Binding-_LPAR_in-Mutual-strict-positivity_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Binding-_LPAR_in-Mutual-strict-positivity_RPAR_\":\n       {\"display\": \"Binding\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Requirements\",\n         \"Positivity\",\n         \"Mutual strict positivity\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Bin.zero (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin___zero-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin___zero-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"zero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bin.toString (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin___toString-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin___toString-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"Bin.toString\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bin.succ (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin___succ-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin___succ-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"Bin.succ\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bin.one (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin___one-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin___one-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"one\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bin.ofNat (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin___ofNat-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin___ofNat-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"Bin.ofNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bin.done (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin___done-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin___done-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"done\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bin (in Coercions and  OfNat)\":\n    [{\"id\": \"Bin-_LPAR_in-Coercions-and--OfNat_RPAR_\",\n      \"data\":\n      {\"/Coercions/#Bin-_LPAR_in-Coercions-and--OfNat_RPAR_\":\n       {\"display\": \"Bin\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Coercions\",\n         \"Coercions and  OfNat\"]}},\n      \"address\": \"/Coercions/\"}],\n    \"Bicycle (in #print  and Structure Types)\":\n    [{\"id\": \"Bicycle-_LPAR_in-___print--and-Structure-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Bicycle-_LPAR_in-___print--and-Structure-Types_RPAR_\":\n       {\"display\": \"Bicycle\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"#print  and Structure Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"BalancedTree.rbranch (in Type Refinement)\":\n    [{\"id\": \"BalancedTree___rbranch-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___rbranch-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"rbranch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"BalancedTree.lbranch (in Type Refinement)\":\n    [{\"id\": \"BalancedTree___lbranch-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___lbranch-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"lbranch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"BalancedTree.isPerfectlyBalanced (in Type Refinement)\":\n    [{\"id\":\n      \"BalancedTree___isPerfectlyBalanced-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___isPerfectlyBalanced-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"BalancedTree.isPerfectlyBalanced\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"BalancedTree.filledWith (in Type Refinement)\":\n    [{\"id\": \"BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_-next\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_-next\":\n       {\"display\": \"BalancedTree.filledWith\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]},\n       \"/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"BalancedTree.filledWith\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"},\n     {\"id\": \"BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_-next\":\n       {\"display\": \"BalancedTree.filledWith\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]},\n       \"/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"BalancedTree.filledWith\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"BalancedTree.empty (in Type Refinement)\":\n    [{\"id\": \"BalancedTree___empty-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___empty-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"empty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"BalancedTree.branch (in Type Refinement)\":\n    [{\"id\": \"BalancedTree___branch-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree___branch-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"branch\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"BalancedTree (in Type Refinement)\":\n    [{\"id\": \"BalancedTree-_LPAR_in-Type-Refinement_RPAR_\",\n      \"data\":\n      {\"/Terms/Pattern-Matching/#BalancedTree-_LPAR_in-Type-Refinement_RPAR_\":\n       {\"display\": \"BalancedTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Pattern Matching\",\n         \"Types\",\n         \"Type Refinement\"]}},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Bad (in Non-strictly-positive inductive types)\":\n    [{\"id\": \"Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_-next\":\n       {\"display\": \"Bad\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Strict Positivity\",\n         \"Non-strictly-positive inductive types\"]},\n       \"/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_\":\n       {\"display\": \"Bad\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Strict Positivity\",\n         \"Non-strictly-positive inductive types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_-next\":\n       {\"display\": \"Bad\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Strict Positivity\",\n         \"Non-strictly-positive inductive types\"]},\n       \"/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_\":\n       {\"display\": \"Bad\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Logical Model\",\n         \"Well-Formedness Requirements\",\n         \"Strict Positivity\",\n         \"Non-strictly-positive inductive types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"BRTree (in Invalid Nested Inductive Types)\":\n    [{\"id\": \"BRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#BRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_\":\n       {\"display\": \"BRTree\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Mutual Inductive Types\",\n         \"Nested Inductive Types\",\n         \"Invalid Nested Inductive Types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"B.y (in Longer Identifier Prefixes Take Precedence)\":\n    [{\"id\": \"B___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#B___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Identifier Prefixes Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"B.x (in Current Namespace Contents Take Precedence Over Opened Namespaces)\":\n    [{\"id\":\n      \"B___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#B___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Current Namespace Contents Take Precedence Over Opened Namespaces\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"B.x (in Ambiguous Identifiers)\":\n    [{\"id\": \"B___x-_LPAR_in-Ambiguous-Identifiers_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#B___x-_LPAR_in-Ambiguous-Identifiers_RPAR_\":\n       {\"display\": \"B.x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Ambiguous Identifiers\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"B.a4 (in Opening Nested Namespaces)\":\n    [{\"id\": \"B___a4-_LPAR_in-Opening-Nested-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#B___a4-_LPAR_in-Opening-Nested-Namespaces_RPAR_\":\n       {\"display\": \"a4\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Nested Namespaces\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"B.C.a5 (in Opening Nested Namespaces)\":\n    [{\"id\": \"B___C___a5-_LPAR_in-Opening-Nested-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#B___C___a5-_LPAR_in-Opening-Nested-Namespaces_RPAR_\":\n       {\"display\": \"a5\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Nested Namespaces\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"B (in Longer Identifier Prefixes Take Precedence)\":\n    [{\"id\": \"B-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#B-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\":\n       {\"display\": \"B\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Identifier Prefixes Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"B (in Injectivity Patterns)\":\n    [{\"id\": \"B-_LPAR_in-Injectivity-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#B-_LPAR_in-Injectivity-Patterns_RPAR_\":\n       {\"display\": \"B\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Injectivity Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"B (in Deriving Multiple Classes)\":\n    [{\"id\": \"B-_LPAR_in-Deriving-Multiple-Classes_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#B-_LPAR_in-Deriving-Multiple-Classes_RPAR_\":\n       {\"display\": \"B\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Multiple Classes\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"AugmentedIntList.list (in Patterns and default values)\":\n    [{\"id\":\n      \"AugmentedIntList___list-_LPAR_in-Patterns-and-default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntList___list-_LPAR_in-Patterns-and-default-values_RPAR_\":\n       {\"display\": \"list\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Patterns and default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AugmentedIntList.isEmpty (in Patterns and default values)\":\n    [{\"id\":\n      \"AugmentedIntList___isEmpty-_LPAR_in-Patterns-and-default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntList___isEmpty-_LPAR_in-Patterns-and-default-values_RPAR_\":\n       {\"display\": \"AugmentedIntList.isEmpty\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Patterns and default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AugmentedIntList.augmentation (in Patterns and default values)\":\n    [{\"id\":\n      \"AugmentedIntList___augmentation-_LPAR_in-Patterns-and-default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntList___augmentation-_LPAR_in-Patterns-and-default-values_RPAR_\":\n       {\"display\": \"augmentation\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Patterns and default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AugmentedIntList (in Patterns and default values)\":\n    [{\"id\": \"AugmentedIntList-_LPAR_in-Patterns-and-default-values_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntList-_LPAR_in-Patterns-and-default-values_RPAR_\":\n       {\"display\": \"AugmentedIntList\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Patterns and default values\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AugmentedIntArray.augmentation (in Updating arrays)\":\n    [{\"id\": \"AugmentedIntArray___augmentation-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntArray___augmentation-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"augmentation\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AugmentedIntArray.array (in Updating arrays)\":\n    [{\"id\": \"AugmentedIntArray___array-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntArray___array-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"array\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AugmentedIntArray (in Updating arrays)\":\n    [{\"id\": \"AugmentedIntArray-_LPAR_in-Updating-arrays_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AugmentedIntArray-_LPAR_in-Updating-arrays_RPAR_\":\n       {\"display\": \"AugmentedIntArray\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Constructors\",\n         \"Updating arrays\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AtLeastOne.mk (in Anonymous constructors)\":\n    [{\"id\": \"AtLeastOne___mk-_LPAR_in-Anonymous-constructors_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AtLeastOne___mk-_LPAR_in-Anonymous-constructors_RPAR_\":\n       {\"display\": \"mk\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Anonymous Constructor Syntax\",\n         \"Anonymous constructors\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AtLeastOne.head' (in Anonymous constructors)\":\n    [{\"id\": \"AtLeastOne___head___-_LPAR_in-Anonymous-constructors_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AtLeastOne___head___-_LPAR_in-Anonymous-constructors_RPAR_\":\n       {\"display\": \"AtLeastOne.head'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Anonymous Constructor Syntax\",\n         \"Anonymous constructors\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AtLeastOne.head (in Anonymous constructors)\":\n    [{\"id\": \"AtLeastOne___head-_LPAR_in-Anonymous-constructors_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AtLeastOne___head-_LPAR_in-Anonymous-constructors_RPAR_\":\n       {\"display\": \"AtLeastOne.head\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Anonymous Constructor Syntax\",\n         \"Anonymous constructors\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AtLeastOne (in Anonymous constructors)\":\n    [{\"id\": \"AtLeastOne-_LPAR_in-Anonymous-constructors_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AtLeastOne-_LPAR_in-Anonymous-constructors_RPAR_\":\n       {\"display\": \"AtLeastOne\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Inductive Type Declarations\",\n         \"Anonymous Constructor Syntax\",\n         \"Anonymous constructors\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AtLeast.val_gt_i (in Iterated Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"AtLeast___val_gt_i-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#AtLeast___val_gt_i-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"val_gt_i\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Iterated Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"AtLeast.val (in Iterated Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"AtLeast___val-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#AtLeast___val-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"val\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Iterated Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"AtLeast.add (in Iterated Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"AtLeast___add-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#AtLeast___add-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"AtLeast.add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Iterated Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"AtLeast (in Iterated Automatic Implicit Parameters)\":\n    [{\"id\": \"AtLeast-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#AtLeast-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"AtLeast\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Iterated Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Assertion\":\n    [{\"id\": \"Assertion\",\n      \"data\":\n      {\"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/#Assertion\":\n       {\"display\": \"Assertion\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  mvcgen  tactic\",\n         \"Tutorial: Verifying Imperative Programs Using  mvcgen\",\n         \"Proof Mode for Stateful Goals\"]}},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"ArraySized.size_eq_length (in Dependent projection types)\":\n    [{\"id\":\n      \"ArraySized___size_eq_length-_LPAR_in-Dependent-projection-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ArraySized___size_eq_length-_LPAR_in-Dependent-projection-types_RPAR_\":\n       {\"display\": \"size_eq_length\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Dependent projection types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ArraySized.array (in Dependent projection types)\":\n    [{\"id\": \"ArraySized___array-_LPAR_in-Dependent-projection-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ArraySized___array-_LPAR_in-Dependent-projection-types_RPAR_\":\n       {\"display\": \"array\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Dependent projection types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ArraySized (in Dependent projection types)\":\n    [{\"id\": \"ArraySized-_LPAR_in-Dependent-projection-types_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#ArraySized-_LPAR_in-Dependent-projection-types_RPAR_\":\n       {\"display\": \"ArraySized\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Fields\",\n         \"Dependent projection types\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Array.find (in Tail Recursion with Branching)\":\n    [{\"id\": \"Array___find-_LPAR_in-Tail-Recursion-with-Branching_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#Array___find-_LPAR_in-Tail-Recursion-with-Branching_RPAR_\":\n       {\"display\": \"Array.find\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Partial Fixpoint Recursion\",\n         \"Tail-Recursive Functions\",\n         \"Tail Recursion with Branching\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"App.size (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"App___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#App___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"App.size\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"App.numArgs (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"App___numArgs-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#App___numArgs-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"App.numArgs\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"App.fn (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"App___fn-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#App___fn-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"fn\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"App.app (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"App___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#App___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"app\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"App (in Mutual Structural Recursion Over Mutual Types)\":\n    [{\"id\":\n      \"App-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\",\n      \"data\":\n      {\"/Definitions/Recursive-Definitions/#App-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_\":\n       {\"display\": \"App\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Recursive Definitions\",\n         \"Structural Recursion\",\n         \"Mutual Structural Recursion\",\n         \"Mutual Structural Recursion Over Mutual Types\"]}},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Answer.yes (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"Answer___yes-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#Answer___yes-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"yes\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Answer.no (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"Answer___no-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#Answer___no-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"no\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Answer.maybe (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"Answer___maybe-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#Answer___maybe-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"maybe\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Answer (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)\":\n    [{\"id\":\n      \"Answer-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\",\n      \"data\":\n      {\"/Definitions/Headers-and-Signatures/#Answer-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_\":\n       {\"display\": \"Answer\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Definitions\",\n         \"Headers and Signatures\",\n         \"Automatic Implicit Parameters\",\n         \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\"]}},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"AlsoUnit (in Definitional Equality of Unit-Like Types)\":\n    [{\"id\":\n      \"AlsoUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\",\n      \"data\":\n      {\"/Basic-Types/The-Unit-Type/#AlsoUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_\":\n       {\"display\": \"AlsoUnit\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Basic Types\",\n         \"The Unit Type\",\n         \"Definitional Equality\",\n         \"Definitional Equality of Unit-Like Types\"]}},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"AllNonZero (in Non-Dependent Functions Don't Bind Variables)\":\n    [{\"id\":\n      \"AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_-next\":\n       {\"display\": \"AllNonZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Functions\",\n         \"Non-Dependent Functions Don't Bind Variables\"]},\n       \"/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_\":\n       {\"display\": \"AllNonZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Functions\",\n         \"Non-Dependent Functions Don't Bind Variables\"]}},\n      \"address\": \"/The-Type-System/Functions/\"},\n     {\"id\":\n      \"AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_-next\",\n      \"data\":\n      {\"/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_-next\":\n       {\"display\": \"AllNonZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Functions\",\n         \"Non-Dependent Functions Don't Bind Variables\"]},\n       \"/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_\":\n       {\"display\": \"AllNonZero\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Functions\",\n         \"Non-Dependent Functions Don't Bind Variables\"]}},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"AddMul' (in Class Abbreviations)\":\n    [{\"id\": \"AddMul___-_LPAR_in-Class-Abbreviations_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#AddMul___-_LPAR_in-Class-Abbreviations_RPAR_\":\n       {\"display\": \"AddMul'\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class Abbreviations\",\n         \"Class Abbreviations\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"AddMul (in Class Abbreviations)\":\n    [{\"id\": \"AddMul-_LPAR_in-Class-Abbreviations_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Class-Declarations/#AddMul-_LPAR_in-Class-Abbreviations_RPAR_\":\n       {\"display\": \"AddMul\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Class Declarations\",\n         \"Class Abbreviations\",\n         \"Class Abbreviations\"]}},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"AddExpr.reprPrec (in Infix Syntax)\":\n    [{\"id\": \"AddExpr___reprPrec-_LPAR_in-Infix-Syntax_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#AddExpr___reprPrec-_LPAR_in-Infix-Syntax_RPAR_\":\n       {\"display\": \"AddExpr.reprPrec\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Infix Syntax\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"AddExpr.nat (in Infix Syntax)\":\n    [{\"id\": \"AddExpr___nat-_LPAR_in-Infix-Syntax_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#AddExpr___nat-_LPAR_in-Infix-Syntax_RPAR_\":\n       {\"display\": \"nat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Infix Syntax\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"AddExpr.add (in Infix Syntax)\":\n    [{\"id\": \"AddExpr___add-_LPAR_in-Infix-Syntax_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#AddExpr___add-_LPAR_in-Infix-Syntax_RPAR_\":\n       {\"display\": \"add\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Infix Syntax\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"AddExpr (in Infix Syntax)\":\n    [{\"id\": \"AddExpr-_LPAR_in-Infix-Syntax_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#AddExpr-_LPAR_in-Infix-Syntax_RPAR_\":\n       {\"display\": \"AddExpr\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"How To Write a  Repr  Instance\",\n         \"Infix Syntax\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"AcademicWork.discipline (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"AcademicWork___discipline-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AcademicWork___discipline-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"discipline\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AcademicWork.author (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"AcademicWork___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AcademicWork___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"author\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"AcademicWork (in Structure type inheritance with overlapping fields)\":\n    [{\"id\":\n      \"AcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\",\n      \"data\":\n      {\"/The-Type-System/Inductive-Types/#AcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_\":\n       {\"display\": \"AcademicWork\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The Type System\",\n         \"Inductive Types\",\n         \"Structure Declarations\",\n         \"Structure Inheritance\",\n         \"Structure type inheritance with overlapping fields\"]}},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ABC.toNat (in Atomic Types and  Repr)\":\n    [{\"id\": \"ABC___toNat-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#ABC___toNat-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"ABC.toNat\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"ABC.c (in Atomic Types and  Repr)\":\n    [{\"id\": \"ABC___c-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#ABC___c-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"c\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"ABC.b (in Atomic Types and  Repr)\":\n    [{\"id\": \"ABC___b-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#ABC___b-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"b\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"ABC.a (in Atomic Types and  Repr)\":\n    [{\"id\": \"ABC___a-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#ABC___a-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"a\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"ABC (in Atomic Types and  Repr)\":\n    [{\"id\": \"ABC-_LPAR_in-Atomic-Types-and--Repr_RPAR_\",\n      \"data\":\n      {\"/Interacting-with-Lean/#ABC-_LPAR_in-Atomic-Types-and--Repr_RPAR_\":\n       {\"display\": \"ABC\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Interacting with Lean\",\n         \"Formatted Output\",\n         \"Repr\",\n         \"Atomic Types\",\n         \"Atomic Types and  Repr\"]}},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"A.y (in Longer Identifier Prefixes Take Precedence)\":\n    [{\"id\": \"A___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#A___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\":\n       {\"display\": \"y\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Identifier Prefixes Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"A.x (in Longer Prefixes of Current Namespace Take Precedence)\":\n    [{\"id\":\n      \"A___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#A___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Prefixes of Current Namespace Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"A.x (in Current Namespace Contents Take Precedence Over Opened Namespaces)\":\n    [{\"id\":\n      \"A___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#A___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Current Namespace Contents Take Precedence Over Opened Namespaces\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"A.x (in Ambiguous Identifiers)\":\n    [{\"id\": \"A___x-_LPAR_in-Ambiguous-Identifiers_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#A___x-_LPAR_in-Ambiguous-Identifiers_RPAR_\":\n       {\"display\": \"A.x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Ambiguous Identifiers\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"A.a1 (in Opening Nested Namespaces)\":\n    [{\"id\": \"A___a1-_LPAR_in-Opening-Nested-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#A___a1-_LPAR_in-Opening-Nested-Namespaces_RPAR_\":\n       {\"display\": \"a1\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Nested Namespaces\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"A.B.a2 (in Opening Nested Namespaces)\":\n    [{\"id\": \"A___B___a2-_LPAR_in-Opening-Nested-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#A___B___a2-_LPAR_in-Opening-Nested-Namespaces_RPAR_\":\n       {\"display\": \"a2\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Nested Namespaces\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"A.B.C.x (in Longer Prefixes of Current Namespace Take Precedence)\":\n    [{\"id\":\n      \"A___B___C___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#A___B___C___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_\":\n       {\"display\": \"x\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Prefixes of Current Namespace Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"A.B.C.a3 (in Opening Nested Namespaces)\":\n    [{\"id\": \"A___B___C___a3-_LPAR_in-Opening-Nested-Namespaces_RPAR_\",\n      \"data\":\n      {\"/Namespaces-and-Sections/#A___B___C___a3-_LPAR_in-Opening-Nested-Namespaces_RPAR_\":\n       {\"display\": \"a3\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Namespaces and Sections\",\n         \"Namespaces\",\n         \"Namespaces and Section Scopes\",\n         \"Opening Nested Namespaces\"]}},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"A (in Longer Identifier Prefixes Take Precedence)\":\n    [{\"id\": \"A-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\",\n      \"data\":\n      {\"/Terms/Identifiers/#A-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_\":\n       {\"display\": \"A\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Terms\",\n         \"Identifiers\",\n         \"Longer Identifier Prefixes Take Precedence\"]}},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"A (in Injectivity Patterns)\":\n    [{\"id\": \"A-_LPAR_in-Injectivity-Patterns_RPAR_\",\n      \"data\":\n      {\"/The--grind--tactic/E___matching/#A-_LPAR_in-Injectivity-Patterns_RPAR_\":\n       {\"display\": \"A\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"The  grind  tactic\",\n         \"E‑matching\",\n         \"Patterns\",\n         \"Injectivity Patterns\"]}},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"A (in Deriving Multiple Classes)\":\n    [{\"id\": \"A-_LPAR_in-Deriving-Multiple-Classes_RPAR_\",\n      \"data\":\n      {\"/Type-Classes/Deriving-Instances/#A-_LPAR_in-Deriving-Multiple-Classes_RPAR_\":\n       {\"display\": \"A\",\n        \"context\":\n        [\"The Lean Language Reference\",\n         \"Type Classes\",\n         \"Deriving Instances\",\n         \"Deriving Multiple Classes\"]}},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}]}},\n  \"Verso.Genre.Manual.doc.tech\":\n  {\"title\": \"Terminology\",\n   \"description\": \"Terminology\",\n   \"contents\":\n   {\"ι reduction\":\n    [{\"id\": \"--tech-term-___-reduction\",\n      \"data\": {\"term\": \"ι-reduction\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ι\":\n    [{\"id\": \"--tech-term-___-next-next\",\n      \"data\": {\"term\": \"ι\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"η equivalence\":\n    [{\"id\": \"--tech-term-___-equivalence\",\n      \"data\": {\"term\": \"η-equivalence\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"ζ\":\n    [{\"id\": \"--tech-term-___-next-next-next\",\n      \"data\": {\"term\": \"ζ\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"δ\":\n    [{\"id\": \"--tech-term-___-next\",\n      \"data\": {\"term\": \"δ\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"β\":\n    [{\"id\": \"--tech-term-___\",\n      \"data\": {\"term\": \"β\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"Σ type\":\n    [{\"id\": \"--tech-term-___-types\",\n      \"data\": {\"term\": \"Σ-types\"},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"workspace\":\n    [{\"id\": \"--tech-term-workspace\",\n      \"data\": {\"term\": \"workspace\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"witnes\":\n    [{\"id\": \"--tech-term-witness\",\n      \"data\": {\"term\": \"witness\"},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"whitespace\":\n    [{\"id\": \"--tech-term-whitespace\",\n      \"data\": {\"term\": \"whitespace\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"well typed\":\n    [{\"id\": \"--tech-term-well-typed\",\n      \"data\": {\"term\": \"well-typed\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"well founded relation\":\n    [{\"id\": \"--tech-term-well-founded-relation\",\n      \"data\": {\"term\": \"well-founded relation\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"well founded recursion\":\n    [{\"id\": \"--tech-term-well-founded-recursion-next\",\n      \"data\": {\"term\": \"well-founded recursion\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"--tech-term-well-founded-recursion\",\n      \"data\": {\"term\": \"well-founded recursion\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"weakest precondition\":\n    [{\"id\": \"--tech-term-weakest-preconditions\",\n      \"data\": {\"term\": \"weakest preconditions\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"verification condition\":\n    [{\"id\": \"--tech-term-verification-conditions-next\",\n      \"data\": {\"term\": \"verification conditions\"},\n      \"address\": \"/The--mvcgen--tactic/Overview/\"},\n     {\"id\": \"--tech-term-verification-conditions\",\n      \"data\": {\"term\": \"verification conditions\"},\n      \"address\": \"/The--mvcgen--tactic/\"}],\n    \"vc\":\n    [{\"id\": \"--tech-term-VCs\",\n      \"data\": {\"term\": \"VCs\"},\n      \"address\": \"/The--mvcgen--tactic/\"}],\n    \"upward propagation\":\n    [{\"id\": \"--tech-term-Upward-propagation\",\n      \"data\": {\"term\": \"Upward propagation\"},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"universe polymorphism\":\n    [{\"id\": \"--tech-term-universe-polymorphism\",\n      \"data\": {\"term\": \"universe polymorphism\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"universe parameter\":\n    [{\"id\": \"--tech-term-universe-parameters\",\n      \"data\": {\"term\": \"universe parameters\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"universe lifting\":\n    [{\"id\": \"--tech-term-universe-lifting\",\n      \"data\": {\"term\": \"universe lifting\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"universe level\":\n    [{\"id\": \"--tech-term-level\",\n      \"data\": {\"term\": \"level\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"universe\":\n    [{\"id\": \"--tech-term-universes\",\n      \"data\": {\"term\": \"universes\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"unit like type\":\n    [{\"id\": \"--tech-term-Unit-like-types\",\n      \"data\": {\"term\": \"Unit-like types\"},\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"unexpander\":\n    [{\"id\": \"--tech-term-unexpanders\",\n      \"data\": {\"term\": \"unexpanders\"},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"unboxed\":\n    [{\"id\": \"--tech-term-Unboxed\",\n      \"data\": {\"term\": \"Unboxed\"},\n      \"address\": \"/Run-Time-Code/Boxing/\"}],\n    \"type constructor\":\n    [{\"id\": \"--tech-term-type-constructors\",\n      \"data\": {\"term\": \"type constructors\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"type clas\":\n    [{\"id\": \"--tech-term-type-class\",\n      \"data\": {\"term\": \"type class\"},\n      \"address\": \"/Type-Classes/\"}],\n    \"type ascription\":\n    [{\"id\": \"--tech-term-Type-ascriptions\",\n      \"data\": {\"term\": \"Type ascriptions\"},\n      \"address\": \"/Terms/Type-Ascription/\"}],\n    \"transitive dependency\":\n    [{\"id\": \"--tech-term-transitive-dependencies\",\n      \"data\": {\"term\": \"transitive dependencies\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"trace file\":\n    [{\"id\": \"--tech-term-trace-files\",\n      \"data\": {\"term\": \"trace files\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"trace\":\n    [{\"id\": \"--tech-term-traces\",\n      \"data\": {\"term\": \"traces\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"total correctness interpretation\":\n    [{\"id\": \"--tech-term-total-correctness-interpretation\",\n      \"data\": {\"term\": \"total correctness interpretation\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"total\":\n    [{\"id\": \"--tech-term-total\",\n      \"data\": {\"term\": \"total\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"toolchain override\":\n    [{\"id\": \"--tech-term-toolchain-override\",\n      \"data\": {\"term\": \"toolchain override\"},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain file\":\n    [{\"id\": \"--tech-term-toolchain-file\",\n      \"data\": {\"term\": \"toolchain file\"},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain\":\n    [{\"id\": \"--tech-term-toolchain\",\n      \"data\": {\"term\": \"toolchain\"},\n      \"address\": \"/Build-Tools-and-Distribution/\"}],\n    \"token antiquotation\":\n    [{\"id\": \"--tech-term-token-antiquotations\",\n      \"data\": {\"term\": \"token antiquotations\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"token\":\n    [{\"id\": \"--tech-term-tokens\",\n      \"data\": {\"term\": \"tokens\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"thunk\":\n    [{\"id\": \"--tech-term-thunk\",\n      \"data\": {\"term\": \"thunk\"},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"theorem\":\n    [{\"id\": \"--tech-term-theorems\",\n      \"data\": {\"term\": \"theorems\"},\n      \"address\": \"/Definitions/Theorems/\"}],\n    \"test driver\":\n    [{\"id\": \"--tech-term-test-driver\",\n      \"data\": {\"term\": \"test driver\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"term elaborator\":\n    [{\"id\": \"--tech-term-Term-elaborators\",\n      \"data\": {\"term\": \"Term elaborators\"},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"term\":\n    [{\"id\": \"--tech-term-Terms\",\n      \"data\": {\"term\": \"Terms\"},\n      \"address\": \"/The-Type-System/\"},\n     {\"id\": \"--tech-term-Terms-next\",\n      \"data\": {\"term\": \"Terms\"},\n      \"address\": \"/Terms/\"}],\n    \"technical terminology\":\n    [{\"id\": \"--tech-term-Technical-terminology\",\n      \"data\": {\"term\": \"Technical terminology\"},\n      \"address\": \"/Introduction/\"}],\n    \"task\":\n    [{\"id\": \"--tech-term-Tasks\",\n      \"data\": {\"term\": \"Tasks\"},\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"target\":\n    [{\"id\": \"--tech-term-target\",\n      \"data\": {\"term\": \"target\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"tail position\":\n    [{\"id\": \"--tech-term-tail-position\",\n      \"data\": {\"term\": \"tail position\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"synthetic hole\":\n    [{\"id\": \"--tech-term-synthetic-holes\",\n      \"data\": {\"term\": \"synthetic holes\"},\n      \"address\": \"/Terms/Holes/\"}],\n    \"synthetic\":\n    [{\"id\": \"--tech-term-Synthetic\",\n      \"data\": {\"term\": \"Synthetic\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"synthesi\":\n    [{\"id\": \"--tech-term-synthesizes\",\n      \"data\": {\"term\": \"synthesizes\"},\n      \"address\": \"/Type-Classes/\"}],\n    \"syntax rule\":\n    [{\"id\": \"--tech-term-syntax-rules\",\n      \"data\": {\"term\": \"syntax rules\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"syntax kind\":\n    [{\"id\": \"--tech-term-syntax-kind\",\n      \"data\": {\"term\": \"syntax kind\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"syntax category\":\n    [{\"id\": \"--tech-term-syntax-categories\",\n      \"data\": {\"term\": \"syntax categories\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"sum type\":\n    [{\"id\": \"--tech-term-Sum-types\",\n      \"data\": {\"term\": \"Sum types\"},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"subsingleton\":\n    [{\"id\": \"--tech-term-subsingleton\",\n      \"data\": {\"term\": \"subsingleton\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"subgoal\":\n    [{\"id\": \"--tech-term-subgoals\",\n      \"data\": {\"term\": \"subgoals\"},\n      \"address\": \"/Tactic-Proofs/\"}],\n    \"structure instance\":\n    [{\"id\": \"--tech-term-structure-instance\",\n      \"data\": {\"term\": \"structure instance\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"structure\":\n    [{\"id\": \"--tech-term-Structures\",\n      \"data\": {\"term\": \"Structures\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"strictly positive\":\n    [{\"id\": \"--tech-term-strictly-positive\",\n      \"data\": {\"term\": \"strictly positive\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"strict sub term\":\n    [{\"id\": \"--tech-term-strict-sub-term\",\n      \"data\": {\"term\": \"strict sub-term\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"strict implicit\":\n    [{\"id\": \"--tech-term-Strict-implicit\",\n      \"data\": {\"term\": \"Strict implicit\"},\n      \"address\": \"/Terms/Functions/\"}],\n    \"stream\":\n    [{\"id\": \"--tech-term-Streams\",\n      \"data\": {\"term\": \"Streams\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"state monad\":\n    [{\"id\": \"--tech-term-State-monads\",\n      \"data\": {\"term\": \"State monads\"},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"standard output\":\n    [{\"id\": \"--tech-term-standard-output\",\n      \"data\": {\"term\": \"standard output\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"standard input\":\n    [{\"id\": \"--tech-term-standard-input\",\n      \"data\": {\"term\": \"standard input\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"standard error\":\n    [{\"id\": \"--tech-term-standard-error\",\n      \"data\": {\"term\": \"standard error\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"splice suffix\":\n    [{\"id\": \"--tech-term-splice-suffix\",\n      \"data\": {\"term\": \"splice suffix\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"splice\":\n    [{\"id\": \"--tech-term-splices\",\n      \"data\": {\"term\": \"splices\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"specification lemma\":\n    [{\"id\": \"--tech-term-Specification-lemmas\",\n      \"data\": {\"term\": \"Specification lemmas\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"source information\":\n    [{\"id\": \"--tech-term-source-information\",\n      \"data\": {\"term\": \"source information\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"source file\":\n    [{\"id\": \"--tech-term-source-file\",\n      \"data\": {\"term\": \"source files\"},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"--tech-term-source-files\",\n      \"data\": {\"term\": \"source files\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"source directory\":\n    [{\"id\": \"--tech-term-source-directory\",\n      \"data\": {\"term\": \"source directory\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"sort\":\n    [{\"id\": \"--tech-term-sorts\",\n      \"data\": {\"term\": \"sorts\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"simproc\":\n    [{\"id\": \"--tech-term-simprocs\",\n      \"data\": {\"term\": \"simprocs\"},\n      \"address\": \"/The-Simplifier/Rewrite-Rules/\"}],\n    \"simp set\":\n    [{\"id\": \"--tech-term-simp-set\",\n      \"data\": {\"term\": \"simp set\"},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"simp normal form\":\n    [{\"id\": \"--tech-term-simp-normal-form\",\n      \"data\": {\"term\": \"simp normal form\"},\n      \"address\": \"/The-Simplifier/Simp-Normal-Forms/\"}],\n    \"signature\":\n    [{\"id\": \"--tech-term-signature\",\n      \"data\": {\"term\": \"signature\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"severity\":\n    [{\"id\": \"--tech-term-severity\",\n      \"data\": {\"term\": \"severity\"},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"setoid\":\n    [{\"id\": \"--tech-term-setoid\",\n      \"data\": {\"term\": \"setoid\"},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"semireducible\":\n    [{\"id\": \"--tech-term-Semireducible\",\n      \"data\": {\"term\": \"Semireducible\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"semi output parameter\":\n    [{\"id\": \"--tech-term-Semi-output-parameters\",\n      \"data\": {\"term\": \"Semi-output parameters\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"section variable\":\n    [{\"id\": \"--tech-term-Section-variables\",\n      \"data\": {\"term\": \"Section variables\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"section scope\":\n    [{\"id\": \"--tech-term-section-scope\",\n      \"data\": {\"term\": \"section scope\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"section\":\n    [{\"id\": \"--tech-term-section\",\n      \"data\": {\"term\": \"section\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"scientific literal\":\n    [{\"id\": \"--tech-term-scientific-literals\",\n      \"data\": {\"term\": \"scientific literals\"},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"schematic variable\":\n    [{\"id\": \"--tech-term-schematic-variables\",\n      \"data\": {\"term\": \"schematic variables\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"round\":\n    [{\"id\": \"--tech-term-round\",\n      \"data\": {\"term\": \"round\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"root package\":\n    [{\"id\": \"--tech-term-root-package\",\n      \"data\": {\"term\": \"root package\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"root directory\":\n    [{\"id\": \"--tech-term-root-directory\",\n      \"data\": {\"term\": \"root directory\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"right hand side\":\n    [{\"id\": \"--tech-term-right-hand-side\",\n      \"data\": {\"term\": \"right-hand side\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"right fold\":\n    [{\"id\": \"--tech-term-Right-folds\",\n      \"data\": {\"term\": \"Right folds\"},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"right associative\":\n    [{\"id\": \"--tech-term-Right-associative\",\n      \"data\": {\"term\": \"Right-associative\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"resolve\":\n    [{\"id\": \"--tech-term-resolving\",\n      \"data\": {\"term\": \"resolving\"},\n      \"address\": \"/Terms/Identifiers/\"},\n     {\"id\": \"--tech-term-resolving-next\",\n      \"data\": {\"term\": \"resolving\"},\n      \"address\": \"/IO/Tasks-and-Threads/\"},\n     {\"id\": \"--tech-term-resolve\",\n      \"data\": {\"term\": \"resolving\"},\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"require\":\n    [{\"id\": \"--tech-term-require\",\n      \"data\": {\"term\": \"require\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"repl\":\n    [{\"id\": \"--tech-term-REPL\",\n      \"data\": {\"term\": \"REPL\"},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"relevant\":\n    [{\"id\": \"--tech-term-relevant\",\n      \"data\": {\"term\": \"relevant\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"reference count\":\n    [{\"id\": \"--tech-term-reference-counting\",\n      \"data\": {\"term\": \"reference counting\"},\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"reduction\":\n    [{\"id\": \"--tech-term-reduction\",\n      \"data\": {\"term\": \"reduction\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"reducible\":\n    [{\"id\": \"--tech-term-Reducible\",\n      \"data\": {\"term\": \"Reducible\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"reducibility\":\n    [{\"id\": \"--tech-term-reducibility\",\n      \"data\": {\"term\": \"reducibility\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"recursor\":\n    [{\"id\": \"--tech-term-recursor\",\n      \"data\": {\"term\": \"recursor\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"realizing\":\n    [{\"id\": \"--tech-term-realizing\",\n      \"data\": {\"term\": \"realizing\"},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"reader monad\":\n    [{\"id\": \"--tech-term-Reader-monads\",\n      \"data\": {\"term\": \"Reader monads\"},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"raw string literal\":\n    [{\"id\": \"--tech-term-raw-string-literals\",\n      \"data\": {\"term\": \"raw string literals\"},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"raw identifier\":\n    [{\"id\": \"--tech-term-raw-identifier\",\n      \"data\": {\"term\": \"raw identifier\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"raw\":\n    [{\"id\": \"--tech-term-raw\",\n      \"data\": {\"term\": \"raw\"},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"range\":\n    [{\"id\": \"--tech-term-range\",\n      \"data\": {\"term\": \"range\"},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"quotient type\":\n    [{\"id\": \"--tech-term-Quotient-types\",\n      \"data\": {\"term\": \"Quotient types\"},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"quotation\":\n    [{\"id\": \"--tech-term-Quotation\",\n      \"data\": {\"term\": \"Quotation\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"quasiquotation\":\n    [{\"id\": \"--tech-term-Quasiquotation\",\n      \"data\": {\"term\": \"Quasiquotation\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"pure iterator\":\n    [{\"id\": \"--tech-term-pure\",\n      \"data\": {\"term\": \"pure\"},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"public section\":\n    [{\"id\": \"--tech-term-public-section\",\n      \"data\": {\"term\": \"public section\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"public scope\":\n    [{\"id\": \"--tech-term-public-scope\",\n      \"data\": {\"term\": \"public scope\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"protected\":\n    [{\"id\": \"--tech-term-protected\",\n      \"data\": {\"term\": \"protected\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"propositional extensionality\":\n    [{\"id\": \"--tech-term-Extensionality\",\n      \"data\": {\"term\": \"Extensionality\"},\n      \"address\": \"/The-Type-System/Propositions/\"}],\n    \"propositional equality\":\n    [{\"id\": \"--tech-term-Propositional-equality\",\n      \"data\": {\"term\": \"Propositional equality\"},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"proposition\":\n    [{\"id\": \"--tech-term-Propositions\",\n      \"data\": {\"term\": \"Propositions\"},\n      \"address\": \"/The-Type-System/Propositions/\"}],\n    \"proof term\":\n    [{\"id\": \"--tech-term-proof-terms\",\n      \"data\": {\"term\": \"proof terms\"},\n      \"address\": \"/Tactic-Proofs/\"}],\n    \"proof state\":\n    [{\"id\": \"--tech-term-proof-state\",\n      \"data\": {\"term\": \"proof state\"},\n      \"address\": \"/Tactic-Proofs/\"}],\n    \"proof irrelevance\":\n    [{\"id\": \"--tech-term-proof-irrelevance\",\n      \"data\": {\"term\": \"proof irrelevance\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"projection function\":\n    [{\"id\": \"--tech-term-projection-function\",\n      \"data\": {\"term\": \"projection function\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"productive iterator\":\n    [{\"id\": \"--tech-term-Productive\",\n      \"data\": {\"term\": \"Productive\"},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"producer\":\n    [{\"id\": \"--tech-term-Producers\",\n      \"data\": {\"term\": \"Producers\"},\n      \"address\": \"/Iterators/\"}],\n    \"private scope\":\n    [{\"id\": \"--tech-term-private-scope\",\n      \"data\": {\"term\": \"private scope\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"private\":\n    [{\"id\": \"--tech-term-private\",\n      \"data\": {\"term\": \"private\"},\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"priority\":\n    [{\"id\": \"--tech-term-priorities\",\n      \"data\": {\"term\": \"priority\"},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"},\n     {\"id\": \"--tech-term-priority\",\n      \"data\": {\"term\": \"priority\"},\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"prelude\":\n    [{\"id\": \"--tech-term-prelude\",\n      \"data\": {\"term\": \"prelude\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"predicative\":\n    [{\"id\": \"--tech-term-predicative\",\n      \"data\": {\"term\": \"predicative\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"predicate transformer semantic\":\n    [{\"id\": \"--tech-term-predicate-transformer-semantics\",\n      \"data\": {\"term\": \"predicate transformer semantics\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"precondition\":\n    [{\"id\": \"--tech-term-precondition\",\n      \"data\": {\"term\": \"precondition\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"precedence\":\n    [{\"id\": \"--tech-term-precedence\",\n      \"data\": {\"term\": \"precedence\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"pre resolved identifier\":\n    [{\"id\": \"--tech-term-pre-resolved-identifiers\",\n      \"data\": {\"term\": \"pre-resolved identifiers\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"pre definition\":\n    [{\"id\": \"--tech-term-pre-definition\",\n      \"data\": {\"term\": \"pre-definition\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"postcondition shape\":\n    [{\"id\": \"--tech-term-postcondition-shape\",\n      \"data\": {\"term\": \"postcondition shape\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"postcondition\":\n    [{\"id\": \"--tech-term-postcondition\",\n      \"data\": {\"term\": \"postcondition\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"plausible step\":\n    [{\"id\": \"--tech-term-plausible-steps\",\n      \"data\": {\"term\": \"plausible steps\"},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"placeholder term\":\n    [{\"id\": \"--tech-term-placeholder-term\",\n      \"data\": {\"term\": \"placeholder term\"},\n      \"address\": \"/Terms/Holes/\"}],\n    \"pattern variable\":\n    [{\"id\": \"--tech-term-Pattern-variables\",\n      \"data\": {\"term\": \"Pattern variables\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"pattern matching\":\n    [{\"id\": \"--tech-term-Pattern-matching\",\n      \"data\": {\"term\": \"Pattern matching\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"pattern\":\n    [{\"id\": \"--tech-term-patterns\",\n      \"data\": {\"term\": \"patterns\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"path dependency\":\n    [{\"id\": \"--tech-term-path-dependencies\",\n      \"data\": {\"term\": \"path dependencies\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"path\":\n    [{\"id\": \"--tech-term-paths\",\n      \"data\": {\"term\": \"paths\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"partial fixpoint\":\n    [{\"id\": \"--tech-term-partial-fixpoint\",\n      \"data\": {\"term\": \"partial fixpoint\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial correctness theorem\":\n    [{\"id\": \"--tech-term-partial-correctness-theorem\",\n      \"data\": {\"term\": \"partial correctness theorem\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"partial correctness interpretation\":\n    [{\"id\": \"--tech-term-partial-correctness-interpretation\",\n      \"data\": {\"term\": \"partial correctness interpretation\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"parent projection\":\n    [{\"id\": \"--tech-term-parent-projections\",\n      \"data\": {\"term\": \"parent projections\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"parameter\":\n    [{\"id\": \"--tech-term-parameters\",\n      \"data\": {\"term\": \"parameters\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"package directory\":\n    [{\"id\": \"--tech-term-package-directory\",\n      \"data\": {\"term\": \"package directory\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"package configuration\":\n    [{\"id\": \"--tech-term-package-configuration\",\n      \"data\": {\"term\": \"package configuration\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"package\":\n    [{\"id\": \"--tech-term-package\",\n      \"data\": {\"term\": \"package\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"--tech-term-packages\",\n      \"data\": {\"term\": \"package\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"owned\":\n    [{\"id\": \"--tech-term-owned\",\n      \"data\": {\"term\": \"owned\"},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"output parameter\":\n    [{\"id\": \"--tech-term-output-parameter\",\n      \"data\": {\"term\": \"output parameter\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"original\":\n    [{\"id\": \"--tech-term-Original\",\n      \"data\": {\"term\": \"Original\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"origin\":\n    [{\"id\": \"--tech-term-origin\",\n      \"data\": {\"term\": \"origin\"},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"optional parameter\":\n    [{\"id\": \"--tech-term-optional-parameters\",\n      \"data\": {\"term\": \"optional parameters\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"opened namespace\":\n    [{\"id\": \"--tech-term-opened-namespaces\",\n      \"data\": {\"term\": \"opened namespaces\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"opened\":\n    [{\"id\": \"--tech-term-opened\",\n      \"data\": {\"term\": \"opened\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"opaque constant\":\n    [{\"id\": \"--tech-term-Opaque-constants\",\n      \"data\": {\"term\": \"Opaque constants\"},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"olean\":\n    [{\"id\": \"--tech-term-___olean-file-next\",\n      \"data\": {\"term\": \".olean file\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"notation item\":\n    [{\"id\": \"--tech-term-notation-items-next\",\n      \"data\": {\"term\": \"notation items\"},\n      \"address\": \"/Notations-and-Macros/Notations/\"},\n     {\"id\": \"--tech-term-notation-items\",\n      \"data\": {\"term\": \"notation items\"},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"notation\":\n    [{\"id\": \"--tech-term-notation\",\n      \"data\": {\"term\": \"notation\"},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"normal form\":\n    [{\"id\": \"--tech-term-normal-form\",\n      \"data\": {\"term\": \"normal form\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"non terminal simp\":\n    [{\"id\": \"--tech-term-non-terminal-simps\",\n      \"data\": {\"term\": \"non-terminal simps\"},\n      \"address\": \"/The-Simplifier/Terminal-vs-Non-Terminal-Positions/\"}],\n    \"non dependent\":\n    [{\"id\": \"--tech-term-Non-Dependent\",\n      \"data\": {\"term\": \"Non-Dependent\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"non associative\":\n    [{\"id\": \"--tech-term-Non-associative\",\n      \"data\": {\"term\": \"Non-associative\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"node\":\n    [{\"id\": \"--tech-term-Nodes\",\n      \"data\": {\"term\": \"Nodes\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"nested inductive type\":\n    [{\"id\": \"--tech-term-Nested-inductive-types\",\n      \"data\": {\"term\": \"Nested inductive types\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"natural number\":\n    [{\"id\": \"--tech-term-natural-numbers\",\n      \"data\": {\"term\": \"natural numbers\"},\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"namespace\":\n    [{\"id\": \"--tech-term-namespaces\",\n      \"data\": {\"term\": \"namespaces\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"named pattern\":\n    [{\"id\": \"--tech-term-Named-patterns\",\n      \"data\": {\"term\": \"Named patterns\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"named argument\":\n    [{\"id\": \"--tech-term-named-arguments\",\n      \"data\": {\"term\": \"named arguments\"},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"mutually recursive\":\n    [{\"id\": \"--tech-term-mutually-recursive\",\n      \"data\": {\"term\": \"mutually recursive\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"mutual block\":\n    [{\"id\": \"--tech-term-mutual-block\",\n      \"data\": {\"term\": \"mutual block\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"multi pattern\":\n    [{\"id\": \"--tech-term-multi-pattern\",\n      \"data\": {\"term\": \"multi-pattern\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"motive\":\n    [{\"id\": \"--tech-term-motive\",\n      \"data\": {\"term\": \"motive\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"morally canonical\":\n    [{\"id\": \"--tech-term-morally-canonical\",\n      \"data\": {\"term\": \"morally canonical\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"monadic iterator\":\n    [{\"id\": \"--tech-term-Monadic\",\n      \"data\": {\"term\": \"Monadic\"},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"monad transformer\":\n    [{\"id\": \"--tech-term-monad-transformer\",\n      \"data\": {\"term\": \"monad transformer\"},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"monad law\":\n    [{\"id\": \"--tech-term-monad-laws\",\n      \"data\": {\"term\": \"monad laws\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"monad\":\n    [{\"id\": \"--tech-term-Monad\",\n      \"data\": {\"term\": \"Monad\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"modus ponen\":\n    [{\"id\": \"--tech-term-modus-ponens\",\n      \"data\": {\"term\": \"modus ponens\"},\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"module root\":\n    [{\"id\": \"--tech-term-module-roots\",\n      \"data\": {\"term\": \"module roots\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"module\":\n    [{\"id\": \"--tech-term-module\",\n      \"data\": {\"term\": \"module\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"modifier\":\n    [{\"id\": \"--tech-term-modifiers\",\n      \"data\": {\"term\": \"modifiers\"},\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"model based theory combination\":\n    [{\"id\": \"--tech-term-model-based-theory-combination\",\n      \"data\": {\"term\": \"model-based theory combination\"},\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"mixfix\":\n    [{\"id\": \"--tech-term-mixfix\",\n      \"data\": {\"term\": \"mixfix\"},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"minor premise\":\n    [{\"id\": \"--tech-term-minor-premise\",\n      \"data\": {\"term\": \"minor premise\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"minimal\":\n    [{\"id\": \"--tech-term-minimal\",\n      \"data\": {\"term\": \"minimal\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"method\":\n    [{\"id\": \"--tech-term-methods\",\n      \"data\": {\"term\": \"methods\"},\n      \"address\": \"/Type-Classes/\"}],\n    \"metavariable\":\n    [{\"id\": \"--tech-term-metavariables\",\n      \"data\": {\"term\": \"metavariables\"},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"metaprogramming phase\":\n    [{\"id\": \"--tech-term-metaprogramming-phase\",\n      \"data\": {\"term\": \"metaprogramming phase\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"meta phase\":\n    [{\"id\": \"--tech-term-meta-phase\",\n      \"data\": {\"term\": \"meta phase\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"message log\":\n    [{\"id\": \"--tech-term-message-log\",\n      \"data\": {\"term\": \"message log\"},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"measure\":\n    [{\"id\": \"--tech-term-measure\",\n      \"data\": {\"term\": \"measure\"},\n      \"address\": \"/Elaboration-and-Compilation/\"},\n     {\"id\": \"--tech-term-measure-next\",\n      \"data\": {\"term\": \"measure\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"matcher function\":\n    [{\"id\": \"--tech-term-matcher-functions\",\n      \"data\": {\"term\": \"matcher functions\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"match discriminant\":\n    [{\"id\": \"--tech-term-match-discriminants\",\n      \"data\": {\"term\": \"match discriminants\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"match alternative\":\n    [{\"id\": \"--tech-term-match-alternatives\",\n      \"data\": {\"term\": \"match alternatives\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"marble diagram\":\n    [{\"id\": \"--tech-term-marble-diagrams\",\n      \"data\": {\"term\": \"marble diagrams\"},\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"mappings file\":\n    [{\"id\": \"--tech-term-mappings-file\",\n      \"data\": {\"term\": \"mappings file\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"map\":\n    [{\"id\": \"--tech-term-map\",\n      \"data\": {\"term\": \"map\"},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"manifest\":\n    [{\"id\": \"--tech-term-manifest\",\n      \"data\": {\"term\": \"manifest\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"major premise\":\n    [{\"id\": \"--tech-term-major-premise\",\n      \"data\": {\"term\": \"major premise\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"main goal\":\n    [{\"id\": \"--tech-term-main-goal\",\n      \"data\": {\"term\": \"main goal\"},\n      \"address\": \"/Tactic-Proofs/\"}],\n    \"macro scope\":\n    [{\"id\": \"--tech-term-macro-scopes\",\n      \"data\": {\"term\": \"macro scopes\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro expansion\":\n    [{\"id\": \"--tech-term-macro-expansion\",\n      \"data\": {\"term\": \"macro expansion\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"macro\":\n    [{\"id\": \"--tech-term-macro\",\n      \"data\": {\"term\": \"Macros\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"--tech-term-Macros\",\n      \"data\": {\"term\": \"Macros\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"loop invariant\":\n    [{\"id\": \"--tech-term-loop-invariant\",\n      \"data\": {\"term\": \"loop invariant\"},\n      \"address\": \"/The--mvcgen--tactic/Overview/\"}],\n    \"log\":\n    [{\"id\": \"--tech-term-log\",\n      \"data\": {\"term\": \"log\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"local longest match rule\":\n    [{\"id\": \"--tech-term-local-longest-match-rule\",\n      \"data\": {\"term\": \"local longest-match rule\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"local instance\":\n    [{\"id\": \"--tech-term-Local-instances\",\n      \"data\": {\"term\": \"Local instances\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"local cache\":\n    [{\"id\": \"--tech-term-local-artifact-cache\",\n      \"data\": {\"term\": \"local artifact cache\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lint driver\":\n    [{\"id\": \"--tech-term-lint-driver\",\n      \"data\": {\"term\": \"lint driver\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"linearly\":\n    [{\"id\": \"--tech-term-linearly\",\n      \"data\": {\"term\": \"linearly\"},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"lift\":\n    [{\"id\": \"--tech-term-lifting\",\n      \"data\": {\"term\": \"lifting\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"library directory\":\n    [{\"id\": \"--tech-term-library-directories\",\n      \"data\": {\"term\": \"library directories\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"library\":\n    [{\"id\": \"--tech-term-libraries\",\n      \"data\": {\"term\": \"Libraries\"},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"--tech-term-Libraries\",\n      \"data\": {\"term\": \"Libraries\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"left fold\":\n    [{\"id\": \"--tech-term-Left-folds\",\n      \"data\": {\"term\": \"Left folds\"},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"left associative\":\n    [{\"id\": \"--tech-term-Left-associative\",\n      \"data\": {\"term\": \"Left-associative\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"leading dot notation\":\n    [{\"id\": \"--tech-term-leading-dot-notation\",\n      \"data\": {\"term\": \"leading dot notation\"},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"lazy evaluation\":\n    [{\"id\": \"--tech-term-lazy-evaluation\",\n      \"data\": {\"term\": \"lazy evaluation\"},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"law\":\n    [{\"id\": \"--tech-term-laws\",\n      \"data\": {\"term\": \"laws\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"lake script\":\n    [{\"id\": \"--tech-term-Lake-scripts\",\n      \"data\": {\"term\": \"Lake scripts\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lake home\":\n    [{\"id\": \"--tech-term-Lake-home\",\n      \"data\": {\"term\": \"Lake home\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"kleisli composition\":\n    [{\"id\": \"--tech-term-Kleisli-composition\",\n      \"data\": {\"term\": \"Kleisli composition\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"kind\":\n    [{\"id\": \"--tech-term-kind\",\n      \"data\": {\"term\": \"kind\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"kernel\":\n    [{\"id\": \"--tech-term-kernel\",\n      \"data\": {\"term\": \"kernel\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"iterator combinator\":\n    [{\"id\": \"--tech-term-Combinators\",\n      \"data\": {\"term\": \"Combinators\"},\n      \"address\": \"/Iterators/\"}],\n    \"iterator\":\n    [{\"id\": \"--tech-term-iterator\",\n      \"data\": {\"term\": \"iterator\"},\n      \"address\": \"/Iterators/\"}],\n    \"irrelevant\":\n    [{\"id\": \"--tech-term-irrelevant\",\n      \"data\": {\"term\": \"irrelevant\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"irreducible\":\n    [{\"id\": \"--tech-term-Irreducible\",\n      \"data\": {\"term\": \"Irreducible\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"interpolated string\":\n    [{\"id\": \"--tech-term-interpolated-string\",\n      \"data\": {\"term\": \"interpolated string\"},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"intensional\":\n    [{\"id\": \"--tech-term-intensional\",\n      \"data\": {\"term\": \"intensional\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"instance implicit\":\n    [{\"id\": \"--tech-term-instance-implicit-next\",\n      \"data\": {\"term\": \"instance-implicit\"},\n      \"address\": \"/Type-Classes/\"},\n     {\"id\": \"--tech-term-instance-implicit\",\n      \"data\": {\"term\": \"instance-implicit\"},\n      \"address\": \"/Terms/Functions/\"}],\n    \"instance\":\n    [{\"id\": \"--tech-term-instances\",\n      \"data\": {\"term\": \"instances\"},\n      \"address\": \"/Type-Classes/\"}],\n    \"injection\":\n    [{\"id\": \"--tech-term-injections\",\n      \"data\": {\"term\": \"injections\"},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"initialize\":\n    [{\"id\": \"--tech-term-initialized\",\n      \"data\": {\"term\": \"initialized\"},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"initialization\":\n    [{\"id\": \"--tech-term-initialization\",\n      \"data\": {\"term\": \"initialization\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"initial target\":\n    [{\"id\": \"--tech-term-initial-targets\",\n      \"data\": {\"term\": \"initial targets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"info tree\":\n    [{\"id\": \"--tech-term-info-trees\",\n      \"data\": {\"term\": \"info trees\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"inductive type\":\n    [{\"id\": \"--tech-term-Inductive-types\",\n      \"data\": {\"term\": \"Inductive types\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"indexed family\":\n    [{\"id\": \"--tech-term-indexed-families\",\n      \"data\": {\"term\": \"indexed families\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"indexable\":\n    [{\"id\": \"--tech-term-indexable\",\n      \"data\": {\"term\": \"indexable\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"index\":\n    [{\"id\": \"--tech-term-indices\",\n      \"data\": {\"term\": \"indices\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"incremental build\":\n    [{\"id\": \"--tech-term-incremental-build\",\n      \"data\": {\"term\": \"incremental build\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"inaccessible pattern\":\n    [{\"id\": \"--tech-term-Inaccessible-patterns\",\n      \"data\": {\"term\": \"Inaccessible patterns\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"inaccessible\":\n    [{\"id\": \"--tech-term-inaccessible\",\n      \"data\": {\"term\": \"inaccessible\"},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"impredicative\":\n    [{\"id\": \"--tech-term-impredicative\",\n      \"data\": {\"term\": \"impredicative\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"import statement\":\n    [{\"id\": \"--tech-term-import-statements\",\n      \"data\": {\"term\": \"import statements\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"import name\":\n    [{\"id\": \"--tech-term-import-name\",\n      \"data\": {\"term\": \"import name\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"implicit\":\n    [{\"id\": \"--tech-term-implicit\",\n      \"data\": {\"term\": \"implicit\"},\n      \"address\": \"/Terms/Functions/\"}],\n    \"identifier component\":\n    [{\"id\": \"--tech-term-Identifier-components\",\n      \"data\": {\"term\": \"Identifier components\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"identifier capture\":\n    [{\"id\": \"--tech-term-Identifier-capture\",\n      \"data\": {\"term\": \"Identifier capture\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"identifier\":\n    [{\"id\": \"--tech-term-Identifiers\",\n      \"data\": {\"term\": \"Identifiers\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"hygiene\":\n    [{\"id\": \"--tech-term-hygienic\",\n      \"data\": {\"term\": \"hygienic\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"hole\":\n    [{\"id\": \"--tech-term-hole\",\n      \"data\": {\"term\": \"hole\"},\n      \"address\": \"/Terms/Holes/\"}],\n    \"hoare triple\":\n    [{\"id\": \"--tech-term-Hoare-triple\",\n      \"data\": {\"term\": \"Hoare triple\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"hierarchical identifier\":\n    [{\"id\": \"--tech-term-hierarchical-identifiers\",\n      \"data\": {\"term\": \"hierarchical identifiers\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"heterogeneous equality\":\n    [{\"id\": \"--tech-term-Heterogeneous-equality\",\n      \"data\": {\"term\": \"Heterogeneous equality\"},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"header\":\n    [{\"id\": \"--tech-term-header\",\n      \"data\": {\"term\": \"header\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"guillemet\":\n    [{\"id\": \"--tech-term-guillemets\",\n      \"data\": {\"term\": \"guillemets\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"goal\":\n    [{\"id\": \"--tech-term-goals\",\n      \"data\": {\"term\": \"goals\"},\n      \"address\": \"/Tactic-Proofs/\"}],\n    \"global instance\":\n    [{\"id\": \"--tech-term-Global-instances\",\n      \"data\": {\"term\": \"Global instances\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"glob\":\n    [{\"id\": \"--tech-term-globs\",\n      \"data\": {\"term\": \"globs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"git dependency\":\n    [{\"id\": \"--tech-term-Git-dependencies\",\n      \"data\": {\"term\": \"Git dependencies\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"generation\":\n    [{\"id\": \"--tech-term-generation\",\n      \"data\": {\"term\": \"generation\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"generalized field notation\":\n    [{\"id\": \"--tech-term-generalized-field-notation\",\n      \"data\": {\"term\": \"generalized field notation\"},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"gap\":\n    [{\"id\": \"--tech-term-gaps\",\n      \"data\": {\"term\": \"gaps\"},\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"gadget\":\n    [{\"id\": \"--tech-term-gadgets\",\n      \"data\": {\"term\": \"gadgets\"},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"functor\":\n    [{\"id\": \"--tech-term-Functor\",\n      \"data\": {\"term\": \"Functor\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"function type\":\n    [{\"id\": \"--tech-term-function-types\",\n      \"data\": {\"term\": \"function types\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"function abstraction\":\n    [{\"id\": \"--tech-term-function-abstractions\",\n      \"data\": {\"term\": \"function abstractions\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"function\":\n    [{\"id\": \"--tech-term-Functions\",\n      \"data\": {\"term\": \"Functions\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"framing\":\n    [{\"id\": \"--tech-term-framing\",\n      \"data\": {\"term\": \"framing\"},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"frame\":\n    [{\"id\": \"--tech-term-frame\",\n      \"data\": {\"term\": \"frame\"},\n      \"address\":\n      \"/The--mvcgen--tactic/Tutorial___-Verifying-Imperative-Programs-Using--mvcgen/\"}],\n    \"forward rule\":\n    [{\"id\": \"--tech-term-forward-rules\",\n      \"data\": {\"term\": \"forward rules\"},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"force\":\n    [{\"id\": \"--tech-term-forcing\",\n      \"data\": {\"term\": \"forcing\"},\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"fixed prefix\":\n    [{\"id\": \"--tech-term-fixed-prefix\",\n      \"data\": {\"term\": \"fixed prefix\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"fixed parameter\":\n    [{\"id\": \"--tech-term-fixed-parameter\",\n      \"data\": {\"term\": \"fixed parameter\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"finite iterator\":\n    [{\"id\": \"--tech-term-Finite\",\n      \"data\": {\"term\": \"Finite\"},\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"file header\":\n    [{\"id\": \"--tech-term-file-header\",\n      \"data\": {\"term\": \"file header\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"file handle\":\n    [{\"id\": \"--tech-term-File-Handles\",\n      \"data\": {\"term\": \"File Handles\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"file\":\n    [{\"id\": \"--tech-term-Files\",\n      \"data\": {\"term\": \"Files\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"field resolution order\":\n    [{\"id\": \"--tech-term-field-resolution-order\",\n      \"data\": {\"term\": \"field resolution order\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"field notation\":\n    [{\"id\": \"--tech-term-field-notation\",\n      \"data\": {\"term\": \"field notation\"},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"facet\":\n    [{\"id\": \"--tech-term-facet\",\n      \"data\": {\"term\": \"facet\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"external library\":\n    [{\"id\": \"--tech-term-External-libraries\",\n      \"data\": {\"term\": \"External libraries\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"extensional map\":\n    [{\"id\": \"--tech-term-Extensional-maps\",\n      \"data\": {\"term\": \"Extensional maps\"},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"extension\":\n    [{\"id\": \"--tech-term-extensions\",\n      \"data\": {\"term\": \"extensions\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"extended splice\":\n    [{\"id\": \"--tech-term-extended-splices\",\n      \"data\": {\"term\": \"extended splices\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"expression\":\n    [{\"id\": \"--tech-term-expressions\",\n      \"data\": {\"term\": \"expressions\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"exposed\":\n    [{\"id\": \"--tech-term-exposed\",\n      \"data\": {\"term\": \"exposed\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"exporting\":\n    [{\"id\": \"--tech-term-Exporting\",\n      \"data\": {\"term\": \"Exporting\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"expected type's namespace\":\n    [{\"id\": \"--tech-term-expected-type___s-namespace\",\n      \"data\": {\"term\": \"expected type's namespace\"},\n      \"address\": \"/Terms/Identifiers/\"}],\n    \"expansion\":\n    [{\"id\": \"--tech-term-expansion\",\n      \"data\": {\"term\": \"expansion\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"executable\":\n    [{\"id\": \"--tech-term-executables\",\n      \"data\": {\"term\": \"Executables\"},\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"--tech-term-Executables\",\n      \"data\": {\"term\": \"Executables\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"exception monad\":\n    [{\"id\": \"--tech-term-Exception-monads\",\n      \"data\": {\"term\": \"Exception monads\"},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"example\":\n    [{\"id\": \"--tech-term-example\",\n      \"data\": {\"term\": \"example\"},\n      \"address\": \"/Definitions/Example-Declarations/\"}],\n    \"erasing\":\n    [{\"id\": \"--tech-term-erasing\",\n      \"data\": {\"term\": \"erasing\"},\n      \"address\": \"/Attributes/\"}],\n    \"equivalence relation\":\n    [{\"id\": \"--tech-term-equivalence-relation\",\n      \"data\": {\"term\": \"equivalence relation\"},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"equational lemma\":\n    [{\"id\": \"--tech-term-equational-lemmas\",\n      \"data\": {\"term\": \"equational lemmas\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"environment extension\":\n    [{\"id\": \"--tech-term-environment-extensions\",\n      \"data\": {\"term\": \"environment extensions\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"environment\":\n    [{\"id\": \"--tech-term-environments\",\n      \"data\": {\"term\": \"environments\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"enum inductive\":\n    [{\"id\": \"--tech-term-enum-inductive\",\n      \"data\": {\"term\": \"enum inductive\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"ellipsi\":\n    [{\"id\": \"--tech-term-ellipsis\",\n      \"data\": {\"term\": \"ellipsis\"},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"elaborator\":\n    [{\"id\": \"--tech-term-Elaboration\",\n      \"data\": {\"term\": \"elaborators\"},\n      \"address\": \"/Elaboration-and-Compilation/\"},\n     {\"id\": \"--tech-term-elaborators\",\n      \"data\": {\"term\": \"elaborators\"},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"elaboration\":\n    [{\"id\": \"--tech-term-elaboration\",\n      \"data\": {\"term\": \"elaboration\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"e matching instance\":\n    [{\"id\": \"--tech-term-instance\",\n      \"data\": {\"term\": \"instance\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"e matching\":\n    [{\"id\": \"--tech-term-E-matching\",\n      \"data\": {\"term\": \"E-matching\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"dynamic array\":\n    [{\"id\": \"--tech-term-dynamic-arrays\",\n      \"data\": {\"term\": \"dynamic arrays\"},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"downward propagation\":\n    [{\"id\": \"--tech-term-downward-propagation\",\n      \"data\": {\"term\": \"downward propagation\"},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"domain\":\n    [{\"id\": \"--tech-term-domain\",\n      \"data\": {\"term\": \"domain\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"documentation comment\":\n    [{\"id\": \"--tech-term-Documentation-comments\",\n      \"data\": {\"term\": \"Documentation comments\"},\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"documentation\":\n    [{\"id\": \"--tech-term-documentation\",\n      \"data\": {\"term\": \"documentation\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"do notation\":\n    [{\"id\": \"--tech-term-do-notation\",\n      \"data\": {\"term\": \"do-notation\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"do item\":\n    [{\"id\": \"--tech-term-do-items\",\n      \"data\": {\"term\": \"do items\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"discriminant refinement\":\n    [{\"id\": \"--tech-term-discriminant-refinement\",\n      \"data\": {\"term\": \"discriminant refinement\"},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"directory\":\n    [{\"id\": \"--tech-term-Directories\",\n      \"data\": {\"term\": \"Directories\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"direct dependency\":\n    [{\"id\": \"--tech-term-direct-dependencies\",\n      \"data\": {\"term\": \"direct dependencies\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"dictionary\":\n    [{\"id\": \"--tech-term-dictionaries\",\n      \"data\": {\"term\": \"dictionaries\"},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"diamond\":\n    [{\"id\": \"--tech-term-Diamonds\",\n      \"data\": {\"term\": \"Diamonds\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"deriving handler\":\n    [{\"id\": \"--tech-term-deriving-handlers\",\n      \"data\": {\"term\": \"deriving handlers\"},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"deriving\":\n    [{\"id\": \"--tech-term-deriving\",\n      \"data\": {\"term\": \"deriving\"},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"derivation\":\n    [{\"id\": \"--tech-term-derivation\",\n      \"data\": {\"term\": \"derivation\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"dependent sum\":\n    [{\"id\": \"--tech-term-dependent-sums\",\n      \"data\": {\"term\": \"dependent sums\"},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"dependent product\":\n    [{\"id\": \"--tech-term-dependent-products\",\n      \"data\": {\"term\": \"dependent products\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"dependent pair\":\n    [{\"id\": \"--tech-term-Dependent-pairs\",\n      \"data\": {\"term\": \"Dependent pairs\"},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"dependent map\":\n    [{\"id\": \"--tech-term-dependent-map\",\n      \"data\": {\"term\": \"dependent map\"},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"dependent coercion\":\n    [{\"id\": \"--tech-term-Dependent-coercions\",\n      \"data\": {\"term\": \"Dependent coercions\"},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"dependent\":\n    [{\"id\": \"--tech-term-Dependent\",\n      \"data\": {\"term\": \"Dependent\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"delaborator\":\n    [{\"id\": \"--tech-term-delaborators\",\n      \"data\": {\"term\": \"delaborators\"},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"definitional equality\":\n    [{\"id\": \"--tech-term-definitional-equality\",\n      \"data\": {\"term\": \"definitional equality\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"defined constant\":\n    [{\"id\": \"--tech-term-defined-constants\",\n      \"data\": {\"term\": \"defined constants\"},\n      \"address\": \"/The-Type-System/\"}],\n    \"default toolchain\":\n    [{\"id\": \"--tech-term-default-toolchain\",\n      \"data\": {\"term\": \"default toolchain\"},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"default target\":\n    [{\"id\": \"--tech-term-default-targets\",\n      \"data\": {\"term\": \"default targets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"default simp set\":\n    [{\"id\": \"--tech-term-default-simp-set\",\n      \"data\": {\"term\": \"default simp set\"},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"default instance\":\n    [{\"id\": \"--tech-term-default-instances\",\n      \"data\": {\"term\": \"default instances\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"default facet\":\n    [{\"id\": \"--tech-term-default-facet\",\n      \"data\": {\"term\": \"default facet\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"decreasing parameter\":\n    [{\"id\": \"--tech-term-decreasing-parameter\",\n      \"data\": {\"term\": \"decreasing parameter\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"declaration name\":\n    [{\"id\": \"--tech-term-declaration-name\",\n      \"data\": {\"term\": \"declaration name\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"decidable\":\n    [{\"id\": \"--tech-term-decidable\",\n      \"data\": {\"term\": \"decidable\"},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"de bruijn indice\":\n    [{\"id\": \"--tech-term-de-Bruijn-indices\",\n      \"data\": {\"term\": \"de Bruijn indices\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"cycle\":\n    [{\"id\": \"--tech-term-cycles\",\n      \"data\": {\"term\": \"cycles\"},\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"custom toolchain name\":\n    [{\"id\": \"--tech-term-custom-toolchain-name\",\n      \"data\": {\"term\": \"custom toolchain name\"},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"custom target\":\n    [{\"id\": \"--tech-term-Custom-targets\",\n      \"data\": {\"term\": \"Custom targets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"custom simp set\":\n    [{\"id\": \"--tech-term-Custom-simp-sets\",\n      \"data\": {\"term\": \"Custom simp sets\"},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"custom eliminator\":\n    [{\"id\": \"--tech-term-Custom-eliminators\",\n      \"data\": {\"term\": \"Custom eliminators\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"currying\":\n    [{\"id\": \"--tech-term-currying\",\n      \"data\": {\"term\": \"currying\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"current namespace\":\n    [{\"id\": \"--tech-term-current-namespace\",\n      \"data\": {\"term\": \"current namespace\"},\n      \"address\": \"/Namespaces-and-Sections/\"},\n     {\"id\": \"--tech-term-current-namespace-next\",\n      \"data\": {\"term\": \"current namespace\"},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"current do block\":\n    [{\"id\": \"--tech-term-current-do-block\",\n      \"data\": {\"term\": \"current do block\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"cumulative\":\n    [{\"id\": \"--tech-term-cumulative\",\n      \"data\": {\"term\": \"cumulative\"},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"coverage\":\n    [{\"id\": \"--tech-term-coverage\",\n      \"data\": {\"term\": \"coverage\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"cover\":\n    [{\"id\": \"--tech-term-cover\",\n      \"data\": {\"term\": \"cover\"},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"course of values recursion\":\n    [{\"id\": \"--tech-term-course-of-values-recursion\",\n      \"data\": {\"term\": \"course-of-values recursion\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"consumer\":\n    [{\"id\": \"--tech-term-Consumers\",\n      \"data\": {\"term\": \"Consumers\"},\n      \"address\": \"/Iterators/\"}],\n    \"constructor\":\n    [{\"id\": \"--tech-term-constructors\",\n      \"data\": {\"term\": \"constructors\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"constraint propagation\":\n    [{\"id\": \"--tech-term-Constraint-propagation\",\n      \"data\": {\"term\": \"Constraint propagation\"},\n      \"address\": \"/The--grind--tactic/Constraint-Propagation/\"}],\n    \"conjunctive\":\n    [{\"id\": \"--tech-term-conjunctive\",\n      \"data\": {\"term\": \"conjunctive\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"congruence closure\":\n    [{\"id\": \"--tech-term-Congruence-closure\",\n      \"data\": {\"term\": \"Congruence closure\"},\n      \"address\": \"/The--grind--tactic/Congruence-Closure/\"}],\n    \"configure package\":\n    [{\"id\": \"--tech-term-Configuring\",\n      \"data\": {\"term\": \"Configuring\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"configuration item\":\n    [{\"id\": \"--tech-term-configuration-items\",\n      \"data\": {\"term\": \"configuration items\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"command elaborator\":\n    [{\"id\": \"--tech-term-Command-elaborators\",\n      \"data\": {\"term\": \"Command elaborators\"},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"command\":\n    [{\"id\": \"--tech-term-commands\",\n      \"data\": {\"term\": \"commands\"},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"coercion insertion\":\n    [{\"id\": \"--tech-term-coercion-insertion\",\n      \"data\": {\"term\": \"coercion insertion\"},\n      \"address\": \"/Coercions/Coercion-Insertion/\"}],\n    \"coercion\":\n    [{\"id\": \"--tech-term-coercion\",\n      \"data\": {\"term\": \"coercion\"},\n      \"address\": \"/Coercions/\"}],\n    \"codomain\":\n    [{\"id\": \"--tech-term-codomain\",\n      \"data\": {\"term\": \"codomain\"},\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"class abbreviation\":\n    [{\"id\": \"--tech-term-class-abbreviations\",\n      \"data\": {\"term\": \"class abbreviations\"},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"choice node\":\n    [{\"id\": \"--tech-term-choice-node\",\n      \"data\": {\"term\": \"choice node\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"channel\":\n    [{\"id\": \"--tech-term-channel\",\n      \"data\": {\"term\": \"channel\"},\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"cast\":\n    [{\"id\": \"--tech-term-casts\",\n      \"data\": {\"term\": \"casts\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"case label\":\n    [{\"id\": \"--tech-term-case-label\",\n      \"data\": {\"term\": \"case label\"},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"canonical\":\n    [{\"id\": \"--tech-term-canonical\",\n      \"data\": {\"term\": \"canonical\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"candidate measure\":\n    [{\"id\": \"--tech-term-Candidate-measures\",\n      \"data\": {\"term\": \"Candidate measures\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"cancel\":\n    [{\"id\": \"--tech-term-cancelled\",\n      \"data\": {\"term\": \"cancelled\"},\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"cache scope\":\n    [{\"id\": \"--tech-term-cache-scope\",\n      \"data\": {\"term\": \"cache scope\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"build directory\":\n    [{\"id\": \"--tech-term-build-directory\",\n      \"data\": {\"term\": \"build directory\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"build\":\n    [{\"id\": \"--tech-term-build\",\n      \"data\": {\"term\": \"build\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"buffered\":\n    [{\"id\": \"--tech-term-buffered\",\n      \"data\": {\"term\": \"buffered\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"bracketed binder\":\n    [{\"id\": \"--tech-term-bracketed-binders\",\n      \"data\": {\"term\": \"bracketed binders\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"boxed\":\n    [{\"id\": \"--tech-term-Boxed\",\n      \"data\": {\"term\": \"Boxed\"},\n      \"address\": \"/Run-Time-Code/Boxing/\"}],\n    \"borrowed\":\n    [{\"id\": \"--tech-term-borrowed\",\n      \"data\": {\"term\": \"borrowed\"},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"binary directory\":\n    [{\"id\": \"--tech-term-binary-directory\",\n      \"data\": {\"term\": \"binary directory\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"basic termination measure\":\n    [{\"id\": \"--tech-term-basic-termination-measures\",\n      \"data\": {\"term\": \"basic termination measures\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"axiom\":\n    [{\"id\": \"--tech-term-Axioms\",\n      \"data\": {\"term\": \"Axioms\"},\n      \"address\": \"/Axioms/\"}],\n    \"auxiliary matching function\":\n    [{\"id\": \"--tech-term-auxiliary-matching-functions\",\n      \"data\": {\"term\": \"auxiliary matching functions\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"automatic parameter\":\n    [{\"id\": \"--tech-term-automatic-parameters\",\n      \"data\": {\"term\": \"automatic parameters\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"automatic implicit parameter\":\n    [{\"id\": \"--tech-term-automatic-implicit-parameters\",\n      \"data\": {\"term\": \"automatic implicit parameters\"},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"attribute instance\":\n    [{\"id\": \"--tech-term-attribute-instances\",\n      \"data\": {\"term\": \"attribute instances\"},\n      \"address\": \"/Attributes/\"}],\n    \"attribute\":\n    [{\"id\": \"--tech-term-Attributes\",\n      \"data\": {\"term\": \"Attributes\"},\n      \"address\": \"/Attributes/\"}],\n    \"atomic\":\n    [{\"id\": \"--tech-term-atomic\",\n      \"data\": {\"term\": \"atomic\"},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"atom\":\n    [{\"id\": \"--tech-term-Atoms\",\n      \"data\": {\"term\": \"Atoms\"},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"associativity\":\n    [{\"id\": \"--tech-term-associativity\",\n      \"data\": {\"term\": \"associativity\"},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"associative array\":\n    [{\"id\": \"--tech-term-associative-arrays\",\n      \"data\": {\"term\": \"associative arrays\"},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"artifact\":\n    [{\"id\": \"--tech-term-artifact\",\n      \"data\": {\"term\": \"artifact\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"applicative functor\":\n    [{\"id\": \"--tech-term-Applicative-functors\",\n      \"data\": {\"term\": \"Applicative functors\"},\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"application binary interface\":\n    [{\"id\": \"--tech-term-Application-Binary-Interface\",\n      \"data\": {\"term\": \"Application Binary Interface\"},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"antiquotation\":\n    [{\"id\": \"--tech-term-antiquotations\",\n      \"data\": {\"term\": \"antiquotations\"},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"anonymous constructor syntax\":\n    [{\"id\": \"--tech-term-anonymous-constructor-syntax\",\n      \"data\": {\"term\": \"anonymous constructor syntax\"},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"adequacy lemma\":\n    [{\"id\": \"--tech-term-Adequacy-lemmas\",\n      \"data\": {\"term\": \"Adequacy lemmas\"},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"ad hoc polymorphism\":\n    [{\"id\": \"--tech-term-ad-hoc-polymorphism\",\n      \"data\": {\"term\": \"ad-hoc polymorphism\"},\n      \"address\": \"/Type-Classes/\"}],\n    \"absolute path\":\n    [{\"id\": \"--tech-term-Absolute-paths\",\n      \"data\": {\"term\": \"Absolute paths\"},\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \".olean file\":\n    [{\"id\": \"--tech-term-___olean-file\",\n      \"data\": {\"term\": \".olean file\"},\n      \"address\": \"/Elaboration-and-Compilation/\"}]}},\n  \"Verso.Genre.Manual.doc.tactic.conv\":\n  {\"title\": \"Conversion Tactics\",\n   \"description\": \"Conversion Tactics\",\n   \"contents\":\n   {\"Lean.Parser.Tactic.Conv.«conv·._»\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv____FLQQ_conv________FLQQ_-next\",\n      \"data\": {\"userName\": \"· ...\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"},\n     {\"id\": \"Lean___Parser___Tactic___Conv____FLQQ_conv________FLQQ_\",\n      \"data\": {\"userName\": \"· ...\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.«conv_<;>_»\":\n    [{\"id\":\n      \"Lean___Parser___Tactic___Conv____FLQQ_conv__LT__SEMI__GT___FLQQ_\",\n      \"data\": {\"userName\": \"<;>\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.«convNext__=>_»\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv____FLQQ_convNext______GT___FLQQ_\",\n      \"data\": {\"userName\": \"next ... => ...\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.zeta\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___zeta\",\n      \"data\": {\"userName\": \"zeta\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.whnf\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___whnf\",\n      \"data\": {\"userName\": \"whnf\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.unfold\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___unfold\",\n      \"data\": {\"userName\": \"unfold\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.skip\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___skip\",\n      \"data\": {\"userName\": \"skip\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.simpMatch\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___simpMatch\",\n      \"data\": {\"userName\": \"simp_match\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.simp\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___simp\",\n      \"data\": {\"userName\": \"simp\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.rhs\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___rhs\",\n      \"data\": {\"userName\": \"rhs\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.rewrite\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___rewrite\",\n      \"data\": {\"userName\": \"rewrite\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.reduce\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___reduce\",\n      \"data\": {\"userName\": \"reduce\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.pattern\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___pattern\",\n      \"data\": {\"userName\": \"pattern\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.paren\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___paren\",\n      \"data\": {\"userName\": \"( ... )\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.normCast\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___normCast\",\n      \"data\": {\"userName\": \"norm_cast\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.nestedTacticCore\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___nestedTacticCore\",\n      \"data\": {\"userName\": \"tactic'\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.nestedTactic\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___nestedTactic\",\n      \"data\": {\"userName\": \"tactic\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.nestedConv\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___nestedConv\",\n      \"data\": {\"userName\": \"{ ... }\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.lhs\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___lhs\",\n      \"data\": {\"userName\": \"lhs\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.fun\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___fun\",\n      \"data\": {\"userName\": \"fun\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.focus\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___focus\",\n      \"data\": {\"userName\": \"focus\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.first\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___first\",\n      \"data\": {\"userName\": \"first\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.failIfSuccess\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___failIfSuccess\",\n      \"data\": {\"userName\": \"fail_if_success\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.ext\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___ext\",\n      \"data\": {\"userName\": \"ext\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.enter\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___enter\",\n      \"data\": {\"userName\": \"enter\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.dsimp\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___dsimp\",\n      \"data\": {\"userName\": \"dsimp\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.delta\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___delta\",\n      \"data\": {\"userName\": \"delta\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convTry_\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convTry_\",\n      \"data\": {\"userName\": \"try\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convTrace_state\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convTrace_state\",\n      \"data\": {\"userName\": \"trace_state\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convRw__\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convRw__\",\n      \"data\": {\"userName\": \"rw\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convRight\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convRight\",\n      \"data\": {\"userName\": \"right\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convRfl\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convRfl\",\n      \"data\": {\"userName\": \"rfl\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convRepeat_\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convRepeat_\",\n      \"data\": {\"userName\": \"repeat\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convLeft\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convLeft\",\n      \"data\": {\"userName\": \"left\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convIntro___\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convIntro___\",\n      \"data\": {\"userName\": \"intro\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convErw__\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convErw__\",\n      \"data\": {\"userName\": \"erw\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convDone\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convDone\",\n      \"data\": {\"userName\": \"done\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convConvSeq\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convConvSeq\",\n      \"data\": {\"userName\": \"conv => ...\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convArgs\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convArgs\",\n      \"data\": {\"userName\": \"args\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.convApply_\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___convApply_\",\n      \"data\": {\"userName\": \"apply\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.congr\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___congr\",\n      \"data\": {\"userName\": \"congr\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.change\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___change\",\n      \"data\": {\"userName\": \"change\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.case'\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___case___\",\n      \"data\": {\"userName\": \"case' ... => ...\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.case\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___case\",\n      \"data\": {\"userName\": \"case ... => ...\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.arg\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___arg\",\n      \"data\": {\"userName\": \"arg [@]i\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.anyGoals\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___anyGoals\",\n      \"data\": {\"userName\": \"any_goals\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.allGoals\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___allGoals\",\n      \"data\": {\"userName\": \"all_goals\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}]}},\n  \"Verso.Genre.Manual.doc.tactic\":\n  {\"title\": \"Tactic Documentation\",\n   \"description\": \"Tactic Documentation\",\n   \"contents\":\n   {\"«tacticBy_cases_:_»\":\n    [{\"id\": \"by_cases\",\n      \"data\": {\"userName\": \"by_cases\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tacticSimp_wf\":\n    [{\"id\": \"simp_wf\",\n      \"data\": {\"userName\": \"simp_wf\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tacticGet_elem_tactic_trivial\":\n    [{\"id\": \"get_elem_tactic_trivial\",\n      \"data\": {\"userName\": \"get_elem_tactic_trivial\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tacticGet_elem_tactic\":\n    [{\"id\": \"get_elem_tactic\",\n      \"data\": {\"userName\": \"get_elem_tactic\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tacticFunext___\":\n    [{\"id\": \"funext-next\",\n      \"data\": {\"userName\": \"funext\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tacticDecreasing_with_\":\n    [{\"id\": \"decreasing_with\",\n      \"data\": {\"userName\": \"decreasing_with\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"tacticDecreasing_trivial\":\n    [{\"id\": \"decreasing_trivial\",\n      \"data\": {\"userName\": \"decreasing_trivial\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"tacticDecreasing_tactic\":\n    [{\"id\": \"decreasing_tactic\",\n      \"data\": {\"userName\": \"decreasing_tactic\"},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.solveTactic\":\n    [{\"id\": \"solve\",\n      \"data\": {\"userName\": \"solve\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.cdot\":\n    [{\"id\": \"___\",\n      \"data\": {\"userName\": \"Lean.cdot\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.calcTactic\":\n    [{\"id\": \"calc\",\n      \"data\": {\"userName\": \"calc\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.«tactic_<;>_»\":\n    [{\"id\": \"_LT__SEMI__GT_\",\n      \"data\": {\"userName\": \"<;>\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.«tacticNomatch_,,»\":\n    [{\"id\": \"nomatch\",\n      \"data\": {\"userName\": \"nomatch\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.«tacticNext_=>_»\":\n    [{\"id\": \"next\",\n      \"data\": {\"userName\": \"next\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.«tacticExists_,,»\":\n    [{\"id\": \"exists\",\n      \"data\": {\"userName\": \"exists\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.withUnfoldingAll\":\n    [{\"id\": \"with_unfolding_all-next\",\n      \"data\": {\"userName\": \"with_unfolding_all\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"},\n     {\"id\": \"with_unfolding_all\",\n      \"data\": {\"userName\": \"with_unfolding_all\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.withReducibleAndInstances\":\n    [{\"id\": \"with_reducible_and_instances\",\n      \"data\": {\"userName\": \"with_reducible_and_instances\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"},\n     {\"id\": \"with_reducible_and_instances-next\",\n      \"data\": {\"userName\": \"with_reducible_and_instances\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.withReducible\":\n    [{\"id\": \"with_reducible-next\",\n      \"data\": {\"userName\": \"with_reducible\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"},\n     {\"id\": \"with_reducible\",\n      \"data\": {\"userName\": \"with_reducible\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.unfold\":\n    [{\"id\": \"unfold\",\n      \"data\": {\"userName\": \"unfold\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.traceState\":\n    [{\"id\": \"trace_state\",\n      \"data\": {\"userName\": \"trace_state\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.traceMessage\":\n    [{\"id\": \"trace\",\n      \"data\": {\"userName\": \"trace\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticUnhygienic_\":\n    [{\"id\": \"unhygienic\",\n      \"data\": {\"userName\": \"unhygienic\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticTry_\":\n    [{\"id\": \"try\",\n      \"data\": {\"userName\": \"try\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticTrivial\":\n    [{\"id\": \"trivial\",\n      \"data\": {\"userName\": \"trivial\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSuffices_\":\n    [{\"id\": \"suffices\",\n      \"data\": {\"userName\": \"suffices\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticStop_\":\n    [{\"id\": \"stop\",\n      \"data\": {\"userName\": \"stop\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSorry\":\n    [{\"id\": \"sorry\",\n      \"data\": {\"userName\": \"sorry\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSimpa?_\":\n    [{\"id\": \"simpa___-next\",\n      \"data\": {\"userName\": \"simpa?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSimpa?!_\":\n    [{\"id\": \"simpa______\",\n      \"data\": {\"userName\": \"simpa?!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSimpa!_\":\n    [{\"id\": \"simpa___\",\n      \"data\": {\"userName\": \"simpa!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSimp_all?!_\":\n    [{\"id\": \"simp_all______\",\n      \"data\": {\"userName\": \"simp_all?!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticSimp?!_\":\n    [{\"id\": \"simp______\",\n      \"data\": {\"userName\": \"simp?!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticRwa__\":\n    [{\"id\": \"rwa\",\n      \"data\": {\"userName\": \"rwa\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticRw_mod_cast___\":\n    [{\"id\": \"rw_mod_cast\",\n      \"data\": {\"userName\": \"rw_mod_cast\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticRfl'\":\n    [{\"id\": \"rfl___\",\n      \"data\": {\"userName\": \"rfl'\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticRfl\":\n    [{\"id\": \"rfl\",\n      \"data\": {\"userName\": \"rfl\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticRepeat_\":\n    [{\"id\": \"repeat\",\n      \"data\": {\"userName\": \"repeat\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticNorm_cast__\":\n    [{\"id\": \"norm_cast\",\n      \"data\": {\"userName\": \"norm_cast\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticNofun\":\n    [{\"id\": \"nofun\",\n      \"data\": {\"userName\": \"nofun\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticLet__\":\n    [{\"id\": \"let\",\n      \"data\": {\"userName\": \"let\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticLetI__\":\n    [{\"id\": \"letI\",\n      \"data\": {\"userName\": \"letI\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticLet'__\":\n    [{\"id\": \"let___\",\n      \"data\": {\"userName\": \"let'\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticIterate____\":\n    [{\"id\": \"iterate\",\n      \"data\": {\"userName\": \"iterate\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticInfer_instance\":\n    [{\"id\": \"infer_instance\",\n      \"data\": {\"userName\": \"infer_instance\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticHave__\":\n    [{\"id\": \"have-next\",\n      \"data\": {\"userName\": \"have\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"},\n     {\"id\": \"have\",\n      \"data\": {\"userName\": \"have\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticHave'\":\n    [{\"id\": \"have___\",\n      \"data\": {\"userName\": \"have'\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacticExfalso\":\n    [{\"id\": \"exfalso\",\n      \"data\": {\"userName\": \"exfalso\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticExact_mod_cast_\":\n    [{\"id\": \"exact_mod_cast\",\n      \"data\": {\"userName\": \"exact_mod_cast\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticErw___\":\n    [{\"id\": \"erw\",\n      \"data\": {\"userName\": \"erw\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticDsimp?!_\":\n    [{\"id\": \"dsimp______\",\n      \"data\": {\"userName\": \"dsimp?!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticBv_omega\":\n    [{\"id\": \"bv_omega\",\n      \"data\": {\"userName\": \"bv_omega\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticAssumption_mod_cast_\":\n    [{\"id\": \"assumption_mod_cast\",\n      \"data\": {\"userName\": \"assumption_mod_cast\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticApply_mod_cast_\":\n    [{\"id\": \"apply_mod_cast\",\n      \"data\": {\"userName\": \"apply_mod_cast\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticAnd_intros\":\n    [{\"id\": \"and_intros\",\n      \"data\": {\"userName\": \"and_intros\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticAdmit\":\n    [{\"id\": \"admit\",\n      \"data\": {\"userName\": \"admit\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacticAc_nf_\":\n    [{\"id\": \"ac_nf\",\n      \"data\": {\"userName\": \"ac_nf\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.tacIfThenElse\":\n    [{\"id\": \"if-_________-then-_________-else-_________\",\n      \"data\": {\"userName\": \"Lean.Parser.Tactic.tacIfThenElse\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.tacDepIfThenElse\":\n    [{\"id\": \"if-h-___-_________-then-_________-else-_________\",\n      \"data\": {\"userName\": \"Lean.Parser.Tactic.tacDepIfThenElse\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.symmSaturate\":\n    [{\"id\": \"symm_saturate\",\n      \"data\": {\"userName\": \"symm_saturate\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.symm\":\n    [{\"id\": \"symm\",\n      \"data\": {\"userName\": \"symm\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.substVars\":\n    [{\"id\": \"subst_vars\",\n      \"data\": {\"userName\": \"subst_vars\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.substEqs\":\n    [{\"id\": \"subst_eqs\",\n      \"data\": {\"userName\": \"subst_eqs\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.subst\":\n    [{\"id\": \"subst\",\n      \"data\": {\"userName\": \"subst\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.split\":\n    [{\"id\": \"split\",\n      \"data\": {\"userName\": \"split\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.specialize\":\n    [{\"id\": \"specialize\",\n      \"data\": {\"userName\": \"specialize\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.solveByElim\":\n    [{\"id\": \"solve_by_elim\",\n      \"data\": {\"userName\": \"solve_by_elim\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.sleep\":\n    [{\"id\": \"sleep\",\n      \"data\": {\"userName\": \"sleep\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.skip\":\n    [{\"id\": \"skip\",\n      \"data\": {\"userName\": \"skip\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpa\":\n    [{\"id\": \"simpa\",\n      \"data\": {\"userName\": \"simpa\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpTrace\":\n    [{\"id\": \"simp___-next\",\n      \"data\": {\"userName\": \"simp?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpAutoUnfold\":\n    [{\"id\": \"simp___\",\n      \"data\": {\"userName\": \"simp!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpArithBang\":\n    [{\"id\": \"simp_arith___\",\n      \"data\": {\"userName\": \"simp_arith!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpArith\":\n    [{\"id\": \"simp_arith\",\n      \"data\": {\"userName\": \"simp_arith\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpAllTrace\":\n    [{\"id\": \"simp_all___-next\",\n      \"data\": {\"userName\": \"simp_all?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpAllAutoUnfold\":\n    [{\"id\": \"simp_all___\",\n      \"data\": {\"userName\": \"simp_all!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpAllArithBang\":\n    [{\"id\": \"simp_all_arith___\",\n      \"data\": {\"userName\": \"simp_all_arith!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpAllArith\":\n    [{\"id\": \"simp_all_arith\",\n      \"data\": {\"userName\": \"simp_all_arith\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simpAll\":\n    [{\"id\": \"simp_all\",\n      \"data\": {\"userName\": \"simp_all\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.simp\":\n    [{\"id\": \"simp\",\n      \"data\": {\"userName\": \"simp\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.showTerm\":\n    [{\"id\": \"show_term\",\n      \"data\": {\"userName\": \"show_term\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.show\":\n    [{\"id\": \"show\",\n      \"data\": {\"userName\": \"show\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.set_option\":\n    [{\"id\": \"set_option\",\n      \"data\": {\"userName\": \"Lean.Parser.Tactic.set_option\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.rwSeq\":\n    [{\"id\": \"rw\",\n      \"data\": {\"userName\": \"rw\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.runTac\":\n    [{\"id\": \"run_tac\",\n      \"data\": {\"userName\": \"run_tac\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.rotateRight\":\n    [{\"id\": \"rotate_right\",\n      \"data\": {\"userName\": \"rotate_right\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.rotateLeft\":\n    [{\"id\": \"rotate_left\",\n      \"data\": {\"userName\": \"rotate_left\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.rintro\":\n    [{\"id\": \"rintro\",\n      \"data\": {\"userName\": \"rintro\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.right\":\n    [{\"id\": \"right\",\n      \"data\": {\"userName\": \"right\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.rewrites?\":\n    [{\"id\": \"rw___\",\n      \"data\": {\"userName\": \"rw?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.rewriteSeq\":\n    [{\"id\": \"rewrite\",\n      \"data\": {\"userName\": \"rewrite\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.revert\":\n    [{\"id\": \"revert\",\n      \"data\": {\"userName\": \"revert\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.replace\":\n    [{\"id\": \"replace\",\n      \"data\": {\"userName\": \"replace\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.repeat1'\":\n    [{\"id\": \"repeat1___\",\n      \"data\": {\"userName\": \"repeat1'\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.repeat'\":\n    [{\"id\": \"repeat___\",\n      \"data\": {\"userName\": \"repeat'\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.renameI\":\n    [{\"id\": \"rename_i\",\n      \"data\": {\"userName\": \"rename_i\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.rename\":\n    [{\"id\": \"rename\",\n      \"data\": {\"userName\": \"rename\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.refine'\":\n    [{\"id\": \"refine___\",\n      \"data\": {\"userName\": \"refine'\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.refine\":\n    [{\"id\": \"refine\",\n      \"data\": {\"userName\": \"refine\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.rcases\":\n    [{\"id\": \"rcases\",\n      \"data\": {\"userName\": \"rcases\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.pushCast\":\n    [{\"id\": \"push_cast\",\n      \"data\": {\"userName\": \"push_cast\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.open\":\n    [{\"id\": \"open\",\n      \"data\": {\"userName\": \"Lean.Parser.Tactic.open\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.omega\":\n    [{\"id\": \"omega\",\n      \"data\": {\"userName\": \"omega\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.obtain\":\n    [{\"id\": \"obtain\",\n      \"data\": {\"userName\": \"obtain\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.nativeDecide\":\n    [{\"id\": \"native_decide\",\n      \"data\": {\"userName\": \"native_decide\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mvcgenMacro\":\n    [{\"id\": \"mvcgen\",\n      \"data\": {\"userName\": \"mvcgen\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mstopMacro\":\n    [{\"id\": \"mstop\",\n      \"data\": {\"userName\": \"mstop\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mstartMacro\":\n    [{\"id\": \"mstart\",\n      \"data\": {\"userName\": \"mstart\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mspecializePureMacro\":\n    [{\"id\": \"mspecialize_pure\",\n      \"data\": {\"userName\": \"mspecialize_pure\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mspecializeMacro\":\n    [{\"id\": \"mspecialize\",\n      \"data\": {\"userName\": \"mspecialize\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mspecMacro\":\n    [{\"id\": \"mspec\",\n      \"data\": {\"userName\": \"mspec\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mrightMacro\":\n    [{\"id\": \"mright\",\n      \"data\": {\"userName\": \"mright\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mreplaceMacro\":\n    [{\"id\": \"mreplace\",\n      \"data\": {\"userName\": \"mreplace\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mrenameIMacro\":\n    [{\"id\": \"mrename_i\",\n      \"data\": {\"userName\": \"mrename_i\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mrefineMacro\":\n    [{\"id\": \"mrefine\",\n      \"data\": {\"userName\": \"mrefine\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mpureMacro\":\n    [{\"id\": \"mpure\",\n      \"data\": {\"userName\": \"mpure\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mpureIntroMacro\":\n    [{\"id\": \"mpure_intro\",\n      \"data\": {\"userName\": \"mpure_intro\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mleftMacro\":\n    [{\"id\": \"mleft\",\n      \"data\": {\"userName\": \"mleft\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mleaveMacro\":\n    [{\"id\": \"mleave\",\n      \"data\": {\"userName\": \"mleave\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mintroMacro\":\n    [{\"id\": \"mintro\",\n      \"data\": {\"userName\": \"mintro\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mhaveMacro\":\n    [{\"id\": \"mhave\",\n      \"data\": {\"userName\": \"mhave\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mframeMacro\":\n    [{\"id\": \"mframe\",\n      \"data\": {\"userName\": \"mframe\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mexistsMacro\":\n    [{\"id\": \"mexists\",\n      \"data\": {\"userName\": \"mexists\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mexfalsoMacro\":\n    [{\"id\": \"mexfalso\",\n      \"data\": {\"userName\": \"mexfalso\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mexactMacro\":\n    [{\"id\": \"mexact\",\n      \"data\": {\"userName\": \"mexact\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mdup\":\n    [{\"id\": \"mdup\",\n      \"data\": {\"userName\": \"mdup\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mconstructorMacro\":\n    [{\"id\": \"mconstructor\",\n      \"data\": {\"userName\": \"mconstructor\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mclearMacro\":\n    [{\"id\": \"mclear\",\n      \"data\": {\"userName\": \"mclear\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.mcasesMacro\":\n    [{\"id\": \"mcases\",\n      \"data\": {\"userName\": \"mcases\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.match\":\n    [{\"id\": \"match\",\n      \"data\": {\"userName\": \"Lean.Parser.Tactic.match\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.massumptionMacro\":\n    [{\"id\": \"massumption\",\n      \"data\": {\"userName\": \"massumption\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.letrec\":\n    [{\"id\": \"let-rec\",\n      \"data\": {\"userName\": \"let\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.left\":\n    [{\"id\": \"left\",\n      \"data\": {\"userName\": \"left\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.intros\":\n    [{\"id\": \"intros\",\n      \"data\": {\"userName\": \"intros\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.introMatch\":\n    [{\"id\":\n      \"intro-___-_________-____GT_-_________-___-_________-____GT_-_________\",\n      \"data\": {\"userName\": \"Lean.Parser.Tactic.introMatch\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.intro\":\n    [{\"id\": \"intro\",\n      \"data\": {\"userName\": \"intro\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.injections\":\n    [{\"id\": \"injections\",\n      \"data\": {\"userName\": \"injections\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.injection\":\n    [{\"id\": \"injection\",\n      \"data\": {\"userName\": \"injection\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.induction\":\n    [{\"id\": \"induction\",\n      \"data\": {\"userName\": \"induction\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.guardTarget\":\n    [{\"id\": \"guard_target\",\n      \"data\": {\"userName\": \"guard_target\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.guardHyp\":\n    [{\"id\": \"guard_hyp\",\n      \"data\": {\"userName\": \"guard_hyp\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.guardExpr\":\n    [{\"id\": \"guard_expr\",\n      \"data\": {\"userName\": \"guard_expr\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.grind\":\n    [{\"id\": \"grind\",\n      \"data\": {\"userName\": \"grind\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.generalize\":\n    [{\"id\": \"generalize\",\n      \"data\": {\"userName\": \"generalize\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.funInduction\":\n    [{\"id\": \"fun_induction\",\n      \"data\": {\"userName\": \"fun_induction\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.funCases\":\n    [{\"id\": \"fun_cases\",\n      \"data\": {\"userName\": \"fun_cases\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.focus\":\n    [{\"id\": \"focus\",\n      \"data\": {\"userName\": \"focus\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.first\":\n    [{\"id\": \"first\",\n      \"data\": {\"userName\": \"first\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.falseOrByContra\":\n    [{\"id\": \"false_or_by_contra\",\n      \"data\": {\"userName\": \"false_or_by_contra\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.failIfSuccess\":\n    [{\"id\": \"fail_if_success\",\n      \"data\": {\"userName\": \"fail_if_success\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.fail\":\n    [{\"id\": \"fail\",\n      \"data\": {\"userName\": \"fail\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.exposeNames\":\n    [{\"id\": \"expose_names\",\n      \"data\": {\"userName\": \"expose_names\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.exact?\":\n    [{\"id\": \"exact___\",\n      \"data\": {\"userName\": \"exact?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.exact\":\n    [{\"id\": \"exact\",\n      \"data\": {\"userName\": \"exact\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.eqRefl\":\n    [{\"id\": \"eq_refl\",\n      \"data\": {\"userName\": \"eq_refl\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.dsimpTrace\":\n    [{\"id\": \"dsimp___-next\",\n      \"data\": {\"userName\": \"dsimp?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.dsimpAutoUnfold\":\n    [{\"id\": \"dsimp___\",\n      \"data\": {\"userName\": \"dsimp!\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.dsimp\":\n    [{\"id\": \"dsimp\",\n      \"data\": {\"userName\": \"dsimp\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.done\":\n    [{\"id\": \"done\",\n      \"data\": {\"userName\": \"done\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.delta\":\n    [{\"id\": \"delta\",\n      \"data\": {\"userName\": \"delta\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.decide\":\n    [{\"id\": \"decide\",\n      \"data\": {\"userName\": \"decide\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.dbgTrace\":\n    [{\"id\": \"dbg_trace\",\n      \"data\": {\"userName\": \"dbg_trace\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.contradiction\":\n    [{\"id\": \"contradiction\",\n      \"data\": {\"userName\": \"contradiction\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.constructor\":\n    [{\"id\": \"constructor\",\n      \"data\": {\"userName\": \"constructor\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.congr\":\n    [{\"id\": \"congr\",\n      \"data\": {\"userName\": \"congr\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.clear\":\n    [{\"id\": \"clear\",\n      \"data\": {\"userName\": \"clear\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.classical\":\n    [{\"id\": \"classical\",\n      \"data\": {\"userName\": \"classical\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.changeWith\":\n    [{\"id\": \"change-_________-with-_________\",\n      \"data\": {\"userName\": \"change\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.change\":\n    [{\"id\": \"change\",\n      \"data\": {\"userName\": \"change\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.cases\":\n    [{\"id\": \"cases\",\n      \"data\": {\"userName\": \"cases\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.case'\":\n    [{\"id\": \"case___\",\n      \"data\": {\"userName\": \"case'\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.case\":\n    [{\"id\": \"case\",\n      \"data\": {\"userName\": \"case\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.bvTraceMacro\":\n    [{\"id\": \"bv_decide___\",\n      \"data\": {\"userName\": \"bv_decide?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.bvNormalizeMacro\":\n    [{\"id\": \"bv_normalize\",\n      \"data\": {\"userName\": \"bv_normalize\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.bvDecideMacro\":\n    [{\"id\": \"bv_decide\",\n      \"data\": {\"userName\": \"bv_decide\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.bvCheck\":\n    [{\"id\": \"bv_check\",\n      \"data\": {\"userName\": \"bv_check\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.assumption\":\n    [{\"id\": \"assumption\",\n      \"data\": {\"userName\": \"assumption\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.as_aux_lemma\":\n    [{\"id\": \"as_aux_lemma\",\n      \"data\": {\"userName\": \"as_aux_lemma\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.applyRules\":\n    [{\"id\": \"apply_rules\",\n      \"data\": {\"userName\": \"apply_rules\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.applyRfl\":\n    [{\"id\": \"apply_rfl\",\n      \"data\": {\"userName\": \"apply_rfl\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.applyAssumption\":\n    [{\"id\": \"apply_assumption\",\n      \"data\": {\"userName\": \"apply_assumption\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.apply?\":\n    [{\"id\": \"apply___\",\n      \"data\": {\"userName\": \"apply?\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.apply\":\n    [{\"id\": \"apply\",\n      \"data\": {\"userName\": \"apply\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.anyGoals\":\n    [{\"id\": \"any_goals\",\n      \"data\": {\"userName\": \"any_goals\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.allGoals\":\n    [{\"id\": \"all_goals\",\n      \"data\": {\"userName\": \"all_goals\"},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.acRfl\":\n    [{\"id\": \"ac_rfl\",\n      \"data\": {\"userName\": \"ac_rfl\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.acNf0\":\n    [{\"id\": \"ac_nf0\",\n      \"data\": {\"userName\": \"ac_nf0\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Tactic.Conv.convTactic\":\n    [{\"id\": \"conv___\",\n      \"data\": {\"userName\": \"conv'\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"},\n     {\"id\": \"conv___-next\",\n      \"data\": {\"userName\": \"conv'\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.conv\":\n    [{\"id\": \"conv-next\",\n      \"data\": {\"userName\": \"conv\"},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Elab.Tactic.Ext.tacticExt1___\":\n    [{\"id\": \"ext1\",\n      \"data\": {\"userName\": \"ext1\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Elab.Tactic.Ext.ext\":\n    [{\"id\": \"ext\",\n      \"data\": {\"userName\": \"ext\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Elab.Tactic.Ext.applyExtTheorem\":\n    [{\"id\": \"apply_ext_theorem\",\n      \"data\": {\"userName\": \"apply_ext_theorem\"},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}]}},\n  \"Verso.Genre.Manual.doc.syntaxKind\":\n  {\"title\": \"Verso.Genre.Manual.doc.syntaxKind\",\n   \"description\": \"Verso.Genre.Manual.doc.syntaxKind\",\n   \"contents\":\n   {\"«term∃_,_»\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"},\n     {\"id\": \"_FLQQ_term_________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"«term‹_›»\":\n    [{\"id\": \"_FLQQ_term_FLQ___FRQ__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"«termΣ_,_»\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"},\n     {\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«termΣ'_,_»\":\n    [{\"id\": \"_FLQQ_term____________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"},\n     {\"id\": \"_FLQQ_term____________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term¬_»\":\n    [{\"id\": \"_FLQQ_term_____FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term{_:_//_}»\":\n    [{\"id\": \"_FLQQ_term___________________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Subtypes/\"},\n     {\"id\": \"_FLQQ_term___________________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"«term_⊕_»\":\n    [{\"id\":\n      \"_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"«term_⊕'_»\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"«term_≥_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_≤_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_≍_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"«term_≈_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"«term_∨_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term_∧_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term_↔_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term_×_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term_×__1»\":\n    [{\"id\": \"_FLQQ_term______1_FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term_×'_»\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term_||_»\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"«term_|>_»\":\n    [{\"id\": \"_FLQQ_term_____GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"«term_>_»\":\n    [{\"id\": \"_FLQQ_term__GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_>>=_»\":\n    [{\"id\": \"_FLQQ_term__GT__GT______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_>=>_»\":\n    [{\"id\": \"_FLQQ_term__GT_____GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_=_»\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"«term_=<<_»\":\n    [{\"id\": \"_FLQQ_term_____LT__LT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<|_»\":\n    [{\"id\": \"_FLQQ_term__LT______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"«term_<|>_»\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<_»\":\n    [{\"id\": \"_FLQQ_term__LT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_<=<_»\":\n    [{\"id\": \"_FLQQ_term__LT_____LT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<*_»\":\n    [{\"id\": \"_FLQQ_term__LT______FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<*>_»\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<&>_»\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<$>_»\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_::_»\":\n    [{\"id\":\n      \"_FLQQ_term_________FLQQ_-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"«term_*>_»\":\n    [{\"id\": \"_FLQQ_term_____GT___FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_&&_»\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"«term[_]»\":\n    [{\"id\": \"_FLQQ_term_LSQ___RSQ__FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"},\n     {\"id\": \"_FLQQ_term_LSQ___RSQ__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"«termExists_,_»\":\n    [{\"id\": \"_FLQQ_termExists______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"},\n     {\"id\": \"_FLQQ_termExists______FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"«term#[_,]»\":\n    [{\"id\": \"_FLQQ_term____LSQ______RSQ__FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"},\n     {\"id\": \"_FLQQ_term____LSQ______RSQ__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"«stx_<|>_»\":\n    [{\"id\": \"_FLQQ_stx__LT_____GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,+»\":\n    [{\"id\": \"_FLQQ_stx________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,+,?»\":\n    [{\"id\": \"_FLQQ_stx______________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,*»\":\n    [{\"id\": \"_FLQQ_stx________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,*,?»\":\n    [{\"id\": \"_FLQQ_stx______________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_+»\":\n    [{\"id\": \"_FLQQ_stx_____FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_*»\":\n    [{\"id\": \"_FLQQ_stx_____FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«prio(_)»\":\n    [{\"id\": \"_FLQQ_prio_LPAR___RPAR__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"«prec(_)»\":\n    [{\"id\": \"_FLQQ_prec_LPAR___RPAR__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"termIfThenElse\":\n    [{\"id\": \"termIfThenElse\",\n      \"data\": null,\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"termIfLet\":\n    [{\"id\": \"termIfLet\", \"data\": null, \"address\": \"/Terms/Conditionals/\"}],\n    \"termDepIfThenElse\":\n    [{\"id\": \"termDepIfThenElse\",\n      \"data\": null,\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"term!_\":\n    [{\"id\": \"term____\", \"data\": null, \"address\": \"/Basic-Types/Booleans/\"}],\n    \"stx_?\":\n    [{\"id\": \"stx____\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"stx!_\":\n    [{\"id\": \"stx____-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"str.antiquot\":\n    [{\"id\": \"str___antiquot\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"prioMid\":\n    [{\"id\": \"prioMid\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"prioLow\":\n    [{\"id\": \"prioLow\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"prioHigh\":\n    [{\"id\": \"prioHigh\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"prioDefault\":\n    [{\"id\": \"prioDefault\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"precMin\":\n    [{\"id\": \"precMin\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"precMax\":\n    [{\"id\": \"precMax\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"precLead\":\n    [{\"id\": \"precLead\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"precArg\":\n    [{\"id\": \"precArg\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"num.antiquot\":\n    [{\"id\": \"num___antiquot-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"},\n     {\"id\": \"num___antiquot\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"ident.antiquot\":\n    [{\"id\": \"ident___antiquot\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"}],\n    \"coeSortNotation\":\n    [{\"id\": \"coeSortNotation\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"coeNotation\":\n    [{\"id\": \"coeNotation\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"coeFunNotation\":\n    [{\"id\": \"coeFunNotation\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"boolIfThenElse\":\n    [{\"id\": \"boolIfThenElse\",\n      \"data\": null,\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"Std.«term_<..._»\":\n    [{\"id\": \"Std____FLQQ_term__LT____________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_<...=_»\":\n    [{\"id\": \"Std____FLQQ_term__LT_______________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_<...<_»\":\n    [{\"id\": \"Std____FLQQ_term__LT___________LT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_<...*»\":\n    [{\"id\": \"Std____FLQQ_term__LT______________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_..._»\":\n    [{\"id\": \"Std____FLQQ_term____________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_...=_»\":\n    [{\"id\": \"Std____FLQQ_term_______________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_...<_»\":\n    [{\"id\": \"Std____FLQQ_term___________LT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_...*»\":\n    [{\"id\": \"Std____FLQQ_term______________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*..._»\":\n    [{\"id\": \"Std____FLQQ_term______________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*...=_»\":\n    [{\"id\": \"Std____FLQQ_term_________________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*...<_»\":\n    [{\"id\": \"Std____FLQQ_term_____________LT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*...*»\":\n    [{\"id\": \"Std____FLQQ_term________________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Tactic.Do.mgoalStx\":\n    [{\"id\": \"Std___Tactic___Do___mgoalStx-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Proof-Mode/\"}],\n    \"Std.HashMap.«term_~m_»\":\n    [{\"id\": \"Std___HashMap____FLQQ_term____m__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"},\n     {\"id\": \"Std___HashMap____FLQQ_term____m__FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.Do.«term⌜_⌝»\":\n    [{\"id\": \"Std___Do____FLQQ_term________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term⊢ₛ_»\":\n    [{\"id\": \"Std___Do____FLQQ_term_VDASH______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⊣⊢ₛ_»\":\n    [{\"id\": \"Std___Do____FLQQ_term_____VDASH______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⊢ₛ_»\":\n    [{\"id\": \"Std___Do____FLQQ_term__VDASH______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⊢ₚ_»\":\n    [{\"id\": \"Std___Do____FLQQ_term__VDASH______FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_∧ₚ_»\":\n    [{\"id\": \"Std___Do____FLQQ_term_________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⇓_=>_»\":\n    [{\"id\": \"Std___Do____FLQQ_term_________GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Std___Do____FLQQ_term_________GT___FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⇓?_=>_»\":\n    [{\"id\": \"Std___Do____FLQQ_term____________GT___FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_→ₚ_»\":\n    [{\"id\": \"Std___Do____FLQQ_term__ARR______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termWp⟦_:_⟧»\":\n    [{\"id\": \"Std___Do____FLQQ_termWp____________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termTerm(_)»\":\n    [{\"id\": \"Std___Do____FLQQ_termTerm_LPAR___RPAR__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)»\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.triple\":\n    [{\"id\": \"Std___Do___triple\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.DHashMap.«term_~m_»\":\n    [{\"id\": \"Std___DHashMap____FLQQ_term____m__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Manual.FreeSyntax.more\":\n    [{\"id\": \"Manual___FreeSyntax___more-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"},\n     {\"id\": \"Manual___FreeSyntax___more-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"},\n     {\"id\": \"Manual___FreeSyntax___more\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"},\n     {\"id\": \"Manual___FreeSyntax___more-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Manual.FreeSyntax.embed\":\n    [{\"id\": \"Manual___FreeSyntax___embed\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"}],\n    \"Manual.FreeSyntax.done\":\n    [{\"id\": \"Manual___FreeSyntax___done-next-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Manual___FreeSyntax___done-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Manual___FreeSyntax___done\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"List.«term_~_»\":\n    [{\"id\": \"List____FLQQ_term______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<:+_»\":\n    [{\"id\": \"List____FLQQ_term__LT_________FLQQ_-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<:+:_»\":\n    [{\"id\": \"List____FLQQ_term__LT____________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<+_»\":\n    [{\"id\": \"List____FLQQ_term__LT______FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<+:_»\":\n    [{\"id\": \"List____FLQQ_term__LT_________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"Lean.«term_Matches_|»\":\n    [{\"id\": \"Lean____FLQQ_term_Matches_____FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.reduceCmd\":\n    [{\"id\": \"Lean___reduceCmd\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsWhitespaceArg\":\n    [{\"id\": \"Lean___guardMsgsWhitespaceArg-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsWhitespaceArg-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsWhitespaceArg-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsSpecElt\":\n    [{\"id\": \"Lean___guardMsgsSpecElt-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsSpecElt-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsSpecElt-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsFilter\":\n    [{\"id\": \"Lean___guardMsgsFilter-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsFilter-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsFilter-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___guardMsgsFilter-next-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsCmd\":\n    [{\"id\": \"Lean___guardMsgsCmd\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.PrettyPrinter.Delaborator.attrApp_delab_\":\n    [{\"id\": \"Lean___PrettyPrinter___Delaborator___attrApp_delab_\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Lean.Parser.commandUnseal__\":\n    [{\"id\": \"Lean___Parser___commandUnseal__\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.commandSeal__\":\n    [{\"id\": \"Lean___Parser___commandSeal__\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Termination.terminationBy\":\n    [{\"id\": \"Lean___Parser___Termination___terminationBy-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"Lean___Parser___Termination___terminationBy-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Term.typeAscription\":\n    [{\"id\": \"Lean___Parser___Term___typeAscription-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Type-Ascription/\"},\n     {\"id\": \"Lean___Parser___Term___typeAscription\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.tuple\":\n    [{\"id\": \"Lean___Parser___Term___tuple\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Lean.Parser.Term.syntheticHole\":\n    [{\"id\": \"Lean___Parser___Term___syntheticHole-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Holes/\"},\n     {\"id\": \"Lean___Parser___Term___syntheticHole\",\n      \"data\": null,\n      \"address\": \"/Terms/Holes/\"}],\n    \"Lean.Parser.Term.subst\":\n    [{\"id\": \"Lean___Parser___Term___subst\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Lean.Parser.Term.structInstField\":\n    [{\"id\": \"Lean___Parser___Term___structInstField\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"Lean___Parser___Term___structInstField-next\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Term.structInst\":\n    [{\"id\": \"Lean___Parser___Term___structInst\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\": \"Lean___Parser___Term___structInst-next\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Term.strictImplicitBinder\":\n    [{\"id\": \"Lean___Parser___Term___strictImplicitBinder-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___strictImplicitBinder-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\": \"Lean___Parser___Term___strictImplicitBinder\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\": \"Lean___Parser___Term___strictImplicitBinder-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.stateRefT\":\n    [{\"id\": \"Lean___Parser___Term___stateRefT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Lean.Parser.Term.show\":\n    [{\"id\": \"Lean___Parser___Term___show\",\n      \"data\": null,\n      \"address\": \"/Terms/Type-Ascription/\"},\n     {\"id\": \"Lean___Parser___Term___show-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Type-Ascription/\"}],\n    \"Lean.Parser.Term.proj\":\n    [{\"id\": \"Lean___Parser___Term___proj\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Lean.Parser.Term.pipeProj\":\n    [{\"id\": \"Lean___Parser___Term___pipeProj-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"},\n     {\"id\": \"Lean___Parser___Term___pipeProj\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Lean.Parser.Term.paren\":\n    [{\"id\": \"Lean___Parser___Term___paren\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.nomatch\":\n    [{\"id\": \"Lean___Parser___Term___nomatch\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.nofun\":\n    [{\"id\": \"Lean___Parser___Term___nofun\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.namedPattern\":\n    [{\"id\": \"Lean___Parser___Term___namedPattern\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"},\n     {\"id\": \"Lean___Parser___Term___namedPattern-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.matchDiscr\":\n    [{\"id\": \"Lean___Parser___Term___matchDiscr-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"},\n     {\"id\": \"Lean___Parser___Term___matchDiscr\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.match\":\n    [{\"id\": \"Lean___Parser___Term___match\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.instBinder\":\n    [{\"id\": \"Lean___Parser___Term___instBinder-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___instBinder-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___instBinder\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.inaccessible\":\n    [{\"id\": \"Lean___Parser___Term___inaccessible\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.implicitBinder\":\n    [{\"id\": \"Lean___Parser___Term___implicitBinder-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___implicitBinder-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___implicitBinder\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.hole\":\n    [{\"id\": \"Lean___Parser___Term___hole\",\n      \"data\": null,\n      \"address\": \"/Terms/Holes/\"}],\n    \"Lean.Parser.Term.fun\":\n    [{\"id\": \"Lean___Parser___Term___fun\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.forall\":\n    [{\"id\": \"Lean___Parser___Term___forall\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"},\n     {\"id\": \"Lean___Parser___Term___forall-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"},\n     {\"id\": \"Lean___Parser___Term___forall-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"},\n     {\"id\": \"Lean___Parser___Term___forall-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Lean.Parser.Term.explicitBinder\":\n    [{\"id\": \"Lean___Parser___Term___explicitBinder-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\": \"Lean___Parser___Term___explicitBinder\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.doSeqItem\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doSeqItem-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doSeqItem-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doSeqItem-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doReassignArrow\":\n    [{\"id\": \"Lean___Parser___Term___doReassignArrow\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doReassignArrow-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doReassign\":\n    [{\"id\": \"Lean___Parser___Term___doReassign-next\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doReassign\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.do\":\n    [{\"id\": \"Lean___Parser___Term___do\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.depArrow\":\n    [{\"id\":\n      \"Lean___Parser___Term___depArrow-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.byTactic\":\n    [{\"id\": \"Lean___Parser___Term___byTactic-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Running-Tactics/\"},\n     {\"id\": \"Lean___Parser___Term___byTactic-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Running-Tactics/\"}],\n    \"Lean.Parser.Term.borrowed\":\n    [{\"id\": \"Lean___Parser___Term___borrowed\",\n      \"data\": null,\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"Lean.Parser.Term.attributes\":\n    [{\"id\": \"Lean___Parser___Term___attributes-next\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.attrKind\":\n    [{\"id\": \"Lean___Parser___Term___attrKind-next\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"},\n     {\"id\": \"Lean___Parser___Term___attrKind-next-next\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"},\n     {\"id\": \"Lean___Parser___Term___attrKind\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.attrInstance\":\n    [{\"id\": \"Lean___Parser___Term___attrInstance-next\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.arrow\":\n    [{\"id\": \"Lean___Parser___Term___arrow\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.anonymousCtor\":\n    [{\"id\": \"Lean___Parser___Term___anonymousCtor\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Tactic.simp\":\n    [{\"id\": \"Lean___Parser___Tactic___simp\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Invoking-the-Simplifier/\"}],\n    \"Lean.Parser.Tactic.optConfig\":\n    [{\"id\": \"Lean___Parser___Tactic___optConfig-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.configItem\":\n    [{\"id\": \"Lean___Parser___Tactic___configItem-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"},\n     {\"id\": \"Lean___Parser___Tactic___configItem-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"},\n     {\"id\": \"Lean___Parser___Tactic___configItem-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"},\n     {\"id\": \"Lean___Parser___Tactic___configItem-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.Conv.enterArg\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___enterArg-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"},\n     {\"id\": \"Lean___Parser___Tactic___Conv___enterArg-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"},\n     {\"id\": \"Lean___Parser___Tactic___Conv___enterArg-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Syntax.unary\":\n    [{\"id\": \"Lean___Parser___Syntax___unary-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"Lean___Parser___Syntax___unary\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"Lean___Parser___Syntax___unary-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.subPrio\":\n    [{\"id\": \"Lean___Parser___Syntax___subPrio\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Syntax.subPrec\":\n    [{\"id\": \"Lean___Parser___Syntax___subPrec\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"Lean.Parser.Syntax.sepBy1\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy1-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"Lean___Parser___Syntax___sepBy1\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"Lean___Parser___Syntax___sepBy1-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.sepBy\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"Lean___Parser___Syntax___sepBy-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"},\n     {\"id\": \"Lean___Parser___Syntax___sepBy\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.paren\":\n    [{\"id\": \"Lean___Parser___Syntax___paren\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.nonReserved\":\n    [{\"id\": \"Lean___Parser___Syntax___nonReserved\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.cat\":\n    [{\"id\": \"Lean___Parser___Syntax___cat\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.binary\":\n    [{\"id\": \"Lean___Parser___Syntax___binary\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.atom\":\n    [{\"id\": \"Lean___Parser___Syntax___atom\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.addPrio\":\n    [{\"id\": \"Lean___Parser___Syntax___addPrio\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Syntax.addPrec\":\n    [{\"id\": \"Lean___Parser___Syntax___addPrec\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"Lean.Parser.Module.prelude\":\n    [{\"id\": \"Lean___Parser___Module___prelude-next\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.module\":\n    [{\"id\": \"Lean___Parser___Module___module-next\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.import\":\n    [{\"id\": \"Lean___Parser___Module___import-next-next\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Lean___Parser___Module___import-next\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.header\":\n    [{\"id\": \"Lean___Parser___Module___header-next-next\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"},\n     {\"id\": \"Lean___Parser___Module___header-next\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Command.where\":\n    [{\"id\": \"Lean___Parser___Command___where\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.version\":\n    [{\"id\": \"Lean___Parser___Command___version\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.variable\":\n    [{\"id\": \"Lean___Parser___Command___variable\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.universe\":\n    [{\"id\": \"Lean___Parser___Command___universe-next\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Lean.Parser.Command.synth\":\n    [{\"id\": \"Lean___Parser___Command___synth\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.syntaxCat\":\n    [{\"id\": \"Lean___Parser___Command___syntaxCat\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Command.syntax\":\n    [{\"id\": \"Lean___Parser___Command___syntax\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Command.sectionHeader\":\n    [{\"id\": \"Lean___Parser___Command___sectionHeader-next\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.section\":\n    [{\"id\": \"Lean___Parser___Command___section\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.printEqns\":\n    [{\"id\": \"Lean___Parser___Command___printEqns\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___Parser___Command___printEqns-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.printAxioms\":\n    [{\"id\": \"Lean___Parser___Command___printAxioms\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.print\":\n    [{\"id\": \"Lean___Parser___Command___print-next\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___Parser___Command___print\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.optDeriving\":\n    [{\"id\": \"Lean___Parser___Command___optDeriving-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"Lean.Parser.Command.optDeclSig\":\n    [{\"id\": \"Lean___Parser___Command___optDeclSig\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.openSimple\":\n    [{\"id\": \"Lean___Parser___Command___openSimple\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openScoped\":\n    [{\"id\": \"Lean___Parser___Command___openScoped\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openRenaming\":\n    [{\"id\": \"Lean___Parser___Command___openRenaming\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openOnly\":\n    [{\"id\": \"Lean___Parser___Command___openOnly\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openHiding\":\n    [{\"id\": \"Lean___Parser___Command___openHiding\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.open\":\n    [{\"id\": \"Lean___Parser___Command___open\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.notation\":\n    [{\"id\": \"Lean___Parser___Command___notation\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"Lean.Parser.Command.namespace\":\n    [{\"id\": \"Lean___Parser___Command___namespace\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.mutual\":\n    [{\"id\": \"Lean___Parser___Command___mutual\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Command.mixfix\":\n    [{\"id\": \"Lean___Parser___Command___mixfix-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"},\n     {\"id\": \"Lean___Parser___Command___mixfix-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"},\n     {\"id\": \"Lean___Parser___Command___mixfix\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"},\n     {\"id\": \"Lean___Parser___Command___mixfix-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"},\n     {\"id\": \"Lean___Parser___Command___mixfix-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"Lean.Parser.Command.macro_rules\":\n    [{\"id\": \"Lean___Parser___Command___macro_rules\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.macroArg\":\n    [{\"id\": \"Lean___Parser___Command___macroArg-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"},\n     {\"id\": \"Lean___Parser___Command___macroArg-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.macro\":\n    [{\"id\": \"Lean___Parser___Command___macro\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.instance\":\n    [{\"id\": \"Lean___Parser___Command___instance-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"},\n     {\"id\": \"Lean___Parser___Command___instance-next-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"},\n     {\"id\": \"Lean___Parser___Command___instance-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Command.initialize\":\n    [{\"id\": \"Lean___Parser___Command___initialize-next-next\",\n      \"data\": null,\n      \"address\": \"/Elaboration-and-Compilation/\"},\n     {\"id\": \"Lean___Parser___Command___initialize-next\",\n      \"data\": null,\n      \"address\": \"/Elaboration-and-Compilation/\"},\n     {\"id\": \"Lean___Parser___Command___initialize-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Elaboration-and-Compilation/\"},\n     {\"id\": \"Lean___Parser___Command___initialize\",\n      \"data\": null,\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"Lean.Parser.Command.in\":\n    [{\"id\": \"Lean___Parser___Command___in\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.identPrec\":\n    [{\"id\": \"Lean___Parser___Command___identPrec\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"Lean.Parser.Command.grindPattern\":\n    [{\"id\": \"Lean___Parser___Command___grindPattern\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Command.export\":\n    [{\"id\": \"Lean___Parser___Command___export\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.evalBang\":\n    [{\"id\": \"Lean___Parser___Command___evalBang\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.eval\":\n    [{\"id\": \"Lean___Parser___Command___eval\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.eraseAttr\":\n    [{\"id\": \"Lean___Parser___Command___eraseAttr-next\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Command.end\":\n    [{\"id\": \"Lean___Parser___Command___end\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"},\n     {\"id\": \"Lean___Parser___Command___end-next\",\n      \"data\": null,\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.elab_rules\":\n    [{\"id\": \"Lean___Parser___Command___elab_rules\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"Lean.Parser.Command.docComment\":\n    [{\"id\": \"Lean___Parser___Command___docComment\",\n      \"data\": null,\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"Lean.Parser.Command.deriving\":\n    [{\"id\": \"Lean___Parser___Command___deriving-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"Lean.Parser.Command.declaration\":\n    [{\"id\": \"Lean___Parser___Command___declaration-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Example-Declarations/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\": \"Lean___Parser___Command___declaration-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Example-Declarations/\"},\n     {\"id\": \"Lean___Parser___Command___declaration-next\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Example-Declarations/\"},\n     {\"id\": \"Lean___Parser___Command___declaration-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Theorems/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Class-Declarations/\"},\n     {\"id\": \"Lean___Parser___Command___declaration\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Theorems/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Theorems/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Class-Declarations/\"},\n     {\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declSig\":\n    [{\"id\": \"Lean___Parser___Command___declSig\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.declModifiers\":\n    [{\"id\": \"Lean___Parser___Command___declModifiers\",\n      \"data\": null,\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"Lean.Parser.Command.declId\":\n    [{\"id\": \"Lean___Parser___Command___declId\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"},\n     {\"id\": \"Lean___Parser___Command___declId-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.check_failure\":\n    [{\"id\": \"Lean___Parser___Command___check_failure\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.check\":\n    [{\"id\": \"Lean___Parser___Command___check\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.axiom\":\n    [{\"id\": \"Lean___Parser___Command___axiom-next\",\n      \"data\": null,\n      \"address\": \"/Axioms/\"}],\n    \"Lean.Parser.Command.attribute\":\n    [{\"id\": \"Lean___Parser___Command___attribute\",\n      \"data\": null,\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Attr.wf_preprocess\":\n    [{\"id\": \"Lean___Parser___Attr___wf_preprocess\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Attr.spec\":\n    [{\"id\": \"Lean___Parser___Attr___spec\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Lean.Parser.Attr.simple\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lean___Parser___Attr___simple-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Elaborators/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Elaborators/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"},\n     {\"id\": \"Lean___Parser___Attr___simple-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"},\n     {\"id\": \"Lean___Parser___Attr___simple-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"},\n     {\"id\": \"Lean___Parser___Attr___simple\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"Lean___Parser___Attr___simple-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"Lean___Parser___Attr___simple-next-next\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Elaborators/\"},\n     {\"id\": \"Lean___Parser___Attr___simple-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Attr.simp\":\n    [{\"id\": \"Lean___Parser___Attr___simp-next-next\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Simp-sets/\"},\n     {\"id\": \"Lean___Parser___Attr___simp\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Simp-sets/\"},\n     {\"id\": \"Lean___Parser___Attr___simp-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Simp-sets/\"},\n     {\"id\": \"Lean___Parser___Attr___simp-next\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Parser.Attr.macro\":\n    [{\"id\": \"Lean___Parser___Attr___macro\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Attr.instance\":\n    [{\"id\": \"Lean___Parser___Attr___instance\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Attr.grindMod\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\": \"Lean___Parser___Attr___grindMod-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\": \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\": \"Lean___Parser___Attr___grindMod-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\": \"Lean___Parser___Attr___grindMod-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind?\":\n    [{\"id\": \"Lean___Parser___Attr___grind___-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind!?\":\n    [{\"id\": \"Lean___Parser___Attr___grind______\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind!\":\n    [{\"id\": \"Lean___Parser___Attr___grind___\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind\":\n    [{\"id\": \"Lean___Parser___Attr___grind-next-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"},\n     {\"id\": \"Lean___Parser___Attr___grind-next\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"},\n     {\"id\": \"Lean___Parser___Attr___grind\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Lean.Parser.Attr.extern\":\n    [{\"id\": \"Lean___Parser___Attr___extern\",\n      \"data\": null,\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"Lean.Parser.Attr.export\":\n    [{\"id\": \"Lean___Parser___Attr___export\",\n      \"data\": null,\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"Lean.Parser.Attr.default_instance\":\n    [{\"id\": \"Lean___Parser___Attr___default_instance\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Attr.coe\":\n    [{\"id\": \"Lean___Attr___coe\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Lake.DSL.targetCommand\":\n    [{\"id\": \"Lake___DSL___targetCommand\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.scriptDecl\":\n    [{\"id\": \"Lake___DSL___scriptDecl\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.runIO\":\n    [{\"id\": \"Lake___DSL___runIO\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.requireDecl\":\n    [{\"id\": \"Lake___DSL___requireDecl\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.postUpdateDecl\":\n    [{\"id\": \"Lake___DSL___postUpdateDecl\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.packageFacetDecl\":\n    [{\"id\": \"Lake___DSL___packageFacetDecl\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.packageCommand\":\n    [{\"id\": \"Lake___DSL___packageCommand\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___packageCommand-next-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___packageCommand-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.moduleFacetDecl\":\n    [{\"id\": \"Lake___DSL___moduleFacetDecl\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.metaIf\":\n    [{\"id\": \"Lake___DSL___metaIf\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.libraryFacetDecl\":\n    [{\"id\": \"Lake___DSL___libraryFacetDecl\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanLibCommand\":\n    [{\"id\": \"Lake___DSL___leanLibCommand\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___leanLibCommand-next-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___leanLibCommand-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanExeCommand\":\n    [{\"id\": \"Lake___DSL___leanExeCommand-next-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___leanExeCommand\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___leanExeCommand-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.getConfig\":\n    [{\"id\": \"Lake___DSL___getConfig\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.fromClause\":\n    [{\"id\": \"Lake___DSL___fromClause-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___fromClause\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.externLibCommand\":\n    [{\"id\": \"Lake___DSL___externLibCommand\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.dirConst\":\n    [{\"id\": \"Lake___DSL___dirConst\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.declField\":\n    [{\"id\": \"Lake___DSL___declField-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.cmdDo\":\n    [{\"id\": \"Lake___DSL___cmdDo\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___DSL___cmdDo-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Int.«term-[_+1]»\":\n    [{\"id\": \"Int____FLQQ_term-_LSQ_____1_RSQ__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Bool.«term_^^_»\":\n    [{\"id\": \"Bool____FLQQ_term_________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"BitVec.«term__#__»\":\n    [{\"id\": \"BitVec____FLQQ_term________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.«term__#'__»\":\n    [{\"id\": \"BitVec____FLQQ_term___________FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"Array.«term__[_:_]»\":\n    [{\"id\": \"Array____FLQQ_term___LSQ_______RSQ__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.«term__[_:]»\":\n    [{\"id\": \"Array____FLQQ_term___LSQ______RSQ__FLQQ_\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}]}},\n  \"Verso.Genre.Manual.doc.option\":\n  {\"title\": \"Compiler options\",\n   \"description\": \"Compiler options\",\n   \"contents\":\n   {\"trace.grind.split\":\n    [{\"id\": \"trace___grind___split\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"trace.grind.ematch.instance\":\n    [{\"id\": \"trace___grind___ematch___instance\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"trace.compiler.ir.result\":\n    [{\"id\": \"trace___compiler___ir___result\",\n      \"data\": null,\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"trace.Meta.Tactic.simp.rewrite\":\n    [{\"id\": \"trace___Meta___Tactic___simp___rewrite\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"trace.Meta.Tactic.simp.discharge\":\n    [{\"id\": \"trace___Meta___Tactic___simp___discharge\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"trace.Elab.definition.wf\":\n    [{\"id\": \"trace___Elab___definition___wf\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"tactic.skipAssignedInstances\":\n    [{\"id\": \"tactic___skipAssignedInstances\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Options/\"}],\n    \"tactic.simp.trace\":\n    [{\"id\": \"tactic___simp___trace-next\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"},\n     {\"id\": \"tactic___simp___trace\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Options/\"}],\n    \"tactic.hygienic\":\n    [{\"id\": \"tactic___hygienic\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"tactic.customEliminators\":\n    [{\"id\": \"tactic___customEliminators\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Options/\"}],\n    \"synthInstance.maxSize\":\n    [{\"id\": \"synthInstance___maxSize\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"synthInstance.maxHeartbeats\":\n    [{\"id\": \"synthInstance___maxHeartbeats\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"simprocs\":\n    [{\"id\": \"simprocs\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"relaxedAutoImplicit\":\n    [{\"id\": \"relaxedAutoImplicit\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"pp.proofs.threshold\":\n    [{\"id\": \"pp___proofs___threshold\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"pp.proofs\":\n    [{\"id\": \"pp___proofs\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"pp.mvars\":\n    [{\"id\": \"pp___mvars\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"pp.maxSteps\":\n    [{\"id\": \"pp___maxSteps\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"pp.match\":\n    [{\"id\": \"pp___match\",\n      \"data\": null,\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"pp.fieldNotation\":\n    [{\"id\": \"pp___fieldNotation\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"pp.deepTerms.threshold\":\n    [{\"id\": \"pp___deepTerms___threshold\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"pp.deepTerms\":\n    [{\"id\": \"pp___deepTerms\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"linter.unnecessarySimpa\":\n    [{\"id\": \"linter___unnecessarySimpa\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"inductive.autoPromoteIndices\":\n    [{\"id\": \"inductive___autoPromoteIndices\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"guard_msgs.diff\":\n    [{\"id\": \"guard_msgs___diff\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"experimental.module\":\n    [{\"id\": \"experimental___module\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"eval.type\":\n    [{\"id\": \"eval___type\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"eval.pp\":\n    [{\"id\": \"eval___pp\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"eval.derive.repr\":\n    [{\"id\": \"eval___derive___repr\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"bootstrap.inductiveCheckResultingUniverse\":\n    [{\"id\": \"bootstrap___inductiveCheckResultingUniverse\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"backward.synthInstance.canonInstances\":\n    [{\"id\": \"backward___synthInstance___canonInstances\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"backward.proofsInPublic\":\n    [{\"id\": \"backward___proofsInPublic\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"backward.privateInPublic.warn\":\n    [{\"id\": \"backward___privateInPublic___warn\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"backward.privateInPublic\":\n    [{\"id\": \"backward___privateInPublic\",\n      \"data\": null,\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"autoLift\":\n    [{\"id\": \"autoLift\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"autoImplicit\":\n    [{\"id\": \"autoImplicit\",\n      \"data\": null,\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"allowUnsafeReducibility\":\n    [{\"id\": \"allowUnsafeReducibility\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}]}},\n  \"Verso.Genre.Manual.doc\":\n  {\"title\": \"Lean constant reference\",\n   \"description\": \"Lean constant reference\",\n   \"contents\":\n   {\"withTheReader\":\n    [{\"id\": \"withTheReader\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"wfParam\":\n    [{\"id\": \"wfParam\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unsafeIO\":\n    [{\"id\": \"unsafeIO\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unsafeEIO\":\n    [{\"id\": \"unsafeEIO\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unsafeCast\":\n    [{\"id\": \"unsafeCast\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"unsafeBaseIO\":\n    [{\"id\": \"unsafeBaseIO\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"type_eq_of_heq\":\n    [{\"id\": \"type_eq_of_heq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"tryCatchThe\":\n    [{\"id\": \"tryCatchThe\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"throwThe\":\n    [{\"id\": \"throwThe\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"stdSplit\":\n    [{\"id\": \"stdSplit\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"stdRange\":\n    [{\"id\": \"stdRange\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"stdNext\":\n    [{\"id\": \"stdNext\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"semiOutParam\":\n    [{\"id\": \"semiOutParam\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"runST\":\n    [{\"id\": \"runST\", \"data\": null, \"address\": \"/IO/Mutable-References/\"}],\n    \"runEST\":\n    [{\"id\": \"runEST\", \"data\": null, \"address\": \"/IO/Mutable-References/\"}],\n    \"rfl\":\n    [{\"id\": \"rfl-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"reprStr\":\n    [{\"id\": \"reprStr\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"reprArg\":\n    [{\"id\": \"reprArg\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"repr\":\n    [{\"id\": \"repr-next\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"readThe\":\n    [{\"id\": \"readThe\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"randNat\":\n    [{\"id\": \"randNat\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"randBool\":\n    [{\"id\": \"randBool\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"ptrEqList\":\n    [{\"id\": \"ptrEqList\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"ptrEq\":\n    [{\"id\": \"ptrEq\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"ptrAddrUnsafe\":\n    [{\"id\": \"ptrAddrUnsafe\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"propext\":\n    [{\"id\": \"propext\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Propositions/\"}],\n    \"outParam\":\n    [{\"id\": \"outParam\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"orM\":\n    [{\"id\": \"orM\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"optional\":\n    [{\"id\": \"optional\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"optParam\":\n    [{\"id\": \"optParam\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"notM\":\n    [{\"id\": \"notM\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"modifyThe\":\n    [{\"id\": \"modifyThe\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"modifyGetThe\":\n    [{\"id\": \"modifyGetThe\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"modify\":\n    [{\"id\": \"modify\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"mkStdGen\":\n    [{\"id\": \"mkStdGen\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"mixHash\":\n    [{\"id\": \"mixHash\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"minOfLe\":\n    [{\"id\": \"minOfLe\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"maxOfLe\":\n    [{\"id\": \"maxOfLe\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ltOfOrd\":\n    [{\"id\": \"ltOfOrd\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"leOfOrd\":\n    [{\"id\": \"leOfOrd\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"isExclusiveUnsafe\":\n    [{\"id\": \"isExclusiveUnsafe\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"invImage\":\n    [{\"id\": \"invImage\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"inferInstanceAs\":\n    [{\"id\": \"inferInstanceAs\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"inferInstance\":\n    [{\"id\": \"inferInstance\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Instance-Synthesis/\"}],\n    \"heq_of_heq_of_eq\":\n    [{\"id\": \"heq_of_heq_of_eq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"heq_of_eqRec_eq\":\n    [{\"id\": \"heq_of_eqRec_eq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"heq_of_eq\":\n    [{\"id\": \"heq_of_eq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"hash_eq\":\n    [{\"id\": \"hash_eq\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"guard\":\n    [{\"id\": \"guard\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"getThe\":\n    [{\"id\": \"getThe\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"getModify\":\n    [{\"id\": \"getModify\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"funext\":\n    [{\"id\": \"funext\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"eq_of_heq\":\n    [{\"id\": \"eq_of_heq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"eqRec_heq\":\n    [{\"id\": \"eqRec_heq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"dbgTraceIfShared\":\n    [{\"id\": \"dbgTraceIfShared\",\n      \"data\": null,\n      \"address\": \"/Run-Time-Code/Reference-Counting/\"}],\n    \"controlAt\":\n    [{\"id\": \"controlAt\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"control\":\n    [{\"id\": \"control\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"congrFun\":\n    [{\"id\": \"congrFun\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"congrArg\":\n    [{\"id\": \"congrArg\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"congr\":\n    [{\"id\": \"congr-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"cond\":\n    [{\"id\": \"cond\", \"data\": null, \"address\": \"/Basic-Types/Booleans/\"}],\n    \"compareOn\":\n    [{\"id\": \"compareOn\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"compareOfLessAndEq\":\n    [{\"id\": \"compareOfLessAndEq\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"compareOfLessAndBEq\":\n    [{\"id\": \"compareOfLessAndBEq\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"compareLex\":\n    [{\"id\": \"compareLex\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"cast_heq\":\n    [{\"id\": \"cast_heq\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"cast\":\n    [{\"id\": \"cast\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"binderNameHint\":\n    [{\"id\": \"binderNameHint\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Naming-Bound-Variables/\"}],\n    \"autoParam\":\n    [{\"id\": \"autoParam\",\n      \"data\": null,\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"andM\":\n    [{\"id\": \"andM\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"absurd\":\n    [{\"id\": \"absurd\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"[anonymous]\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"},\n     {\"id\": \"LawfulMonad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"},\n     {\"id\": \"Lean___Grind___NatModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"},\n     {\"id\": \"Lean___Grind___Field___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"},\n     {\"id\": \"GetElem______mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"},\n     {\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"},\n     {\"id\": \"Lake___LeanLibConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lean___Grind___CommSemiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"},\n     {\"id\": \"Lake___LeanExeConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Monad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"},\n     {\"id\": \"Lean___Grind___CommRing___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"},\n     {\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"},\n     {\"id\": \"Applicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"},\n     {\"id\": \"Lean___Grind___OrderedRing___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"},\n     {\"id\": \"Lean___Order___CCPO___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"},\n     {\"id\": \"Lean___Grind___IntModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"},\n     {\"id\": \"Lean___Grind___Ring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"},\n     {\"id\": \"EquivBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"},\n     {\"id\": \"Std___Do___WPMonad___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Alternative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"},\n     {\"id\": \"LawfulBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Zero.zero\":\n    [{\"id\": \"Zero___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Zero.mk\":\n    [{\"id\": \"Zero___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Zero\":\n    [{\"id\": \"Zero___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"XorOp.xor\":\n    [{\"id\": \"XorOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"XorOp.mk\":\n    [{\"id\": \"XorOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"XorOp\":\n    [{\"id\": \"XorOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"WellFoundedRelation.wf\":\n    [{\"id\": \"WellFoundedRelation___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WellFoundedRelation.rel\":\n    [{\"id\": \"WellFoundedRelation___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WellFoundedRelation.mk\":\n    [{\"id\": \"WellFoundedRelation___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WellFoundedRelation\":\n    [{\"id\": \"WellFoundedRelation___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WellFounded.intro\":\n    [{\"id\": \"WellFounded___intro\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WellFounded.fix\":\n    [{\"id\": \"WellFounded___fix\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"WellFounded\":\n    [{\"id\": \"WellFounded___intro\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Unit.unit\":\n    [{\"id\": \"Unit___unit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"Unit\":\n    [{\"id\": \"Unit\", \"data\": null, \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"USize.xor\":\n    [{\"id\": \"USize___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toUInt8\":\n    [{\"id\": \"USize___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toUInt64\":\n    [{\"id\": \"USize___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toUInt32\":\n    [{\"id\": \"USize___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toUInt16\":\n    [{\"id\": \"USize___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toNat\":\n    [{\"id\": \"USize___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toISize\":\n    [{\"id\": \"USize___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toFloat32\":\n    [{\"id\": \"USize___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toFloat\":\n    [{\"id\": \"USize___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toFin\":\n    [{\"id\": \"USize___toFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.toBitVec\":\n    [{\"id\": \"USize___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.sub\":\n    [{\"id\": \"USize___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.size\":\n    [{\"id\": \"USize___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.shiftRight\":\n    [{\"id\": \"USize___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.shiftLeft\":\n    [{\"id\": \"USize___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.repr\":\n    [{\"id\": \"USize___repr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.ofNatTruncate\":\n    [{\"id\": \"USize___ofNatTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.ofNatLT\":\n    [{\"id\": \"USize___ofNatLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.ofNat32\":\n    [{\"id\": \"USize___ofNat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.ofNat\":\n    [{\"id\": \"USize___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.ofFin\":\n    [{\"id\": \"USize___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.ofBitVec\":\n    [{\"id\": \"USize___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.neg\":\n    [{\"id\": \"USize___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.mul\":\n    [{\"id\": \"USize___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.mod\":\n    [{\"id\": \"USize___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.lt\":\n    [{\"id\": \"USize___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.lor\":\n    [{\"id\": \"USize___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.log2\":\n    [{\"id\": \"USize___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.le\":\n    [{\"id\": \"USize___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.land\":\n    [{\"id\": \"USize___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.div\":\n    [{\"id\": \"USize___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.decLt\":\n    [{\"id\": \"USize___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.decLe\":\n    [{\"id\": \"USize___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.decEq\":\n    [{\"id\": \"USize___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.complement\":\n    [{\"id\": \"USize___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize.add\":\n    [{\"id\": \"USize___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"USize\":\n    [{\"id\": \"USize___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ULift.up\":\n    [{\"id\": \"ULift___up\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"ULift.down\":\n    [{\"id\": \"ULift___up\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"ULift\":\n    [{\"id\": \"ULift___up\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"UInt8.xor\":\n    [{\"id\": \"UInt8___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toUSize\":\n    [{\"id\": \"UInt8___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toUInt64\":\n    [{\"id\": \"UInt8___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toUInt32\":\n    [{\"id\": \"UInt8___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toUInt16\":\n    [{\"id\": \"UInt8___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toNat\":\n    [{\"id\": \"UInt8___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toInt8\":\n    [{\"id\": \"UInt8___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toFloat32\":\n    [{\"id\": \"UInt8___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toFloat\":\n    [{\"id\": \"UInt8___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toFin\":\n    [{\"id\": \"UInt8___toFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.toBitVec\":\n    [{\"id\": \"UInt8___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.sub\":\n    [{\"id\": \"UInt8___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.size\":\n    [{\"id\": \"UInt8___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.shiftRight\":\n    [{\"id\": \"UInt8___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.shiftLeft\":\n    [{\"id\": \"UInt8___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.ofNatTruncate\":\n    [{\"id\": \"UInt8___ofNatTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.ofNatLT\":\n    [{\"id\": \"UInt8___ofNatLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.ofNat\":\n    [{\"id\": \"UInt8___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.ofFin\":\n    [{\"id\": \"UInt8___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.ofBitVec\":\n    [{\"id\": \"UInt8___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.neg\":\n    [{\"id\": \"UInt8___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.mul\":\n    [{\"id\": \"UInt8___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.mod\":\n    [{\"id\": \"UInt8___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.lt\":\n    [{\"id\": \"UInt8___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.lor\":\n    [{\"id\": \"UInt8___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.log2\":\n    [{\"id\": \"UInt8___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.le\":\n    [{\"id\": \"UInt8___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.land\":\n    [{\"id\": \"UInt8___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.div\":\n    [{\"id\": \"UInt8___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.decLt\":\n    [{\"id\": \"UInt8___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.decLe\":\n    [{\"id\": \"UInt8___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.decEq\":\n    [{\"id\": \"UInt8___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.complement\":\n    [{\"id\": \"UInt8___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8.add\":\n    [{\"id\": \"UInt8___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt8\":\n    [{\"id\": \"UInt8___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.xor\":\n    [{\"id\": \"UInt64___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toUSize\":\n    [{\"id\": \"UInt64___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toUInt8\":\n    [{\"id\": \"UInt64___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toUInt32\":\n    [{\"id\": \"UInt64___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toUInt16\":\n    [{\"id\": \"UInt64___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toNat\":\n    [{\"id\": \"UInt64___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toInt64\":\n    [{\"id\": \"UInt64___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toFloat32\":\n    [{\"id\": \"UInt64___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toFloat\":\n    [{\"id\": \"UInt64___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toFin\":\n    [{\"id\": \"UInt64___toFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.toBitVec\":\n    [{\"id\": \"UInt64___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.sub\":\n    [{\"id\": \"UInt64___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.size\":\n    [{\"id\": \"UInt64___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.shiftRight\":\n    [{\"id\": \"UInt64___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.shiftLeft\":\n    [{\"id\": \"UInt64___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.ofNatTruncate\":\n    [{\"id\": \"UInt64___ofNatTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.ofNatLT\":\n    [{\"id\": \"UInt64___ofNatLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.ofNat\":\n    [{\"id\": \"UInt64___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.ofFin\":\n    [{\"id\": \"UInt64___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.ofBitVec\":\n    [{\"id\": \"UInt64___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.neg\":\n    [{\"id\": \"UInt64___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.mul\":\n    [{\"id\": \"UInt64___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.mod\":\n    [{\"id\": \"UInt64___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.lt\":\n    [{\"id\": \"UInt64___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.lor\":\n    [{\"id\": \"UInt64___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.log2\":\n    [{\"id\": \"UInt64___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.le\":\n    [{\"id\": \"UInt64___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.land\":\n    [{\"id\": \"UInt64___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.div\":\n    [{\"id\": \"UInt64___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.decLt\":\n    [{\"id\": \"UInt64___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.decLe\":\n    [{\"id\": \"UInt64___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.decEq\":\n    [{\"id\": \"UInt64___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.complement\":\n    [{\"id\": \"UInt64___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64.add\":\n    [{\"id\": \"UInt64___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt64\":\n    [{\"id\": \"UInt64___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.xor\":\n    [{\"id\": \"UInt32___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toUSize\":\n    [{\"id\": \"UInt32___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toUInt8\":\n    [{\"id\": \"UInt32___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toUInt64\":\n    [{\"id\": \"UInt32___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toUInt16\":\n    [{\"id\": \"UInt32___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toNat\":\n    [{\"id\": \"UInt32___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toInt32\":\n    [{\"id\": \"UInt32___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toFloat32\":\n    [{\"id\": \"UInt32___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toFloat\":\n    [{\"id\": \"UInt32___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toFin\":\n    [{\"id\": \"UInt32___toFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.toBitVec\":\n    [{\"id\": \"UInt32___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.sub\":\n    [{\"id\": \"UInt32___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.size\":\n    [{\"id\": \"UInt32___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.shiftRight\":\n    [{\"id\": \"UInt32___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.shiftLeft\":\n    [{\"id\": \"UInt32___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.ofNatTruncate\":\n    [{\"id\": \"UInt32___ofNatTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.ofNatLT\":\n    [{\"id\": \"UInt32___ofNatLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.ofNat\":\n    [{\"id\": \"UInt32___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.ofFin\":\n    [{\"id\": \"UInt32___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.ofBitVec\":\n    [{\"id\": \"UInt32___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.neg\":\n    [{\"id\": \"UInt32___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.mul\":\n    [{\"id\": \"UInt32___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.mod\":\n    [{\"id\": \"UInt32___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.lt\":\n    [{\"id\": \"UInt32___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.lor\":\n    [{\"id\": \"UInt32___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.log2\":\n    [{\"id\": \"UInt32___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.le\":\n    [{\"id\": \"UInt32___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.land\":\n    [{\"id\": \"UInt32___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.isValidChar\":\n    [{\"id\": \"UInt32___isValidChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.div\":\n    [{\"id\": \"UInt32___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.decLt\":\n    [{\"id\": \"UInt32___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.decLe\":\n    [{\"id\": \"UInt32___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.decEq\":\n    [{\"id\": \"UInt32___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.complement\":\n    [{\"id\": \"UInt32___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32.add\":\n    [{\"id\": \"UInt32___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt32\":\n    [{\"id\": \"UInt32___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.xor\":\n    [{\"id\": \"UInt16___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toUSize\":\n    [{\"id\": \"UInt16___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toUInt8\":\n    [{\"id\": \"UInt16___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toUInt64\":\n    [{\"id\": \"UInt16___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toUInt32\":\n    [{\"id\": \"UInt16___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toNat\":\n    [{\"id\": \"UInt16___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toInt16\":\n    [{\"id\": \"UInt16___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toFloat32\":\n    [{\"id\": \"UInt16___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toFloat\":\n    [{\"id\": \"UInt16___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toFin\":\n    [{\"id\": \"UInt16___toFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.toBitVec\":\n    [{\"id\": \"UInt16___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.sub\":\n    [{\"id\": \"UInt16___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.size\":\n    [{\"id\": \"UInt16___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.shiftRight\":\n    [{\"id\": \"UInt16___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.shiftLeft\":\n    [{\"id\": \"UInt16___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.ofNatTruncate\":\n    [{\"id\": \"UInt16___ofNatTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.ofNatLT\":\n    [{\"id\": \"UInt16___ofNatLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.ofNat\":\n    [{\"id\": \"UInt16___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.ofFin\":\n    [{\"id\": \"UInt16___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.ofBitVec\":\n    [{\"id\": \"UInt16___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.neg\":\n    [{\"id\": \"UInt16___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.mul\":\n    [{\"id\": \"UInt16___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.mod\":\n    [{\"id\": \"UInt16___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.lt\":\n    [{\"id\": \"UInt16___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.lor\":\n    [{\"id\": \"UInt16___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.log2\":\n    [{\"id\": \"UInt16___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.le\":\n    [{\"id\": \"UInt16___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.land\":\n    [{\"id\": \"UInt16___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.div\":\n    [{\"id\": \"UInt16___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.decLt\":\n    [{\"id\": \"UInt16___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.decLe\":\n    [{\"id\": \"UInt16___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.decEq\":\n    [{\"id\": \"UInt16___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.complement\":\n    [{\"id\": \"UInt16___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16.add\":\n    [{\"id\": \"UInt16___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"UInt16\":\n    [{\"id\": \"UInt16___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"True.intro\":\n    [{\"id\": \"True___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"True\":\n    [{\"id\": \"True___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"Trans.trans\":\n    [{\"id\": \"Trans___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Trans.mk\":\n    [{\"id\": \"Trans___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Trans\":\n    [{\"id\": \"Trans___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Thunk.pure\":\n    [{\"id\": \"Thunk___pure\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk.mk\":\n    [{\"id\": \"Thunk___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk.map\":\n    [{\"id\": \"Thunk___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk.get\":\n    [{\"id\": \"Thunk___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk.fn\":\n    [{\"id\": \"Thunk___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk.bind\":\n    [{\"id\": \"Thunk___bind\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Thunk\":\n    [{\"id\": \"Thunk___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Lazy-Computations/\"}],\n    \"Task.spawn\":\n    [{\"id\": \"Task___spawn\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.pure\":\n    [{\"id\": \"Task___pure\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.mapList\":\n    [{\"id\": \"Task___mapList\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.map\":\n    [{\"id\": \"Task___map\", \"data\": null, \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.get\":\n    [{\"id\": \"Task___get\", \"data\": null, \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.bind\":\n    [{\"id\": \"Task___bind\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.Priority.max\":\n    [{\"id\": \"Task___Priority___max\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.Priority.default\":\n    [{\"id\": \"Task___Priority___default\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.Priority.dedicated\":\n    [{\"id\": \"Task___Priority___dedicated\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task.Priority\":\n    [{\"id\": \"Task___Priority\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Task\":\n    [{\"id\": \"Task\", \"data\": null, \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"System.mkFilePath\":\n    [{\"id\": \"System___mkFilePath\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.Platform.target\":\n    [{\"id\": \"System___Platform___target\",\n      \"data\": null,\n      \"address\": \"/IO/System-and-Platform-Information/\"}],\n    \"System.Platform.numBits\":\n    [{\"id\": \"System___Platform___numBits\",\n      \"data\": null,\n      \"address\": \"/IO/System-and-Platform-Information/\"}],\n    \"System.Platform.isWindows\":\n    [{\"id\": \"System___Platform___isWindows\",\n      \"data\": null,\n      \"address\": \"/IO/System-and-Platform-Information/\"}],\n    \"System.Platform.isOSX\":\n    [{\"id\": \"System___Platform___isOSX\",\n      \"data\": null,\n      \"address\": \"/IO/System-and-Platform-Information/\"}],\n    \"System.Platform.isEmscripten\":\n    [{\"id\": \"System___Platform___isEmscripten\",\n      \"data\": null,\n      \"address\": \"/IO/System-and-Platform-Information/\"}],\n    \"System.FilePath.withFileName\":\n    [{\"id\": \"System___FilePath___withFileName\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.withExtension\":\n    [{\"id\": \"System___FilePath___withExtension\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.walkDir\":\n    [{\"id\": \"System___FilePath___walkDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.toString\":\n    [{\"id\": \"System___FilePath___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.symlinkMetadata\":\n    [{\"id\": \"System___FilePath___symlinkMetadata\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.readDir\":\n    [{\"id\": \"System___FilePath___readDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.pathSeparators\":\n    [{\"id\": \"System___FilePath___pathSeparators\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.pathSeparator\":\n    [{\"id\": \"System___FilePath___pathSeparator\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.pathExists\":\n    [{\"id\": \"System___FilePath___pathExists\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.parent\":\n    [{\"id\": \"System___FilePath___parent\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.normalize\":\n    [{\"id\": \"System___FilePath___normalize\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.mk\":\n    [{\"id\": \"System___FilePath___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.metadata\":\n    [{\"id\": \"System___FilePath___metadata\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.join\":\n    [{\"id\": \"System___FilePath___join\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.isRelative\":\n    [{\"id\": \"System___FilePath___isRelative\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.isDir\":\n    [{\"id\": \"System___FilePath___isDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.isAbsolute\":\n    [{\"id\": \"System___FilePath___isAbsolute\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.fileStem\":\n    [{\"id\": \"System___FilePath___fileStem\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.fileName\":\n    [{\"id\": \"System___FilePath___fileName\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.extension\":\n    [{\"id\": \"System___FilePath___extension\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.extSeparator\":\n    [{\"id\": \"System___FilePath___extSeparator\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.exeExtension\":\n    [{\"id\": \"System___FilePath___exeExtension\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.components\":\n    [{\"id\": \"System___FilePath___components\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath.addExtension\":\n    [{\"id\": \"System___FilePath___addExtension\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"System.FilePath\":\n    [{\"id\": \"System___FilePath___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"Sum.swap\":\n    [{\"id\": \"Sum___swap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.map\":\n    [{\"id\": \"Sum___map\", \"data\": null, \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.isRight\":\n    [{\"id\": \"Sum___isRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.isLeft\":\n    [{\"id\": \"Sum___isLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.inr\":\n    [{\"id\": \"Sum___inl\", \"data\": null, \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.inl\":\n    [{\"id\": \"Sum___inl\", \"data\": null, \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.inhabitedRight\":\n    [{\"id\": \"Sum___inhabitedRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.inhabitedLeft\":\n    [{\"id\": \"Sum___inhabitedLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.getRight?\":\n    [{\"id\": \"Sum___getRight___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.getRight\":\n    [{\"id\": \"Sum___getRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.getLeft?\":\n    [{\"id\": \"Sum___getLeft___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.getLeft\":\n    [{\"id\": \"Sum___getLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum.elim\":\n    [{\"id\": \"Sum___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Sum\":\n    [{\"id\": \"Sum___inl\", \"data\": null, \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"Subtype.val\":\n    [{\"id\": \"Subtype___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"Subtype.property\":\n    [{\"id\": \"Subtype___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"Subtype.mk\":\n    [{\"id\": \"Subtype___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"Subtype\":\n    [{\"id\": \"Subtype___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"Substring.Raw.trimRight\":\n    [{\"id\": \"Substring___Raw___trimRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.trimLeft\":\n    [{\"id\": \"Substring___Raw___trimLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.trim\":\n    [{\"id\": \"Substring___Raw___trim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.toString\":\n    [{\"id\": \"Substring___Raw___toString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.toNat?\":\n    [{\"id\": \"Substring___Raw___toNat___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.toName\":\n    [{\"id\": \"Substring___Raw___toName\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.toLegacyIterator\":\n    [{\"id\": \"Substring___Raw___toLegacyIterator\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.takeWhile\":\n    [{\"id\": \"Substring___Raw___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.takeRightWhile\":\n    [{\"id\": \"Substring___Raw___takeRightWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.takeRight\":\n    [{\"id\": \"Substring___Raw___takeRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.take\":\n    [{\"id\": \"Substring___Raw___take\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.str\":\n    [{\"id\": \"Substring___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.stopPos\":\n    [{\"id\": \"Substring___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.startPos\":\n    [{\"id\": \"Substring___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.splitOn\":\n    [{\"id\": \"Substring___Raw___splitOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.sameAs\":\n    [{\"id\": \"Substring___Raw___sameAs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.repair\":\n    [{\"id\": \"Substring___Raw___repair\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.prevn\":\n    [{\"id\": \"Substring___Raw___prevn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.prev\":\n    [{\"id\": \"Substring___Raw___prev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.posOf\":\n    [{\"id\": \"Substring___Raw___posOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.nextn\":\n    [{\"id\": \"Substring___Raw___nextn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.next\":\n    [{\"id\": \"Substring___Raw___next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.mk\":\n    [{\"id\": \"Substring___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.isNat\":\n    [{\"id\": \"Substring___Raw___isNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.isEmpty\":\n    [{\"id\": \"Substring___Raw___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.get\":\n    [{\"id\": \"Substring___Raw___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.front\":\n    [{\"id\": \"Substring___Raw___front\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.foldr\":\n    [{\"id\": \"Substring___Raw___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.foldl\":\n    [{\"id\": \"Substring___Raw___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.extract\":\n    [{\"id\": \"Substring___Raw___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.dropWhile\":\n    [{\"id\": \"Substring___Raw___dropWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.dropSuffix?\":\n    [{\"id\": \"Substring___Raw___dropSuffix___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.dropRightWhile\":\n    [{\"id\": \"Substring___Raw___dropRightWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.dropRight\":\n    [{\"id\": \"Substring___Raw___dropRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.dropPrefix?\":\n    [{\"id\": \"Substring___Raw___dropPrefix___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.drop\":\n    [{\"id\": \"Substring___Raw___drop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.contains\":\n    [{\"id\": \"Substring___Raw___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.commonSuffix\":\n    [{\"id\": \"Substring___Raw___commonSuffix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.commonPrefix\":\n    [{\"id\": \"Substring___Raw___commonPrefix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.bsize\":\n    [{\"id\": \"Substring___Raw___bsize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.beq\":\n    [{\"id\": \"Substring___Raw___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.atEnd\":\n    [{\"id\": \"Substring___Raw___atEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.any\":\n    [{\"id\": \"Substring___Raw___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw.all\":\n    [{\"id\": \"Substring___Raw___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Substring.Raw\":\n    [{\"id\": \"Substring___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"Subsingleton.intro\":\n    [{\"id\": \"Subsingleton___intro\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Subsingleton.helim\":\n    [{\"id\": \"Subsingleton___helim\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Subsingleton.elim\":\n    [{\"id\": \"Subsingleton___elim\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Subsingleton.allEq\":\n    [{\"id\": \"Subsingleton___intro\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Subsingleton\":\n    [{\"id\": \"Subsingleton___intro\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Subarray.toArray\":\n    [{\"id\": \"Subarray___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.take\":\n    [{\"id\": \"Subarray___take\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.stop_le_array_size\":\n    [{\"id\": \"Subarray___stop_le_array_size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.stop\":\n    [{\"id\": \"Subarray___stop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.start_le_stop\":\n    [{\"id\": \"Subarray___start_le_stop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.start\":\n    [{\"id\": \"Subarray___start\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.split\":\n    [{\"id\": \"Subarray___split\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.size\":\n    [{\"id\": \"Subarray___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.popFront\":\n    [{\"id\": \"Subarray___popFront\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.getD\":\n    [{\"id\": \"Subarray___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.get!\":\n    [{\"id\": \"Subarray___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.get\":\n    [{\"id\": \"Subarray___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.forRevM\":\n    [{\"id\": \"Subarray___forRevM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.forM\":\n    [{\"id\": \"Subarray___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.forIn\":\n    [{\"id\": \"Subarray___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.foldrM\":\n    [{\"id\": \"Subarray___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.foldr\":\n    [{\"id\": \"Subarray___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.foldlM\":\n    [{\"id\": \"Subarray___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.foldl\":\n    [{\"id\": \"Subarray___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.findSomeRevM?\":\n    [{\"id\": \"Subarray___findSomeRevM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.findRevM?\":\n    [{\"id\": \"Subarray___findRevM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.findRev?\":\n    [{\"id\": \"Subarray___findRev___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.empty\":\n    [{\"id\": \"Subarray___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.drop\":\n    [{\"id\": \"Subarray___drop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.array\":\n    [{\"id\": \"Subarray___array\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.anyM\":\n    [{\"id\": \"Subarray___anyM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.any\":\n    [{\"id\": \"Subarray___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.allM\":\n    [{\"id\": \"Subarray___allM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray.all\":\n    [{\"id\": \"Subarray___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Subarray\":\n    [{\"id\": \"Subarray\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Sub.sub\":\n    [{\"id\": \"Sub___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Sub.mk\":\n    [{\"id\": \"Sub___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Sub\":\n    [{\"id\": \"Sub___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"String.utf8EncodeChar\":\n    [{\"id\": \"String___utf8EncodeChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.utf8ByteSize\":\n    [{\"id\": \"String___utf8ByteSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.trimRight\":\n    [{\"id\": \"String___trimRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.trimLeft\":\n    [{\"id\": \"String___trimLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.trim\":\n    [{\"id\": \"String___trim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toUpper\":\n    [{\"id\": \"String___toUpper\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toUTF8\":\n    [{\"id\": \"String___toUTF8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toSlice\":\n    [{\"id\": \"String___toSlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toRawSubstring'\":\n    [{\"id\": \"String___toRawSubstring___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toRawSubstring\":\n    [{\"id\": \"String___toRawSubstring\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toNat?\":\n    [{\"id\": \"String___toNat___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toNat!\":\n    [{\"id\": \"String___toNat___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toName\":\n    [{\"id\": \"String___toName\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toLower\":\n    [{\"id\": \"String___toLower\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toList\":\n    [{\"id\": \"String___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"},\n     {\"id\": \"String___toList-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toInt?\":\n    [{\"id\": \"String___toInt___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toInt!\":\n    [{\"id\": \"String___toInt___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.toFormat\":\n    [{\"id\": \"String___toFormat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.takeWhile\":\n    [{\"id\": \"String___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.takeRightWhile\":\n    [{\"id\": \"String___takeRightWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.takeRight\":\n    [{\"id\": \"String___takeRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.take\":\n    [{\"id\": \"String___take\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.stripSuffix\":\n    [{\"id\": \"String___stripSuffix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.stripPrefix\":\n    [{\"id\": \"String___stripPrefix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.startsWith\":\n    [{\"id\": \"String___startsWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.startValidPos\":\n    [{\"id\": \"String___startValidPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.splitToList\":\n    [{\"id\": \"String___splitToList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.splitOn\":\n    [{\"id\": \"String___splitOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.singleton\":\n    [{\"id\": \"String___singleton\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.revPosOf\":\n    [{\"id\": \"String___revPosOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.revFind\":\n    [{\"id\": \"String___revFind\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.replaceStart\":\n    [{\"id\": \"String___replaceStart\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.replaceEnd\":\n    [{\"id\": \"String___replaceEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.replace\":\n    [{\"id\": \"String___replace\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.removeLeadingSpaces\":\n    [{\"id\": \"String___removeLeadingSpaces\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.rawEndPos\":\n    [{\"id\": \"String___rawEndPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.quote\":\n    [{\"id\": \"String___quote\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.pushn\":\n    [{\"id\": \"String___pushn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.push\":\n    [{\"id\": \"String___push\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.posOf\":\n    [{\"id\": \"String___posOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.pos?\":\n    [{\"id\": \"String___pos___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.pos!\":\n    [{\"id\": \"String___pos___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.pos\":\n    [{\"id\": \"String___pos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.offsetOfPos\":\n    [{\"id\": \"String___offsetOfPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ofList\":\n    [{\"id\": \"String___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ofByteArray\":\n    [{\"id\": \"String___ofByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.map\":\n    [{\"id\": \"String___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.length\":\n    [{\"id\": \"String___length\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.le\":\n    [{\"id\": \"String___le\", \"data\": null, \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.join\":\n    [{\"id\": \"String___join\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.isValidUTF8\":\n    [{\"id\": \"String___ofByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.isPrefixOf\":\n    [{\"id\": \"String___isPrefixOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.isNat\":\n    [{\"id\": \"String___isNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.isInt\":\n    [{\"id\": \"String___isInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.isEmpty\":\n    [{\"id\": \"String___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.intercalate\":\n    [{\"id\": \"String___intercalate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.hash\":\n    [{\"id\": \"String___hash\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.getUTF8Byte\":\n    [{\"id\": \"String___getUTF8Byte\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.front\":\n    [{\"id\": \"String___front\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.fromUTF8?\":\n    [{\"id\": \"String___fromUTF8___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.fromUTF8!\":\n    [{\"id\": \"String___fromUTF8___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.fromUTF8\":\n    [{\"id\": \"String___fromUTF8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.foldr\":\n    [{\"id\": \"String___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.foldl\":\n    [{\"id\": \"String___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.firstDiffPos\":\n    [{\"id\": \"String___firstDiffPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.findLineStart\":\n    [{\"id\": \"String___findLineStart\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.find\":\n    [{\"id\": \"String___find\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.endsWith\":\n    [{\"id\": \"String___endsWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.endValidPos\":\n    [{\"id\": \"String___endValidPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.dropWhile\":\n    [{\"id\": \"String___dropWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.dropSuffix?\":\n    [{\"id\": \"String___dropSuffix___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.dropRightWhile\":\n    [{\"id\": \"String___dropRightWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.dropRight\":\n    [{\"id\": \"String___dropRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.dropPrefix?\":\n    [{\"id\": \"String___dropPrefix___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.drop\":\n    [{\"id\": \"String___drop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.decapitalize\":\n    [{\"id\": \"String___decapitalize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.decEq\":\n    [{\"id\": \"String___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.crlfToLf\":\n    [{\"id\": \"String___crlfToLf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.contains\":\n    [{\"id\": \"String___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.capitalize\":\n    [{\"id\": \"String___capitalize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.bytes\":\n    [{\"id\": \"String___ofByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.back\":\n    [{\"id\": \"String___back\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.append\":\n    [{\"id\": \"String___append\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.any\":\n    [{\"id\": \"String___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.all\":\n    [{\"id\": \"String___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.toSlice\":\n    [{\"id\": \"String___ValidPos___toSlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.toSetOfLE\":\n    [{\"id\": \"String___ValidPos___toSetOfLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.toModifyOfLE\":\n    [{\"id\": \"String___ValidPos___toModifyOfLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.set\":\n    [{\"id\": \"String___ValidPos___set\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.prev?\":\n    [{\"id\": \"String___ValidPos___prev___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.prev!\":\n    [{\"id\": \"String___ValidPos___prev___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.prev\":\n    [{\"id\": \"String___ValidPos___prev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.offset\":\n    [{\"id\": \"String___ValidPos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.ofCopy\":\n    [{\"id\": \"String___ValidPos___ofCopy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.next?\":\n    [{\"id\": \"String___ValidPos___next___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.next!\":\n    [{\"id\": \"String___ValidPos___next___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.next\":\n    [{\"id\": \"String___ValidPos___next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.modify\":\n    [{\"id\": \"String___ValidPos___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.mk\":\n    [{\"id\": \"String___ValidPos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.isValid\":\n    [{\"id\": \"String___ValidPos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.get?\":\n    [{\"id\": \"String___ValidPos___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.get!\":\n    [{\"id\": \"String___ValidPos___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.get\":\n    [{\"id\": \"String___ValidPos___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.extract\":\n    [{\"id\": \"String___ValidPos___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.cast\":\n    [{\"id\": \"String___ValidPos___cast\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos.byte\":\n    [{\"id\": \"String___ValidPos___byte\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.ValidPos\":\n    [{\"id\": \"String___ValidPos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.utf8ByteSize\":\n    [{\"id\": \"String___Slice___utf8ByteSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.trimAsciiStart\":\n    [{\"id\": \"String___Slice___trimAsciiStart\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.trimAsciiEnd\":\n    [{\"id\": \"String___Slice___trimAsciiEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.trimAscii\":\n    [{\"id\": \"String___Slice___trimAscii\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.toNat?\":\n    [{\"id\": \"String___Slice___toNat___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.toNat!\":\n    [{\"id\": \"String___Slice___toNat___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.takeWhile\":\n    [{\"id\": \"String___Slice___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.takeEndWhile\":\n    [{\"id\": \"String___Slice___takeEndWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.takeEnd\":\n    [{\"id\": \"String___Slice___takeEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.take\":\n    [{\"id\": \"String___Slice___take\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.str\":\n    [{\"id\": \"String___Slice___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.startsWith\":\n    [{\"id\": \"String___Slice___startsWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.startPos\":\n    [{\"id\": \"String___Slice___startPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.startInclusive_le_endExclusive\":\n    [{\"id\": \"String___Slice___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.startInclusive\":\n    [{\"id\": \"String___Slice___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.splitInclusive\":\n    [{\"id\": \"String___Slice___splitInclusive\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.split\":\n    [{\"id\": \"String___Slice___split\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.revSplit\":\n    [{\"id\": \"String___Slice___revSplit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.revPositions\":\n    [{\"id\": \"String___Slice___revPositions\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.revFind?\":\n    [{\"id\": \"String___Slice___revFind___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.revChars\":\n    [{\"id\": \"String___Slice___revChars\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.revBytes\":\n    [{\"id\": \"String___Slice___revBytes\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.replaceStartEnd!\":\n    [{\"id\": \"String___Slice___replaceStartEnd___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.replaceStartEnd\":\n    [{\"id\": \"String___Slice___replaceStartEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.replaceStart\":\n    [{\"id\": \"String___Slice___replaceStart\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.replaceEnd\":\n    [{\"id\": \"String___Slice___replaceEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.rawEndPos\":\n    [{\"id\": \"String___Slice___rawEndPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.positions\":\n    [{\"id\": \"String___Slice___positions\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.pos?\":\n    [{\"id\": \"String___Slice___pos___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.pos!\":\n    [{\"id\": \"String___Slice___pos___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.pos\":\n    [{\"id\": \"String___Slice___pos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.mk\":\n    [{\"id\": \"String___Slice___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.lines\":\n    [{\"id\": \"String___Slice___lines\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.isNat\":\n    [{\"id\": \"String___Slice___isNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.isEmpty\":\n    [{\"id\": \"String___Slice___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.getUTF8Byte!\":\n    [{\"id\": \"String___Slice___getUTF8Byte___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.getUTF8Byte\":\n    [{\"id\": \"String___Slice___getUTF8Byte\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.front?\":\n    [{\"id\": \"String___Slice___front___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.front\":\n    [{\"id\": \"String___Slice___front\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.foldr\":\n    [{\"id\": \"String___Slice___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.foldl\":\n    [{\"id\": \"String___Slice___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.findNextPos\":\n    [{\"id\": \"String___Slice___findNextPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.find?\":\n    [{\"id\": \"String___Slice___find___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.eqIgnoreAsciiCase\":\n    [{\"id\": \"String___Slice___eqIgnoreAsciiCase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.endsWith\":\n    [{\"id\": \"String___Slice___endsWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.endPos\":\n    [{\"id\": \"String___Slice___endPos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.endExclusive\":\n    [{\"id\": \"String___Slice___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropWhile\":\n    [{\"id\": \"String___Slice___dropWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropSuffix?\":\n    [{\"id\": \"String___Slice___dropSuffix___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropSuffix\":\n    [{\"id\": \"String___Slice___dropSuffix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropPrefix?\":\n    [{\"id\": \"String___Slice___dropPrefix___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropPrefix\":\n    [{\"id\": \"String___Slice___dropPrefix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropEndWhile\":\n    [{\"id\": \"String___Slice___dropEndWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.dropEnd\":\n    [{\"id\": \"String___Slice___dropEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.drop\":\n    [{\"id\": \"String___Slice___drop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.copy\":\n    [{\"id\": \"String___Slice___copy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.contains\":\n    [{\"id\": \"String___Slice___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.chars\":\n    [{\"id\": \"String___Slice___chars\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.bytes\":\n    [{\"id\": \"String___Slice___bytes\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.beq\":\n    [{\"id\": \"String___Slice___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.back?\":\n    [{\"id\": \"String___Slice___back___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.back\":\n    [{\"id\": \"String___Slice___back\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.all\":\n    [{\"id\": \"String___Slice___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.toReplaceStart\":\n    [{\"id\": \"String___Slice___Pos___toReplaceStart\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.toCopy\":\n    [{\"id\": \"String___Slice___Pos___toCopy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.str\":\n    [{\"id\": \"String___Slice___Pos___str\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.prevn\":\n    [{\"id\": \"String___Slice___Pos___prevn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.prev?\":\n    [{\"id\": \"String___Slice___Pos___prev___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.prev!\":\n    [{\"id\": \"String___Slice___Pos___prev___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.prev\":\n    [{\"id\": \"String___Slice___Pos___prev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.offset\":\n    [{\"id\": \"String___Slice___Pos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.ofSlice\":\n    [{\"id\": \"String___Slice___Pos___ofSlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.ofReplaceStart\":\n    [{\"id\": \"String___Slice___Pos___ofReplaceStart\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.nextn\":\n    [{\"id\": \"String___Slice___Pos___nextn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.next?\":\n    [{\"id\": \"String___Slice___Pos___next___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.next!\":\n    [{\"id\": \"String___Slice___Pos___next___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.next\":\n    [{\"id\": \"String___Slice___Pos___next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.mk\":\n    [{\"id\": \"String___Slice___Pos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.isValidForSlice\":\n    [{\"id\": \"String___Slice___Pos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.get?\":\n    [{\"id\": \"String___Slice___Pos___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.get!\":\n    [{\"id\": \"String___Slice___Pos___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.get\":\n    [{\"id\": \"String___Slice___Pos___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.cast\":\n    [{\"id\": \"String___Slice___Pos___cast\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos.byte\":\n    [{\"id\": \"String___Slice___Pos___byte\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pos\":\n    [{\"id\": \"String___Slice___Pos___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ToForwardSearcher.toSearcher\":\n    [{\"id\": \"String___Slice___Pattern___ToForwardSearcher___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ToForwardSearcher.mk\":\n    [{\"id\": \"String___Slice___Pattern___ToForwardSearcher___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ToForwardSearcher\":\n    [{\"id\": \"String___Slice___Pattern___ToForwardSearcher___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ToBackwardSearcher.toSearcher\":\n    [{\"id\": \"String___Slice___Pattern___ToBackwardSearcher___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ToBackwardSearcher.mk\":\n    [{\"id\": \"String___Slice___Pattern___ToBackwardSearcher___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ToBackwardSearcher\":\n    [{\"id\": \"String___Slice___Pattern___ToBackwardSearcher___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ForwardPattern.startsWith\":\n    [{\"id\": \"String___Slice___Pattern___ForwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ForwardPattern.mk\":\n    [{\"id\": \"String___Slice___Pattern___ForwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ForwardPattern.dropPrefix?\":\n    [{\"id\": \"String___Slice___Pattern___ForwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.ForwardPattern\":\n    [{\"id\": \"String___Slice___Pattern___ForwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.BackwardPattern.mk\":\n    [{\"id\": \"String___Slice___Pattern___BackwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.BackwardPattern.endsWith\":\n    [{\"id\": \"String___Slice___Pattern___BackwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.BackwardPattern.dropSuffix?\":\n    [{\"id\": \"String___Slice___Pattern___BackwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice.Pattern.BackwardPattern\":\n    [{\"id\": \"String___Slice___Pattern___BackwardPattern___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Slice\":\n    [{\"id\": \"String___Slice___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.unoffsetBy\":\n    [{\"id\": \"String___Pos___Raw___unoffsetBy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.substrEq\":\n    [{\"id\": \"String___Pos___Raw___substrEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.set\":\n    [{\"id\": \"String___Pos___Raw___set\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.prev\":\n    [{\"id\": \"String___Pos___Raw___prev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.offsetBy\":\n    [{\"id\": \"String___Pos___Raw___offsetBy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.nextWhile\":\n    [{\"id\": \"String___Pos___Raw___nextWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.nextUntil\":\n    [{\"id\": \"String___Pos___Raw___nextUntil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.next'\":\n    [{\"id\": \"String___Pos___Raw___next___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.next\":\n    [{\"id\": \"String___Pos___Raw___next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.modify\":\n    [{\"id\": \"String___Pos___Raw___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.mk\":\n    [{\"id\": \"String___Pos___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.min\":\n    [{\"id\": \"String___Pos___Raw___min\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.isValidForSlice\":\n    [{\"id\": \"String___Pos___Raw___isValidForSlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.isValid\":\n    [{\"id\": \"String___Pos___Raw___isValid\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.increaseBy\":\n    [{\"id\": \"String___Pos___Raw___increaseBy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.inc\":\n    [{\"id\": \"String___Pos___Raw___inc\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.get?\":\n    [{\"id\": \"String___Pos___Raw___get___-next-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.get'\":\n    [{\"id\": \"String___Pos___Raw___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.get!\":\n    [{\"id\": \"String___Pos___Raw___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.get\":\n    [{\"id\": \"String___Pos___Raw___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.extract\":\n    [{\"id\": \"String___Pos___Raw___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.decreaseBy\":\n    [{\"id\": \"String___Pos___Raw___decreaseBy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.dec\":\n    [{\"id\": \"String___Pos___Raw___dec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.byteIdx\":\n    [{\"id\": \"String___Pos___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.byteDistance\":\n    [{\"id\": \"String___Pos___Raw___byteDistance\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw.atEnd\":\n    [{\"id\": \"String___Pos___Raw___atEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Pos.Raw\":\n    [{\"id\": \"String___Pos___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.mkIterator\":\n    [{\"id\": \"String___Legacy___mkIterator\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.iter\":\n    [{\"id\": \"String___Legacy___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.toString\":\n    [{\"id\": \"String___Legacy___Iterator___toString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.toEnd\":\n    [{\"id\": \"String___Legacy___Iterator___toEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.setCurr\":\n    [{\"id\": \"String___Legacy___Iterator___setCurr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.s\":\n    [{\"id\": \"String___Legacy___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.remainingToString\":\n    [{\"id\": \"String___Legacy___Iterator___remainingToString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.remainingBytes\":\n    [{\"id\": \"String___Legacy___Iterator___remainingBytes\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.prevn\":\n    [{\"id\": \"String___Legacy___Iterator___prevn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.prev\":\n    [{\"id\": \"String___Legacy___Iterator___prev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.pos\":\n    [{\"id\": \"String___Legacy___Iterator___pos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.nextn\":\n    [{\"id\": \"String___Legacy___Iterator___nextn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.next'\":\n    [{\"id\": \"String___Legacy___Iterator___next___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.next\":\n    [{\"id\": \"String___Legacy___Iterator___next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.mk\":\n    [{\"id\": \"String___Legacy___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.i\":\n    [{\"id\": \"String___Legacy___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.hasPrev\":\n    [{\"id\": \"String___Legacy___Iterator___hasPrev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.hasNext\":\n    [{\"id\": \"String___Legacy___Iterator___hasNext\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.forward\":\n    [{\"id\": \"String___Legacy___Iterator___forward\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.foldUntil\":\n    [{\"id\": \"String___Legacy___Iterator___foldUntil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.find\":\n    [{\"id\": \"String___Legacy___Iterator___find\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.extract\":\n    [{\"id\": \"String___Legacy___Iterator___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.curr'\":\n    [{\"id\": \"String___Legacy___Iterator___curr___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.curr\":\n    [{\"id\": \"String___Legacy___Iterator___curr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator.atEnd\":\n    [{\"id\": \"String___Legacy___Iterator___atEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String.Legacy.Iterator\":\n    [{\"id\": \"String___Legacy___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"String\":\n    [{\"id\": \"String___ofByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Strings/\"}],\n    \"StdGen\":\n    [{\"id\": \"StdGen\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"Std.TreeSet.toList\":\n    [{\"id\": \"Std___TreeSet___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.toArray\":\n    [{\"id\": \"Std___TreeSet___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.size\":\n    [{\"id\": \"Std___TreeSet___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.partition\":\n    [{\"id\": \"Std___TreeSet___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.ofList\":\n    [{\"id\": \"Std___TreeSet___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.ofArray\":\n    [{\"id\": \"Std___TreeSet___ofArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.minD\":\n    [{\"id\": \"Std___TreeSet___minD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.min?\":\n    [{\"id\": \"Std___TreeSet___min___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.min!\":\n    [{\"id\": \"Std___TreeSet___min___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.min\":\n    [{\"id\": \"Std___TreeSet___min\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.merge\":\n    [{\"id\": \"Std___TreeSet___merge\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.maxD\":\n    [{\"id\": \"Std___TreeSet___maxD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.max?\":\n    [{\"id\": \"Std___TreeSet___max___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.max!\":\n    [{\"id\": \"Std___TreeSet___max___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.max\":\n    [{\"id\": \"Std___TreeSet___max\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.iter\":\n    [{\"id\": \"Std___TreeSet___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.isEmpty\":\n    [{\"id\": \"Std___TreeSet___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.insertMany\":\n    [{\"id\": \"Std___TreeSet___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.insert\":\n    [{\"id\": \"Std___TreeSet___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLTD\":\n    [{\"id\": \"Std___TreeSet___getLTD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLT?\":\n    [{\"id\": \"Std___TreeSet___getLT___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLT!\":\n    [{\"id\": \"Std___TreeSet___getLT___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLT\":\n    [{\"id\": \"Std___TreeSet___getLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLED\":\n    [{\"id\": \"Std___TreeSet___getLED\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLE?\":\n    [{\"id\": \"Std___TreeSet___getLE___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLE!\":\n    [{\"id\": \"Std___TreeSet___getLE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getLE\":\n    [{\"id\": \"Std___TreeSet___getLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGTD\":\n    [{\"id\": \"Std___TreeSet___getGTD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGT?\":\n    [{\"id\": \"Std___TreeSet___getGT___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGT!\":\n    [{\"id\": \"Std___TreeSet___getGT___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGT\":\n    [{\"id\": \"Std___TreeSet___getGT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGED\":\n    [{\"id\": \"Std___TreeSet___getGED\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGE?\":\n    [{\"id\": \"Std___TreeSet___getGE___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGE!\":\n    [{\"id\": \"Std___TreeSet___getGE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getGE\":\n    [{\"id\": \"Std___TreeSet___getGE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.getD\":\n    [{\"id\": \"Std___TreeSet___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.get?\":\n    [{\"id\": \"Std___TreeSet___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.get!\":\n    [{\"id\": \"Std___TreeSet___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.get\":\n    [{\"id\": \"Std___TreeSet___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.forM\":\n    [{\"id\": \"Std___TreeSet___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.forIn\":\n    [{\"id\": \"Std___TreeSet___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.foldrM\":\n    [{\"id\": \"Std___TreeSet___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.foldr\":\n    [{\"id\": \"Std___TreeSet___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.foldlM\":\n    [{\"id\": \"Std___TreeSet___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.foldl\":\n    [{\"id\": \"Std___TreeSet___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.filter\":\n    [{\"id\": \"Std___TreeSet___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.eraseMany\":\n    [{\"id\": \"Std___TreeSet___eraseMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.erase\":\n    [{\"id\": \"Std___TreeSet___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.empty\":\n    [{\"id\": \"Std___TreeSet___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.containsThenInsert\":\n    [{\"id\": \"Std___TreeSet___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.contains\":\n    [{\"id\": \"Std___TreeSet___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.atIdxD\":\n    [{\"id\": \"Std___TreeSet___atIdxD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.atIdx?\":\n    [{\"id\": \"Std___TreeSet___atIdx___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.atIdx!\":\n    [{\"id\": \"Std___TreeSet___atIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.atIdx\":\n    [{\"id\": \"Std___TreeSet___atIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.any\":\n    [{\"id\": \"Std___TreeSet___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.all\":\n    [{\"id\": \"Std___TreeSet___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.Raw.mk\":\n    [{\"id\": \"Std___TreeSet___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.Raw.inner\":\n    [{\"id\": \"Std___TreeSet___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.Raw.WF.out\":\n    [{\"id\": \"Std___TreeSet___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.Raw.WF.mk\":\n    [{\"id\": \"Std___TreeSet___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.Raw.WF\":\n    [{\"id\": \"Std___TreeSet___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet.Raw\":\n    [{\"id\": \"Std___TreeSet___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeSet\":\n    [{\"id\": \"Std___TreeSet\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.valuesIter\":\n    [{\"id\": \"Std___TreeMap___valuesIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.valuesArray\":\n    [{\"id\": \"Std___TreeMap___valuesArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.values\":\n    [{\"id\": \"Std___TreeMap___values\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.unitOfList\":\n    [{\"id\": \"Std___TreeMap___unitOfList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.unitOfArray\":\n    [{\"id\": \"Std___TreeMap___unitOfArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.toList\":\n    [{\"id\": \"Std___TreeMap___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.toArray\":\n    [{\"id\": \"Std___TreeMap___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.size\":\n    [{\"id\": \"Std___TreeMap___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.partition\":\n    [{\"id\": \"Std___TreeMap___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.ofList\":\n    [{\"id\": \"Std___TreeMap___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.ofArray\":\n    [{\"id\": \"Std___TreeMap___ofArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.modify\":\n    [{\"id\": \"Std___TreeMap___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minKeyD\":\n    [{\"id\": \"Std___TreeMap___minKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minKey?\":\n    [{\"id\": \"Std___TreeMap___minKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minKey!\":\n    [{\"id\": \"Std___TreeMap___minKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minKey\":\n    [{\"id\": \"Std___TreeMap___minKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minEntryD\":\n    [{\"id\": \"Std___TreeMap___minEntryD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minEntry?\":\n    [{\"id\": \"Std___TreeMap___minEntry___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minEntry!\":\n    [{\"id\": \"Std___TreeMap___minEntry___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.minEntry\":\n    [{\"id\": \"Std___TreeMap___minEntry\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.mergeWith\":\n    [{\"id\": \"Std___TreeMap___mergeWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxKeyD\":\n    [{\"id\": \"Std___TreeMap___maxKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxKey?\":\n    [{\"id\": \"Std___TreeMap___maxKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxKey!\":\n    [{\"id\": \"Std___TreeMap___maxKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxKey\":\n    [{\"id\": \"Std___TreeMap___maxKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxEntryD\":\n    [{\"id\": \"Std___TreeMap___maxEntryD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxEntry?\":\n    [{\"id\": \"Std___TreeMap___maxEntry___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxEntry!\":\n    [{\"id\": \"Std___TreeMap___maxEntry___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.maxEntry\":\n    [{\"id\": \"Std___TreeMap___maxEntry\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.map\":\n    [{\"id\": \"Std___TreeMap___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keysIter\":\n    [{\"id\": \"Std___TreeMap___keysIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keysArray\":\n    [{\"id\": \"Std___TreeMap___keysArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keys\":\n    [{\"id\": \"Std___TreeMap___keys\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keyAtIdxD\":\n    [{\"id\": \"Std___TreeMap___keyAtIdxD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keyAtIdx?\":\n    [{\"id\": \"Std___TreeMap___keyAtIdx___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keyAtIdx!\":\n    [{\"id\": \"Std___TreeMap___keyAtIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.keyAtIdx\":\n    [{\"id\": \"Std___TreeMap___keyAtIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.iter\":\n    [{\"id\": \"Std___TreeMap___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.isEmpty\":\n    [{\"id\": \"Std___TreeMap___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.insertManyIfNewUnit\":\n    [{\"id\": \"Std___TreeMap___insertManyIfNewUnit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.insertMany\":\n    [{\"id\": \"Std___TreeMap___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.insertIfNew\":\n    [{\"id\": \"Std___TreeMap___insertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.insert\":\n    [{\"id\": \"Std___TreeMap___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getThenInsertIfNew?\":\n    [{\"id\": \"Std___TreeMap___getThenInsertIfNew___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLTD\":\n    [{\"id\": \"Std___TreeMap___getKeyLTD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLT?\":\n    [{\"id\": \"Std___TreeMap___getKeyLT___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLT!\":\n    [{\"id\": \"Std___TreeMap___getKeyLT___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLT\":\n    [{\"id\": \"Std___TreeMap___getKeyLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLED\":\n    [{\"id\": \"Std___TreeMap___getKeyLED\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLE?\":\n    [{\"id\": \"Std___TreeMap___getKeyLE___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLE!\":\n    [{\"id\": \"Std___TreeMap___getKeyLE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyLE\":\n    [{\"id\": \"Std___TreeMap___getKeyLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGTD\":\n    [{\"id\": \"Std___TreeMap___getKeyGTD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGT?\":\n    [{\"id\": \"Std___TreeMap___getKeyGT___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGT!\":\n    [{\"id\": \"Std___TreeMap___getKeyGT___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGT\":\n    [{\"id\": \"Std___TreeMap___getKeyGT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGED\":\n    [{\"id\": \"Std___TreeMap___getKeyGED\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGE?\":\n    [{\"id\": \"Std___TreeMap___getKeyGE___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGE!\":\n    [{\"id\": \"Std___TreeMap___getKeyGE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyGE\":\n    [{\"id\": \"Std___TreeMap___getKeyGE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKeyD\":\n    [{\"id\": \"Std___TreeMap___getKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKey?\":\n    [{\"id\": \"Std___TreeMap___getKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKey!\":\n    [{\"id\": \"Std___TreeMap___getKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getKey\":\n    [{\"id\": \"Std___TreeMap___getKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLTD\":\n    [{\"id\": \"Std___TreeMap___getEntryLTD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLT?\":\n    [{\"id\": \"Std___TreeMap___getEntryLT___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLT!\":\n    [{\"id\": \"Std___TreeMap___getEntryLT___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLT\":\n    [{\"id\": \"Std___TreeMap___getEntryLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLED\":\n    [{\"id\": \"Std___TreeMap___getEntryLED\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLE?\":\n    [{\"id\": \"Std___TreeMap___getEntryLE___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLE!\":\n    [{\"id\": \"Std___TreeMap___getEntryLE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryLE\":\n    [{\"id\": \"Std___TreeMap___getEntryLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGTD\":\n    [{\"id\": \"Std___TreeMap___getEntryGTD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGT?\":\n    [{\"id\": \"Std___TreeMap___getEntryGT___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGT!\":\n    [{\"id\": \"Std___TreeMap___getEntryGT___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGT\":\n    [{\"id\": \"Std___TreeMap___getEntryGT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGED\":\n    [{\"id\": \"Std___TreeMap___getEntryGED\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGE?\":\n    [{\"id\": \"Std___TreeMap___getEntryGE___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGE!\":\n    [{\"id\": \"Std___TreeMap___getEntryGE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getEntryGE\":\n    [{\"id\": \"Std___TreeMap___getEntryGE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.getD\":\n    [{\"id\": \"Std___TreeMap___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.get?\":\n    [{\"id\": \"Std___TreeMap___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.get!\":\n    [{\"id\": \"Std___TreeMap___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.get\":\n    [{\"id\": \"Std___TreeMap___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.forM\":\n    [{\"id\": \"Std___TreeMap___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.forIn\":\n    [{\"id\": \"Std___TreeMap___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.foldrM\":\n    [{\"id\": \"Std___TreeMap___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.foldr\":\n    [{\"id\": \"Std___TreeMap___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.foldlM\":\n    [{\"id\": \"Std___TreeMap___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.foldl\":\n    [{\"id\": \"Std___TreeMap___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.filterMap\":\n    [{\"id\": \"Std___TreeMap___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.filter\":\n    [{\"id\": \"Std___TreeMap___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.eraseMany\":\n    [{\"id\": \"Std___TreeMap___eraseMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.erase\":\n    [{\"id\": \"Std___TreeMap___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.entryAtIdxD\":\n    [{\"id\": \"Std___TreeMap___entryAtIdxD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.entryAtIdx?\":\n    [{\"id\": \"Std___TreeMap___entryAtIdx___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.entryAtIdx!\":\n    [{\"id\": \"Std___TreeMap___entryAtIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.entryAtIdx\":\n    [{\"id\": \"Std___TreeMap___entryAtIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.empty\":\n    [{\"id\": \"Std___TreeMap___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.containsThenInsertIfNew\":\n    [{\"id\": \"Std___TreeMap___containsThenInsertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.containsThenInsert\":\n    [{\"id\": \"Std___TreeMap___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.contains\":\n    [{\"id\": \"Std___TreeMap___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.any\":\n    [{\"id\": \"Std___TreeMap___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.alter\":\n    [{\"id\": \"Std___TreeMap___alter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.all\":\n    [{\"id\": \"Std___TreeMap___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.Raw.mk\":\n    [{\"id\": \"Std___TreeMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.Raw.inner\":\n    [{\"id\": \"Std___TreeMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.Raw.WF.out\":\n    [{\"id\": \"Std___TreeMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.Raw.WF.mk\":\n    [{\"id\": \"Std___TreeMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.Raw.WF\":\n    [{\"id\": \"Std___TreeMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap.Raw\":\n    [{\"id\": \"Std___TreeMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.TreeMap\":\n    [{\"id\": \"Std___TreeMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ToFormat.mk\":\n    [{\"id\": \"Std___ToFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.ToFormat.format\":\n    [{\"id\": \"Std___ToFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.ToFormat\":\n    [{\"id\": \"Std___ToFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Shrink.inflate\":\n    [{\"id\": \"Std___Shrink___inflate\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Shrink.deflate\":\n    [{\"id\": \"Std___Shrink___deflate\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Shrink\":\n    [{\"id\": \"Std___Shrink\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Rxi.IsAlwaysFinite.mk\":\n    [{\"id\": \"Std___Rxi___IsAlwaysFinite___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxi.IsAlwaysFinite.finite\":\n    [{\"id\": \"Std___Rxi___IsAlwaysFinite___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxi.IsAlwaysFinite\":\n    [{\"id\": \"Std___Rxi___IsAlwaysFinite___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxi.HasSize.size\":\n    [{\"id\": \"Std___Rxi___HasSize___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxi.HasSize.mk\":\n    [{\"id\": \"Std___Rxi___HasSize___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxi.HasSize\":\n    [{\"id\": \"Std___Rxi___HasSize___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxc.IsAlwaysFinite.mk\":\n    [{\"id\": \"Std___Rxc___IsAlwaysFinite___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxc.IsAlwaysFinite.finite\":\n    [{\"id\": \"Std___Rxc___IsAlwaysFinite___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxc.IsAlwaysFinite\":\n    [{\"id\": \"Std___Rxc___IsAlwaysFinite___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxc.HasSize.size\":\n    [{\"id\": \"Std___Rxc___HasSize___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxc.HasSize.mk\":\n    [{\"id\": \"Std___Rxc___HasSize___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rxc.HasSize\":\n    [{\"id\": \"Std___Rxc___HasSize___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.upper\":\n    [{\"id\": \"Std___Roo___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.toList\":\n    [{\"id\": \"Std___Roo___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.toArray\":\n    [{\"id\": \"Std___Roo___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.size\":\n    [{\"id\": \"Std___Roo___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.mk\":\n    [{\"id\": \"Std___Roo___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.lower\":\n    [{\"id\": \"Std___Roo___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.iter\":\n    [{\"id\": \"Std___Roo___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.isEmpty\":\n    [{\"id\": \"Std___Roo___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Roo___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.Sliceable.mk\":\n    [{\"id\": \"Std___Roo___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo.Sliceable\":\n    [{\"id\": \"Std___Roo___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roo\":\n    [{\"id\": \"Std___Roo___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.toList\":\n    [{\"id\": \"Std___Roi___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.toArray\":\n    [{\"id\": \"Std___Roi___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.size\":\n    [{\"id\": \"Std___Roi___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.mk\":\n    [{\"id\": \"Std___Roi___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.lower\":\n    [{\"id\": \"Std___Roi___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.iter\":\n    [{\"id\": \"Std___Roi___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.isEmpty\":\n    [{\"id\": \"Std___Roi___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Roi___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.Sliceable.mk\":\n    [{\"id\": \"Std___Roi___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi.Sliceable\":\n    [{\"id\": \"Std___Roi___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roi\":\n    [{\"id\": \"Std___Roi___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.upper\":\n    [{\"id\": \"Std___Roc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.toList\":\n    [{\"id\": \"Std___Roc___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.toArray\":\n    [{\"id\": \"Std___Roc___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.size\":\n    [{\"id\": \"Std___Roc___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.mk\":\n    [{\"id\": \"Std___Roc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.lower\":\n    [{\"id\": \"Std___Roc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.iter\":\n    [{\"id\": \"Std___Roc___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.isEmpty\":\n    [{\"id\": \"Std___Roc___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Roc___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.Sliceable.mk\":\n    [{\"id\": \"Std___Roc___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc.Sliceable\":\n    [{\"id\": \"Std___Roc___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Roc\":\n    [{\"id\": \"Std___Roc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.upper\":\n    [{\"id\": \"Std___Rio___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.toList\":\n    [{\"id\": \"Std___Rio___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.toArray\":\n    [{\"id\": \"Std___Rio___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.size\":\n    [{\"id\": \"Std___Rio___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.mk\":\n    [{\"id\": \"Std___Rio___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.iter\":\n    [{\"id\": \"Std___Rio___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.isEmpty\":\n    [{\"id\": \"Std___Rio___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Rio___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.Sliceable.mk\":\n    [{\"id\": \"Std___Rio___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio.Sliceable\":\n    [{\"id\": \"Std___Rio___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rio\":\n    [{\"id\": \"Std___Rio___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.toList\":\n    [{\"id\": \"Std___Rii___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.toArray\":\n    [{\"id\": \"Std___Rii___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.size\":\n    [{\"id\": \"Std___Rii___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.mk\":\n    [{\"id\": \"Std___Rii___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.iter\":\n    [{\"id\": \"Std___Rii___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.isEmpty\":\n    [{\"id\": \"Std___Rii___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Rii___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.Sliceable.mk\":\n    [{\"id\": \"Std___Rii___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii.Sliceable\":\n    [{\"id\": \"Std___Rii___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rii\":\n    [{\"id\": \"Std___Rii___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.upper\":\n    [{\"id\": \"Std___Ric___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.toList\":\n    [{\"id\": \"Std___Ric___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.toArray\":\n    [{\"id\": \"Std___Ric___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.size\":\n    [{\"id\": \"Std___Ric___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.mk\":\n    [{\"id\": \"Std___Ric___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.iter\":\n    [{\"id\": \"Std___Ric___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.isEmpty\":\n    [{\"id\": \"Std___Ric___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Ric___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.Sliceable.mk\":\n    [{\"id\": \"Std___Ric___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric.Sliceable\":\n    [{\"id\": \"Std___Ric___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Ric\":\n    [{\"id\": \"Std___Ric___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.upper\":\n    [{\"id\": \"Std___Rco___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.toList\":\n    [{\"id\": \"Std___Rco___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.toArray\":\n    [{\"id\": \"Std___Rco___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.size\":\n    [{\"id\": \"Std___Rco___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.mk\":\n    [{\"id\": \"Std___Rco___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.lower\":\n    [{\"id\": \"Std___Rco___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.iter\":\n    [{\"id\": \"Std___Rco___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.isEmpty\":\n    [{\"id\": \"Std___Rco___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Rco___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.Sliceable.mk\":\n    [{\"id\": \"Std___Rco___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco.Sliceable\":\n    [{\"id\": \"Std___Rco___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rco\":\n    [{\"id\": \"Std___Rco___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.toList\":\n    [{\"id\": \"Std___Rci___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.toArray\":\n    [{\"id\": \"Std___Rci___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.size\":\n    [{\"id\": \"Std___Rci___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.mk\":\n    [{\"id\": \"Std___Rci___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.lower\":\n    [{\"id\": \"Std___Rci___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.iter\":\n    [{\"id\": \"Std___Rci___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.isEmpty\":\n    [{\"id\": \"Std___Rci___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Rci___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.Sliceable.mk\":\n    [{\"id\": \"Std___Rci___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci.Sliceable\":\n    [{\"id\": \"Std___Rci___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rci\":\n    [{\"id\": \"Std___Rci___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.upper\":\n    [{\"id\": \"Std___Rcc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.toList\":\n    [{\"id\": \"Std___Rcc___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.toArray\":\n    [{\"id\": \"Std___Rcc___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.size\":\n    [{\"id\": \"Std___Rcc___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.mk\":\n    [{\"id\": \"Std___Rcc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.lower\":\n    [{\"id\": \"Std___Rcc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.iter\":\n    [{\"id\": \"Std___Rcc___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.isEmpty\":\n    [{\"id\": \"Std___Rcc___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.Sliceable.mkSlice\":\n    [{\"id\": \"Std___Rcc___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.Sliceable.mk\":\n    [{\"id\": \"Std___Rcc___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc.Sliceable\":\n    [{\"id\": \"Std___Rcc___Sliceable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Rcc\":\n    [{\"id\": \"Std___Rcc___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.UpwardEnumerable.succMany?\":\n    [{\"id\": \"Std___PRange___UpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.UpwardEnumerable.succ?\":\n    [{\"id\": \"Std___PRange___UpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.UpwardEnumerable.mk\":\n    [{\"id\": \"Std___PRange___UpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.UpwardEnumerable.LT\":\n    [{\"id\": \"Std___PRange___UpwardEnumerable___LT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.UpwardEnumerable.LE\":\n    [{\"id\": \"Std___PRange___UpwardEnumerable___LE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.UpwardEnumerable\":\n    [{\"id\": \"Std___PRange___UpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LinearlyUpwardEnumerable.mk\":\n    [{\"id\": \"Std___PRange___LinearlyUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LinearlyUpwardEnumerable.eq_of_succ?_eq\":\n    [{\"id\": \"Std___PRange___LinearlyUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LinearlyUpwardEnumerable\":\n    [{\"id\": \"Std___PRange___LinearlyUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.Least?.mk\":\n    [{\"id\": \"Std___PRange___Least______mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.Least?.least?\":\n    [{\"id\": \"Std___PRange___Least______mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.Least?\":\n    [{\"id\": \"Std___PRange___Least______mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LawfulUpwardEnumerable.succMany?_zero\":\n    [{\"id\": \"Std___PRange___LawfulUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LawfulUpwardEnumerable.succMany?_add_one\":\n    [{\"id\": \"Std___PRange___LawfulUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LawfulUpwardEnumerable.ne_of_lt\":\n    [{\"id\": \"Std___PRange___LawfulUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LawfulUpwardEnumerable.mk\":\n    [{\"id\": \"Std___PRange___LawfulUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.LawfulUpwardEnumerable\":\n    [{\"id\": \"Std___PRange___LawfulUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.InfinitelyUpwardEnumerable.mk\":\n    [{\"id\": \"Std___PRange___InfinitelyUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.InfinitelyUpwardEnumerable.isSome_succ?\":\n    [{\"id\": \"Std___PRange___InfinitelyUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.PRange.InfinitelyUpwardEnumerable\":\n    [{\"id\": \"Std___PRange___InfinitelyUpwardEnumerable___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Mutex.new\":\n    [{\"id\": \"Std___Mutex___new\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Mutex.atomicallyOnce\":\n    [{\"id\": \"Std___Mutex___atomicallyOnce\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Mutex.atomically\":\n    [{\"id\": \"Std___Mutex___atomically\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Mutex\":\n    [{\"id\": \"Std___Mutex\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Iterators.toIterM\":\n    [{\"id\": \"Std___Iterators___toIterM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Productive.wf\":\n    [{\"id\": \"Std___Iterators___Productive___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Productive.mk\":\n    [{\"id\": \"Std___Iterators___Productive___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Productive\":\n    [{\"id\": \"Std___Iterators___Productive___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.PostconditionT.run\":\n    [{\"id\": \"Std___Iterators___PostconditionT___run\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PostconditionT.operation\":\n    [{\"id\": \"Std___Iterators___PostconditionT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PostconditionT.mk\":\n    [{\"id\": \"Std___Iterators___PostconditionT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PostconditionT.liftWithProperty\":\n    [{\"id\": \"Std___Iterators___PostconditionT___liftWithProperty\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PostconditionT.lift\":\n    [{\"id\": \"Std___Iterators___PostconditionT___lift\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PostconditionT.Property\":\n    [{\"id\": \"Std___Iterators___PostconditionT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PostconditionT\":\n    [{\"id\": \"Std___Iterators___PostconditionT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.PlausibleIterStep.yield\":\n    [{\"id\": \"Std___Iterators___PlausibleIterStep___yield\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.PlausibleIterStep.skip\":\n    [{\"id\": \"Std___Iterators___PlausibleIterStep___skip\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.PlausibleIterStep.done\":\n    [{\"id\": \"Std___Iterators___PlausibleIterStep___done\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.PlausibleIterStep\":\n    [{\"id\": \"Std___Iterators___PlausibleIterStep\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.LawfulIteratorLoop.mk\":\n    [{\"id\": \"Std___Iterators___LawfulIteratorLoop___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.LawfulIteratorLoop.lawful\":\n    [{\"id\": \"Std___Iterators___LawfulIteratorLoop___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.LawfulIteratorLoop\":\n    [{\"id\": \"Std___Iterators___LawfulIteratorLoop___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.LawfulIteratorCollect.mk\":\n    [{\"id\": \"Std___Iterators___LawfulIteratorCollect___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.LawfulIteratorCollect.lawful_toArrayMapped\":\n    [{\"id\": \"Std___Iterators___LawfulIteratorCollect___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.LawfulIteratorCollect\":\n    [{\"id\": \"Std___Iterators___LawfulIteratorCollect___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorLoopPartial.mk\":\n    [{\"id\": \"Std___Iterators___IteratorLoopPartial___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoopPartial.forInPartial\":\n    [{\"id\": \"Std___Iterators___IteratorLoopPartial___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoopPartial.defaultImplementation\":\n    [{\"id\": \"Std___Iterators___IteratorLoopPartial___defaultImplementation\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoopPartial\":\n    [{\"id\": \"Std___Iterators___IteratorLoopPartial___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoop.mk\":\n    [{\"id\": \"Std___Iterators___IteratorLoop___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoop.forIn\":\n    [{\"id\": \"Std___Iterators___IteratorLoop___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoop.defaultImplementation\":\n    [{\"id\": \"Std___Iterators___IteratorLoop___defaultImplementation\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorLoop\":\n    [{\"id\": \"Std___Iterators___IteratorLoop___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorCollectPartial.toArrayMappedPartial\":\n    [{\"id\": \"Std___Iterators___IteratorCollectPartial___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollectPartial.mk\":\n    [{\"id\": \"Std___Iterators___IteratorCollectPartial___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollectPartial.defaultImplementation\":\n    [{\"id\":\n      \"Std___Iterators___IteratorCollectPartial___defaultImplementation\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollectPartial\":\n    [{\"id\": \"Std___Iterators___IteratorCollectPartial___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollect.toArrayMapped\":\n    [{\"id\": \"Std___Iterators___IteratorCollect___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollect.mk\":\n    [{\"id\": \"Std___Iterators___IteratorCollect___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollect.defaultImplementation\":\n    [{\"id\": \"Std___Iterators___IteratorCollect___defaultImplementation\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorCollect\":\n    [{\"id\": \"Std___Iterators___IteratorCollect___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IteratorAccess.nextAtIdx?\":\n    [{\"id\": \"Std___Iterators___IteratorAccess___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorAccess.mk\":\n    [{\"id\": \"Std___Iterators___IteratorAccess___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IteratorAccess\":\n    [{\"id\": \"Std___Iterators___IteratorAccess___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iterator.step\":\n    [{\"id\": \"Std___Iterators___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iterator.mk\":\n    [{\"id\": \"Std___Iterators___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iterator.IsPlausibleStep\":\n    [{\"id\": \"Std___Iterators___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iterator\":\n    [{\"id\": \"Std___Iterators___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterStep.yield\":\n    [{\"id\": \"Std___Iterators___IterStep___yield\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterStep.skip\":\n    [{\"id\": \"Std___Iterators___IterStep___yield\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterStep.done\":\n    [{\"id\": \"Std___Iterators___IterStep___yield\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterStep\":\n    [{\"id\": \"Std___Iterators___IterStep___yield\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.zip\":\n    [{\"id\": \"Std___Iterators___IterM___zip\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.uLift\":\n    [{\"id\": \"Std___Iterators___IterM___uLift\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.toTake\":\n    [{\"id\": \"Std___Iterators___IterM___toTake\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.toListRev\":\n    [{\"id\": \"Std___Iterators___IterM___toListRev\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.toList\":\n    [{\"id\": \"Std___Iterators___IterM___toList\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.toIter\":\n    [{\"id\": \"Std___Iterators___IterM___toIter\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.toArray\":\n    [{\"id\": \"Std___Iterators___IterM___toArray\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.takeWhileWithPostcondition\":\n    [{\"id\": \"Std___Iterators___IterM___takeWhileWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.takeWhileM\":\n    [{\"id\": \"Std___Iterators___IterM___takeWhileM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.takeWhile\":\n    [{\"id\": \"Std___Iterators___IterM___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.take\":\n    [{\"id\": \"Std___Iterators___IterM___take\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.stepSize\":\n    [{\"id\": \"Std___Iterators___IterM___stepSize\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.stepAsHetT\":\n    [{\"id\": \"Std___Iterators___IterM___stepAsHetT\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.IterM.step\":\n    [{\"id\": \"Std___Iterators___IterM___step\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.nextAtIdx?\":\n    [{\"id\": \"Std___Iterators___IterM___nextAtIdx___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.mk\":\n    [{\"id\": \"Std___Iterators___IterM___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.mapWithPostcondition\":\n    [{\"id\": \"Std___Iterators___IterM___mapWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.mapM\":\n    [{\"id\": \"Std___Iterators___IterM___mapM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.map\":\n    [{\"id\": \"Std___Iterators___IterM___map\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.internalState\":\n    [{\"id\": \"Std___Iterators___IterM___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.inductSteps\":\n    [{\"id\": \"Std___Iterators___IterM___inductSteps\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.IterM.inductSkips\":\n    [{\"id\": \"Std___Iterators___IterM___inductSkips\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.IterM.foldM\":\n    [{\"id\": \"Std___Iterators___IterM___foldM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.fold\":\n    [{\"id\": \"Std___Iterators___IterM___fold\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.flatMapM\":\n    [{\"id\": \"Std___Iterators___IterM___flatMapM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.flatMapAfterM\":\n    [{\"id\": \"Std___Iterators___IterM___flatMapAfterM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.flatMapAfter\":\n    [{\"id\": \"Std___Iterators___IterM___flatMapAfter\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.flatMap\":\n    [{\"id\": \"Std___Iterators___IterM___flatMap\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.finitelyManySteps\":\n    [{\"id\": \"Std___Iterators___IterM___finitelyManySteps\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.finitelyManySkips\":\n    [{\"id\": \"Std___Iterators___IterM___finitelyManySkips\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.findSomeM?\":\n    [{\"id\": \"Std___Iterators___IterM___findSomeM___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.findSome?\":\n    [{\"id\": \"Std___Iterators___IterM___findSome___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.findM?\":\n    [{\"id\": \"Std___Iterators___IterM___findM___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.find?\":\n    [{\"id\": \"Std___Iterators___IterM___find___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.filterWithPostcondition\":\n    [{\"id\": \"Std___Iterators___IterM___filterWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.filterMapWithPostcondition\":\n    [{\"id\": \"Std___Iterators___IterM___filterMapWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.filterMapM\":\n    [{\"id\": \"Std___Iterators___IterM___filterMapM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.filterMap\":\n    [{\"id\": \"Std___Iterators___IterM___filterMap\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.filterM\":\n    [{\"id\": \"Std___Iterators___IterM___filterM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.filter\":\n    [{\"id\": \"Std___Iterators___IterM___filter\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.empty\":\n    [{\"id\": \"Std___Iterators___IterM___empty\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.dropWhileWithPostcondition\":\n    [{\"id\": \"Std___Iterators___IterM___dropWhileWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.dropWhileM\":\n    [{\"id\": \"Std___Iterators___IterM___dropWhileM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.dropWhile\":\n    [{\"id\": \"Std___Iterators___IterM___dropWhile\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.drop\":\n    [{\"id\": \"Std___Iterators___IterM___drop\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.drain\":\n    [{\"id\": \"Std___Iterators___IterM___drain\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.count\":\n    [{\"id\": \"Std___Iterators___IterM___count\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.attachWith\":\n    [{\"id\": \"Std___Iterators___IterM___attachWith\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.IterM.atIdx?\":\n    [{\"id\": \"Std___Iterators___IterM___atIdx___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.anyM\":\n    [{\"id\": \"Std___Iterators___IterM___anyM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.any\":\n    [{\"id\": \"Std___Iterators___IterM___any\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.allowNontermination\":\n    [{\"id\": \"Std___Iterators___IterM___allowNontermination\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.allM\":\n    [{\"id\": \"Std___Iterators___IterM___allM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.all\":\n    [{\"id\": \"Std___Iterators___IterM___all\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.TerminationMeasures.Productive.mk\":\n    [{\"id\": \"Std___Iterators___IterM___TerminationMeasures___Productive___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.TerminationMeasures.Productive.it\":\n    [{\"id\": \"Std___Iterators___IterM___TerminationMeasures___Productive___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.TerminationMeasures.Productive\":\n    [{\"id\": \"Std___Iterators___IterM___TerminationMeasures___Productive___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.TerminationMeasures.Finite.mk\":\n    [{\"id\": \"Std___Iterators___IterM___TerminationMeasures___Finite___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.TerminationMeasures.Finite.it\":\n    [{\"id\": \"Std___Iterators___IterM___TerminationMeasures___Finite___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.TerminationMeasures.Finite\":\n    [{\"id\": \"Std___Iterators___IterM___TerminationMeasures___Finite___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.IterM.Step\":\n    [{\"id\": \"Std___Iterators___IterM___Step\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.IterM.Equiv\":\n    [{\"id\": \"Std___Iterators___IterM___Equiv\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.IterM\":\n    [{\"id\": \"Std___Iterators___IterM___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.zip\":\n    [{\"id\": \"Std___Iterators___Iter___zip\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.uLift\":\n    [{\"id\": \"Std___Iterators___Iter___uLift\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.toTake\":\n    [{\"id\": \"Std___Iterators___Iter___toTake\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.toListRev\":\n    [{\"id\": \"Std___Iterators___Iter___toListRev\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.toList\":\n    [{\"id\": \"Std___Iterators___Iter___toList\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.toIterM\":\n    [{\"id\": \"Std___Iterators___Iter___toIterM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.toArray\":\n    [{\"id\": \"Std___Iterators___Iter___toArray\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.takeWhile\":\n    [{\"id\": \"Std___Iterators___Iter___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.take\":\n    [{\"id\": \"Std___Iterators___Iter___take\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.stepSize\":\n    [{\"id\": \"Std___Iterators___Iter___stepSize\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.step\":\n    [{\"id\": \"Std___Iterators___Iter___step\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.repeat\":\n    [{\"id\": \"Std___Iterators___Iter___repeat\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.mk\":\n    [{\"id\": \"Std___Iterators___Iter___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.mapWithPostcondition\":\n    [{\"id\": \"Std___Iterators___Iter___mapWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.mapM\":\n    [{\"id\": \"Std___Iterators___Iter___mapM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.map\":\n    [{\"id\": \"Std___Iterators___Iter___map\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.internalState\":\n    [{\"id\": \"Std___Iterators___Iter___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.inductSteps\":\n    [{\"id\": \"Std___Iterators___Iter___inductSteps\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Iter.inductSkips\":\n    [{\"id\": \"Std___Iterators___Iter___inductSkips\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Iter.foldM\":\n    [{\"id\": \"Std___Iterators___Iter___foldM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.fold\":\n    [{\"id\": \"Std___Iterators___Iter___fold\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.flatMapM\":\n    [{\"id\": \"Std___Iterators___Iter___flatMapM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.flatMapAfterM\":\n    [{\"id\": \"Std___Iterators___Iter___flatMapAfterM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.flatMapAfter\":\n    [{\"id\": \"Std___Iterators___Iter___flatMapAfter\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.flatMap\":\n    [{\"id\": \"Std___Iterators___Iter___flatMap\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.finitelyManySteps\":\n    [{\"id\": \"Std___Iterators___Iter___finitelyManySteps\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.finitelyManySkips\":\n    [{\"id\": \"Std___Iterators___Iter___finitelyManySkips\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.findSomeM?\":\n    [{\"id\": \"Std___Iterators___Iter___findSomeM___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.findSome?\":\n    [{\"id\": \"Std___Iterators___Iter___findSome___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.findM?\":\n    [{\"id\": \"Std___Iterators___Iter___findM___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.find?\":\n    [{\"id\": \"Std___Iterators___Iter___find___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.filterWithPostcondition\":\n    [{\"id\": \"Std___Iterators___Iter___filterWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.filterMapWithPostcondition\":\n    [{\"id\": \"Std___Iterators___Iter___filterMapWithPostcondition\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.filterMapM\":\n    [{\"id\": \"Std___Iterators___Iter___filterMapM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.filterMap\":\n    [{\"id\": \"Std___Iterators___Iter___filterMap\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.filterM\":\n    [{\"id\": \"Std___Iterators___Iter___filterM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.filter\":\n    [{\"id\": \"Std___Iterators___Iter___filter\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.empty\":\n    [{\"id\": \"Std___Iterators___Iter___empty\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.dropWhile\":\n    [{\"id\": \"Std___Iterators___Iter___dropWhile\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.drop\":\n    [{\"id\": \"Std___Iterators___Iter___drop\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.count\":\n    [{\"id\": \"Std___Iterators___Iter___count\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.attachWith\":\n    [{\"id\": \"Std___Iterators___Iter___attachWith\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Combinators/\"}],\n    \"Std.Iterators.Iter.atIdxSlow?\":\n    [{\"id\": \"Std___Iterators___Iter___atIdxSlow___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.atIdx?\":\n    [{\"id\": \"Std___Iterators___Iter___atIdx___\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.anyM\":\n    [{\"id\": \"Std___Iterators___Iter___anyM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.any\":\n    [{\"id\": \"Std___Iterators___Iter___any\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.allowNontermination\":\n    [{\"id\": \"Std___Iterators___Iter___allowNontermination\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.allM\":\n    [{\"id\": \"Std___Iterators___Iter___allM\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.all\":\n    [{\"id\": \"Std___Iterators___Iter___all\",\n      \"data\": null,\n      \"address\": \"/Iterators/Consuming-Iterators/\"}],\n    \"Std.Iterators.Iter.Step\":\n    [{\"id\": \"Std___Iterators___Iter___Step\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Iter.IsPlausibleIndirectOutput.indirect\":\n    [{\"id\": \"Std___Iterators___Iter___IsPlausibleIndirectOutput___direct\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Iter.IsPlausibleIndirectOutput.direct\":\n    [{\"id\": \"Std___Iterators___Iter___IsPlausibleIndirectOutput___direct\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Iter.IsPlausibleIndirectOutput\":\n    [{\"id\": \"Std___Iterators___Iter___IsPlausibleIndirectOutput___direct\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Iter.Equiv\":\n    [{\"id\": \"Std___Iterators___Iter___Equiv\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Iter\":\n    [{\"id\": \"Std___Iterators___Iter___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.HetT.small\":\n    [{\"id\": \"Std___Iterators___HetT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.pure\":\n    [{\"id\": \"Std___Iterators___HetT___pure\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.prun\":\n    [{\"id\": \"Std___Iterators___HetT___prun\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.pmap\":\n    [{\"id\": \"Std___Iterators___HetT___pmap\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.pbind\":\n    [{\"id\": \"Std___Iterators___HetT___pbind\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.operation\":\n    [{\"id\": \"Std___Iterators___HetT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.mk\":\n    [{\"id\": \"Std___Iterators___HetT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.map\":\n    [{\"id\": \"Std___Iterators___HetT___map\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.lift\":\n    [{\"id\": \"Std___Iterators___HetT___lift\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.bind\":\n    [{\"id\": \"Std___Iterators___HetT___bind\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT.Property\":\n    [{\"id\": \"Std___Iterators___HetT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.HetT\":\n    [{\"id\": \"Std___Iterators___HetT___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Reasoning-About-Iterators/\"}],\n    \"Std.Iterators.Finite.wf\":\n    [{\"id\": \"Std___Iterators___Finite___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Finite.mk\":\n    [{\"id\": \"Std___Iterators___Finite___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.Iterators.Finite\":\n    [{\"id\": \"Std___Iterators___Finite___mk\",\n      \"data\": null,\n      \"address\": \"/Iterators/Iterator-Definitions/\"}],\n    \"Std.HashSet.union\":\n    [{\"id\": \"Std___HashSet___union\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.toList\":\n    [{\"id\": \"Std___HashSet___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.toArray\":\n    [{\"id\": \"Std___HashSet___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.size\":\n    [{\"id\": \"Std___HashSet___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.partition\":\n    [{\"id\": \"Std___HashSet___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.ofList\":\n    [{\"id\": \"Std___HashSet___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.ofArray\":\n    [{\"id\": \"Std___HashSet___ofArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.mk\":\n    [{\"id\": \"Std___HashSet___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.iter\":\n    [{\"id\": \"Std___HashSet___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.isEmpty\":\n    [{\"id\": \"Std___HashSet___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.insertMany\":\n    [{\"id\": \"Std___HashSet___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.insert\":\n    [{\"id\": \"Std___HashSet___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.inner\":\n    [{\"id\": \"Std___HashSet___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.getD\":\n    [{\"id\": \"Std___HashSet___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.get?\":\n    [{\"id\": \"Std___HashSet___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.get!\":\n    [{\"id\": \"Std___HashSet___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.get\":\n    [{\"id\": \"Std___HashSet___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.forM\":\n    [{\"id\": \"Std___HashSet___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.forIn\":\n    [{\"id\": \"Std___HashSet___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.foldM\":\n    [{\"id\": \"Std___HashSet___foldM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.fold\":\n    [{\"id\": \"Std___HashSet___fold\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.filter\":\n    [{\"id\": \"Std___HashSet___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.erase\":\n    [{\"id\": \"Std___HashSet___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.emptyWithCapacity\":\n    [{\"id\": \"Std___HashSet___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.containsThenInsert\":\n    [{\"id\": \"Std___HashSet___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.contains\":\n    [{\"id\": \"Std___HashSet___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.any\":\n    [{\"id\": \"Std___HashSet___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.all\":\n    [{\"id\": \"Std___HashSet___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Raw.mk\":\n    [{\"id\": \"Std___HashSet___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Raw.inner\":\n    [{\"id\": \"Std___HashSet___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Raw.WF.out\":\n    [{\"id\": \"Std___HashSet___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Raw.WF.mk\":\n    [{\"id\": \"Std___HashSet___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Raw.WF\":\n    [{\"id\": \"Std___HashSet___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Raw\":\n    [{\"id\": \"Std___HashSet___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Equiv.mk\":\n    [{\"id\": \"Std___HashSet___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Equiv.inner\":\n    [{\"id\": \"Std___HashSet___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet.Equiv\":\n    [{\"id\": \"Std___HashSet___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashSet\":\n    [{\"id\": \"Std___HashSet___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.valuesIter\":\n    [{\"id\": \"Std___HashMap___valuesIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.valuesArray\":\n    [{\"id\": \"Std___HashMap___valuesArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.values\":\n    [{\"id\": \"Std___HashMap___values\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.unitOfList\":\n    [{\"id\": \"Std___HashMap___unitOfList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.unitOfArray\":\n    [{\"id\": \"Std___HashMap___unitOfArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.union\":\n    [{\"id\": \"Std___HashMap___union\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.toList\":\n    [{\"id\": \"Std___HashMap___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.toArray\":\n    [{\"id\": \"Std___HashMap___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.size\":\n    [{\"id\": \"Std___HashMap___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.partition\":\n    [{\"id\": \"Std___HashMap___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.ofList\":\n    [{\"id\": \"Std___HashMap___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.modify\":\n    [{\"id\": \"Std___HashMap___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.map\":\n    [{\"id\": \"Std___HashMap___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.keysIter\":\n    [{\"id\": \"Std___HashMap___keysIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.keysArray\":\n    [{\"id\": \"Std___HashMap___keysArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.keys\":\n    [{\"id\": \"Std___HashMap___keys\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.iter\":\n    [{\"id\": \"Std___HashMap___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.isEmpty\":\n    [{\"id\": \"Std___HashMap___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.insertManyIfNewUnit\":\n    [{\"id\": \"Std___HashMap___insertManyIfNewUnit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.insertMany\":\n    [{\"id\": \"Std___HashMap___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.insertIfNew\":\n    [{\"id\": \"Std___HashMap___insertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.insert\":\n    [{\"id\": \"Std___HashMap___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.getThenInsertIfNew?\":\n    [{\"id\": \"Std___HashMap___getThenInsertIfNew___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.getKeyD\":\n    [{\"id\": \"Std___HashMap___getKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.getKey?\":\n    [{\"id\": \"Std___HashMap___getKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.getKey!\":\n    [{\"id\": \"Std___HashMap___getKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.getKey\":\n    [{\"id\": \"Std___HashMap___getKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.getD\":\n    [{\"id\": \"Std___HashMap___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.get?\":\n    [{\"id\": \"Std___HashMap___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.get!\":\n    [{\"id\": \"Std___HashMap___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.get\":\n    [{\"id\": \"Std___HashMap___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.forM\":\n    [{\"id\": \"Std___HashMap___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.forIn\":\n    [{\"id\": \"Std___HashMap___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.foldM\":\n    [{\"id\": \"Std___HashMap___foldM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.fold\":\n    [{\"id\": \"Std___HashMap___fold\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.filterMap\":\n    [{\"id\": \"Std___HashMap___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.filter\":\n    [{\"id\": \"Std___HashMap___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.erase\":\n    [{\"id\": \"Std___HashMap___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.emptyWithCapacity\":\n    [{\"id\": \"Std___HashMap___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.containsThenInsertIfNew\":\n    [{\"id\": \"Std___HashMap___containsThenInsertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.containsThenInsert\":\n    [{\"id\": \"Std___HashMap___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.contains\":\n    [{\"id\": \"Std___HashMap___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.alter\":\n    [{\"id\": \"Std___HashMap___alter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Raw.mk\":\n    [{\"id\": \"Std___HashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Raw.inner\":\n    [{\"id\": \"Std___HashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Raw.WF.out\":\n    [{\"id\": \"Std___HashMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Raw.WF.mk\":\n    [{\"id\": \"Std___HashMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Raw.WF\":\n    [{\"id\": \"Std___HashMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Raw\":\n    [{\"id\": \"Std___HashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Equiv.mk\":\n    [{\"id\": \"Std___HashMap___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Equiv.inner\":\n    [{\"id\": \"Std___HashMap___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap.Equiv\":\n    [{\"id\": \"Std___HashMap___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.HashMap\":\n    [{\"id\": \"Std___HashMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.Format.text\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.tag\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.sbracket\":\n    [{\"id\": \"Std___Format___sbracket\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.prettyM\":\n    [{\"id\": \"Std___Format___prettyM\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.pretty\":\n    [{\"id\": \"Std___Format___pretty\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.prefixJoin\":\n    [{\"id\": \"Std___Format___prefixJoin\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.paren\":\n    [{\"id\": \"Std___Format___paren\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.nil\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.nestD\":\n    [{\"id\": \"Std___Format___nestD\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.nest\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.line\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.joinSuffix\":\n    [{\"id\": \"Std___Format___joinSuffix\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.joinSep\":\n    [{\"id\": \"Std___Format___joinSep\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.join\":\n    [{\"id\": \"Std___Format___join\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.isNil\":\n    [{\"id\": \"Std___Format___isNil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.isEmpty\":\n    [{\"id\": \"Std___Format___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.indentD\":\n    [{\"id\": \"Std___Format___indentD\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.group\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.fill\":\n    [{\"id\": \"Std___Format___fill\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.defWidth\":\n    [{\"id\": \"Std___Format___defWidth\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.defIndent\":\n    [{\"id\": \"Std___Format___defIndent\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.bracketFill\":\n    [{\"id\": \"Std___Format___bracketFill\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.bracket\":\n    [{\"id\": \"Std___Format___bracket\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.append\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.align\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat.startTag\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat.pushOutput\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat.pushNewline\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat.mk\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat.endTags\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat.currColumn\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.MonadPrettyFormat\":\n    [{\"id\": \"Std___Format___MonadPrettyFormat___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.FlattenBehavior.fill\":\n    [{\"id\": \"Std___Format___FlattenBehavior___allOrNone\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.FlattenBehavior.allOrNone\":\n    [{\"id\": \"Std___Format___FlattenBehavior___allOrNone\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format.FlattenBehavior\":\n    [{\"id\": \"Std___Format___FlattenBehavior___allOrNone\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.Format\":\n    [{\"id\": \"Std___Format___nil\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Std.ExtHashSet.size\":\n    [{\"id\": \"Std___ExtHashSet___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.ofList\":\n    [{\"id\": \"Std___ExtHashSet___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.ofArray\":\n    [{\"id\": \"Std___ExtHashSet___ofArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.mk\":\n    [{\"id\": \"Std___ExtHashSet___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.isEmpty\":\n    [{\"id\": \"Std___ExtHashSet___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.insertMany\":\n    [{\"id\": \"Std___ExtHashSet___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.insert\":\n    [{\"id\": \"Std___ExtHashSet___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.inner\":\n    [{\"id\": \"Std___ExtHashSet___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.getD\":\n    [{\"id\": \"Std___ExtHashSet___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.get?\":\n    [{\"id\": \"Std___ExtHashSet___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.get!\":\n    [{\"id\": \"Std___ExtHashSet___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.get\":\n    [{\"id\": \"Std___ExtHashSet___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.filter\":\n    [{\"id\": \"Std___ExtHashSet___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.erase\":\n    [{\"id\": \"Std___ExtHashSet___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.emptyWithCapacity\":\n    [{\"id\": \"Std___ExtHashSet___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.containsThenInsert\":\n    [{\"id\": \"Std___ExtHashSet___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet.contains\":\n    [{\"id\": \"Std___ExtHashSet___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashSet\":\n    [{\"id\": \"Std___ExtHashSet___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.unitOfList\":\n    [{\"id\": \"Std___ExtHashMap___unitOfList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.unitOfArray\":\n    [{\"id\": \"Std___ExtHashMap___unitOfArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.size\":\n    [{\"id\": \"Std___ExtHashMap___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.ofList\":\n    [{\"id\": \"Std___ExtHashMap___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.modify\":\n    [{\"id\": \"Std___ExtHashMap___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.map\":\n    [{\"id\": \"Std___ExtHashMap___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.isEmpty\":\n    [{\"id\": \"Std___ExtHashMap___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.insertManyIfNewUnit\":\n    [{\"id\": \"Std___ExtHashMap___insertManyIfNewUnit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.insertMany\":\n    [{\"id\": \"Std___ExtHashMap___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.insertIfNew\":\n    [{\"id\": \"Std___ExtHashMap___insertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.insert\":\n    [{\"id\": \"Std___ExtHashMap___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.getThenInsertIfNew?\":\n    [{\"id\": \"Std___ExtHashMap___getThenInsertIfNew___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.getKeyD\":\n    [{\"id\": \"Std___ExtHashMap___getKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.getKey?\":\n    [{\"id\": \"Std___ExtHashMap___getKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.getKey!\":\n    [{\"id\": \"Std___ExtHashMap___getKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.getKey\":\n    [{\"id\": \"Std___ExtHashMap___getKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.getD\":\n    [{\"id\": \"Std___ExtHashMap___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.get?\":\n    [{\"id\": \"Std___ExtHashMap___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.get!\":\n    [{\"id\": \"Std___ExtHashMap___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.get\":\n    [{\"id\": \"Std___ExtHashMap___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.filterMap\":\n    [{\"id\": \"Std___ExtHashMap___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.filter\":\n    [{\"id\": \"Std___ExtHashMap___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.erase\":\n    [{\"id\": \"Std___ExtHashMap___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.emptyWithCapacity\":\n    [{\"id\": \"Std___ExtHashMap___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.containsThenInsertIfNew\":\n    [{\"id\": \"Std___ExtHashMap___containsThenInsertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.containsThenInsert\":\n    [{\"id\": \"Std___ExtHashMap___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.contains\":\n    [{\"id\": \"Std___ExtHashMap___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap.alter\":\n    [{\"id\": \"Std___ExtHashMap___alter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtHashMap\":\n    [{\"id\": \"Std___ExtHashMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.size\":\n    [{\"id\": \"Std___ExtDHashMap___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.ofList\":\n    [{\"id\": \"Std___ExtDHashMap___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.modify\":\n    [{\"id\": \"Std___ExtDHashMap___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.map\":\n    [{\"id\": \"Std___ExtDHashMap___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.isEmpty\":\n    [{\"id\": \"Std___ExtDHashMap___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.insertMany\":\n    [{\"id\": \"Std___ExtDHashMap___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.insertIfNew\":\n    [{\"id\": \"Std___ExtDHashMap___insertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.insert\":\n    [{\"id\": \"Std___ExtDHashMap___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.getThenInsertIfNew?\":\n    [{\"id\": \"Std___ExtDHashMap___getThenInsertIfNew___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.getKeyD\":\n    [{\"id\": \"Std___ExtDHashMap___getKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.getKey?\":\n    [{\"id\": \"Std___ExtDHashMap___getKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.getKey!\":\n    [{\"id\": \"Std___ExtDHashMap___getKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.getKey\":\n    [{\"id\": \"Std___ExtDHashMap___getKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.getD\":\n    [{\"id\": \"Std___ExtDHashMap___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.get?\":\n    [{\"id\": \"Std___ExtDHashMap___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.get!\":\n    [{\"id\": \"Std___ExtDHashMap___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.get\":\n    [{\"id\": \"Std___ExtDHashMap___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.filterMap\":\n    [{\"id\": \"Std___ExtDHashMap___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.filter\":\n    [{\"id\": \"Std___ExtDHashMap___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.erase\":\n    [{\"id\": \"Std___ExtDHashMap___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.emptyWithCapacity\":\n    [{\"id\": \"Std___ExtDHashMap___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.containsThenInsertIfNew\":\n    [{\"id\": \"Std___ExtDHashMap___containsThenInsertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.containsThenInsert\":\n    [{\"id\": \"Std___ExtDHashMap___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.contains\":\n    [{\"id\": \"Std___ExtDHashMap___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap.alter\":\n    [{\"id\": \"Std___ExtDHashMap___alter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.ExtDHashMap\":\n    [{\"id\": \"Std___ExtDHashMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.Do.WPMonad.toLawfulMonad\":\n    [{\"id\": \"Std___Do___WPMonad___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.WPMonad.mk\":\n    [{\"id\": \"Std___Do___WPMonad___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.WPMonad\":\n    [{\"id\": \"Std___Do___WPMonad___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.WP.wp\":\n    [{\"id\": \"Std___Do___WP___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.WP.mk\":\n    [{\"id\": \"Std___Do___WP___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.WP\":\n    [{\"id\": \"Std___Do___WP___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Triple.mp\":\n    [{\"id\": \"Std___Do___Triple___mp\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Triple.and\":\n    [{\"id\": \"Std___Do___Triple___and\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Triple\":\n    [{\"id\": \"Std___Do___Triple\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.StateM.of_wp_run_eq\":\n    [{\"id\": \"Std___Do___StateM___of_wp_run_eq\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.StateM.of_wp_run'_eq\":\n    [{\"id\": \"Std___Do___StateM___of_wp_run____eq\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SVal.uncurry\":\n    [{\"id\": \"Std___Do___SVal___uncurry\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SVal.getThe\":\n    [{\"id\": \"Std___Do___SVal___getThe\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SVal.curry\":\n    [{\"id\": \"Std___Do___SVal___curry\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SVal.StateTuple\":\n    [{\"id\": \"Std___Do___SVal___StateTuple\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SVal\":\n    [{\"id\": \"Std___Do___SVal\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.pure\":\n    [{\"id\": \"Std___Do___SPred___pure\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.or\":\n    [{\"id\": \"Std___Do___SPred___or\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.not\":\n    [{\"id\": \"Std___Do___SPred___not\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.imp\":\n    [{\"id\": \"Std___Do___SPred___imp\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.iff\":\n    [{\"id\": \"Std___Do___SPred___iff\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.forall\":\n    [{\"id\": \"Std___Do___SPred___forall\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.exists\":\n    [{\"id\": \"Std___Do___SPred___exists\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.entails\":\n    [{\"id\": \"Std___Do___SPred___entails\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.conjunction\":\n    [{\"id\": \"Std___Do___SPred___conjunction\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.bientails\":\n    [{\"id\": \"Std___Do___SPred___bientails\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred.and\":\n    [{\"id\": \"Std___Do___SPred___and\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.SPred\":\n    [{\"id\": \"Std___Do___SPred\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.ReaderM.of_wp_run_eq\":\n    [{\"id\": \"Std___Do___ReaderM___of_wp_run_eq\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.pushOption\":\n    [{\"id\": \"Std___Do___PredTrans___pushOption\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.pushExcept\":\n    [{\"id\": \"Std___Do___PredTrans___pushExcept\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.pushArg\":\n    [{\"id\": \"Std___Do___PredTrans___pushArg\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.pure\":\n    [{\"id\": \"Std___Do___PredTrans___pure\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.mk\":\n    [{\"id\": \"Std___Do___PredTrans___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.conjunctive\":\n    [{\"id\": \"Std___Do___PredTrans___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.bind\":\n    [{\"id\": \"Std___Do___PredTrans___bind\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.apply\":\n    [{\"id\": \"Std___Do___PredTrans___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.Monotonic\":\n    [{\"id\": \"Std___Do___PredTrans___Monotonic\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans.Conjunctive\":\n    [{\"id\": \"Std___Do___PredTrans___Conjunctive\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PredTrans\":\n    [{\"id\": \"Std___Do___PredTrans___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostShape.pure\":\n    [{\"id\": \"Std___Do___PostShape___pure\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostShape.except\":\n    [{\"id\": \"Std___Do___PostShape___pure\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostShape.args\":\n    [{\"id\": \"Std___Do___PostShape___args\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostShape.arg\":\n    [{\"id\": \"Std___Do___PostShape___pure\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostShape\":\n    [{\"id\": \"Std___Do___PostShape___pure\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostCond.noThrow\":\n    [{\"id\": \"Std___Do___PostCond___noThrow\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostCond.mayThrow\":\n    [{\"id\": \"Std___Do___PostCond___mayThrow\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostCond.imp\":\n    [{\"id\": \"Std___Do___PostCond___imp\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostCond.entails\":\n    [{\"id\": \"Std___Do___PostCond___entails\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostCond.and\":\n    [{\"id\": \"Std___Do___PostCond___and\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.PostCond\":\n    [{\"id\": \"Std___Do___PostCond\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Invariant.withEarlyReturn\":\n    [{\"id\": \"Std___Do___Invariant___withEarlyReturn\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Invariant\":\n    [{\"id\": \"Std___Do___Invariant\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Id.of_wp_run_eq\":\n    [{\"id\": \"Std___Do___Id___of_wp_run_eq\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.ExceptConds\":\n    [{\"id\": \"Std___Do___ExceptConds\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Except.of_wp\":\n    [{\"id\": \"Std___Do___Except___of_wp\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.EStateM.of_wp_run_eq\":\n    [{\"id\": \"Std___Do___EStateM___of_wp_run_eq\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.Assertion\":\n    [{\"id\": \"Std___Do___Assertion\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.DTreeMap.valuesIter\":\n    [{\"id\": \"Std___DTreeMap___valuesIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.valuesArray\":\n    [{\"id\": \"Std___DTreeMap___valuesArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.values\":\n    [{\"id\": \"Std___DTreeMap___values\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.toList\":\n    [{\"id\": \"Std___DTreeMap___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.toArray\":\n    [{\"id\": \"Std___DTreeMap___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.size\":\n    [{\"id\": \"Std___DTreeMap___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.partition\":\n    [{\"id\": \"Std___DTreeMap___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.ofList\":\n    [{\"id\": \"Std___DTreeMap___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.modify\":\n    [{\"id\": \"Std___DTreeMap___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.map\":\n    [{\"id\": \"Std___DTreeMap___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.keysIter\":\n    [{\"id\": \"Std___DTreeMap___keysIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.keysArray\":\n    [{\"id\": \"Std___DTreeMap___keysArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.keys\":\n    [{\"id\": \"Std___DTreeMap___keys\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.iter\":\n    [{\"id\": \"Std___DTreeMap___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.isEmpty\":\n    [{\"id\": \"Std___DTreeMap___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.insertMany\":\n    [{\"id\": \"Std___DTreeMap___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.insertIfNew\":\n    [{\"id\": \"Std___DTreeMap___insertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.insert\":\n    [{\"id\": \"Std___DTreeMap___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.getThenInsertIfNew?\":\n    [{\"id\": \"Std___DTreeMap___getThenInsertIfNew___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.getKeyD\":\n    [{\"id\": \"Std___DTreeMap___getKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.getKey?\":\n    [{\"id\": \"Std___DTreeMap___getKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.getKey!\":\n    [{\"id\": \"Std___DTreeMap___getKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.getKey\":\n    [{\"id\": \"Std___DTreeMap___getKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.getD\":\n    [{\"id\": \"Std___DTreeMap___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.get?\":\n    [{\"id\": \"Std___DTreeMap___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.get!\":\n    [{\"id\": \"Std___DTreeMap___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.get\":\n    [{\"id\": \"Std___DTreeMap___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.forM\":\n    [{\"id\": \"Std___DTreeMap___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.forIn\":\n    [{\"id\": \"Std___DTreeMap___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.foldlM\":\n    [{\"id\": \"Std___DTreeMap___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.foldl\":\n    [{\"id\": \"Std___DTreeMap___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.filterMap\":\n    [{\"id\": \"Std___DTreeMap___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.filter\":\n    [{\"id\": \"Std___DTreeMap___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.erase\":\n    [{\"id\": \"Std___DTreeMap___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.empty\":\n    [{\"id\": \"Std___DTreeMap___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.containsThenInsertIfNew\":\n    [{\"id\": \"Std___DTreeMap___containsThenInsertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.containsThenInsert\":\n    [{\"id\": \"Std___DTreeMap___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.contains\":\n    [{\"id\": \"Std___DTreeMap___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.alter\":\n    [{\"id\": \"Std___DTreeMap___alter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.Raw.mk\":\n    [{\"id\": \"Std___DTreeMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.Raw.inner\":\n    [{\"id\": \"Std___DTreeMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.Raw.WF.out\":\n    [{\"id\": \"Std___DTreeMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.Raw.WF.mk\":\n    [{\"id\": \"Std___DTreeMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.Raw.WF\":\n    [{\"id\": \"Std___DTreeMap___Raw___WF___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap.Raw\":\n    [{\"id\": \"Std___DTreeMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DTreeMap\":\n    [{\"id\": \"Std___DTreeMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.valuesIter\":\n    [{\"id\": \"Std___DHashMap___valuesIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.valuesArray\":\n    [{\"id\": \"Std___DHashMap___valuesArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.values\":\n    [{\"id\": \"Std___DHashMap___values\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.union\":\n    [{\"id\": \"Std___DHashMap___union\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.toList\":\n    [{\"id\": \"Std___DHashMap___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.toArray\":\n    [{\"id\": \"Std___DHashMap___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.size\":\n    [{\"id\": \"Std___DHashMap___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.partition\":\n    [{\"id\": \"Std___DHashMap___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.ofList\":\n    [{\"id\": \"Std___DHashMap___ofList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.modify\":\n    [{\"id\": \"Std___DHashMap___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.map\":\n    [{\"id\": \"Std___DHashMap___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.keysIter\":\n    [{\"id\": \"Std___DHashMap___keysIter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.keysArray\":\n    [{\"id\": \"Std___DHashMap___keysArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.keys\":\n    [{\"id\": \"Std___DHashMap___keys\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.iter\":\n    [{\"id\": \"Std___DHashMap___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.isEmpty\":\n    [{\"id\": \"Std___DHashMap___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.insertMany\":\n    [{\"id\": \"Std___DHashMap___insertMany\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.insertIfNew\":\n    [{\"id\": \"Std___DHashMap___insertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.insert\":\n    [{\"id\": \"Std___DHashMap___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.getThenInsertIfNew?\":\n    [{\"id\": \"Std___DHashMap___getThenInsertIfNew___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.getKeyD\":\n    [{\"id\": \"Std___DHashMap___getKeyD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.getKey?\":\n    [{\"id\": \"Std___DHashMap___getKey___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.getKey!\":\n    [{\"id\": \"Std___DHashMap___getKey___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.getKey\":\n    [{\"id\": \"Std___DHashMap___getKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.getD\":\n    [{\"id\": \"Std___DHashMap___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.get?\":\n    [{\"id\": \"Std___DHashMap___get___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.get!\":\n    [{\"id\": \"Std___DHashMap___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.get\":\n    [{\"id\": \"Std___DHashMap___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.forM\":\n    [{\"id\": \"Std___DHashMap___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.forIn\":\n    [{\"id\": \"Std___DHashMap___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.foldM\":\n    [{\"id\": \"Std___DHashMap___foldM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.fold\":\n    [{\"id\": \"Std___DHashMap___fold\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.filterMap\":\n    [{\"id\": \"Std___DHashMap___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.filter\":\n    [{\"id\": \"Std___DHashMap___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.erase\":\n    [{\"id\": \"Std___DHashMap___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.emptyWithCapacity\":\n    [{\"id\": \"Std___DHashMap___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.containsThenInsertIfNew\":\n    [{\"id\": \"Std___DHashMap___containsThenInsertIfNew\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.containsThenInsert\":\n    [{\"id\": \"Std___DHashMap___containsThenInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.contains\":\n    [{\"id\": \"Std___DHashMap___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.alter\":\n    [{\"id\": \"Std___DHashMap___alter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.size\":\n    [{\"id\": \"Std___DHashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.mk\":\n    [{\"id\": \"Std___DHashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.buckets\":\n    [{\"id\": \"Std___DHashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.wf\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.modify₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.insert₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.insertIfNew₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.getThenInsertIfNew?₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.filter₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.erase₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.emptyWithCapacity₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.containsThenInsert₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.containsThenInsertIfNew₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.constModify₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.constGetThenInsertIfNew?₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.constAlter₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF.alter₀\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw.WF\":\n    [{\"id\": \"Std___DHashMap___Raw___WF___wf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Raw\":\n    [{\"id\": \"Std___DHashMap___Raw___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Equiv.mk\":\n    [{\"id\": \"Std___DHashMap___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Equiv.inner\":\n    [{\"id\": \"Std___DHashMap___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap.Equiv\":\n    [{\"id\": \"Std___DHashMap___Equiv___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.DHashMap\":\n    [{\"id\": \"Std___DHashMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.Condvar.waitUntil\":\n    [{\"id\": \"Std___Condvar___waitUntil\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Condvar.wait\":\n    [{\"id\": \"Std___Condvar___wait\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Condvar.notifyOne\":\n    [{\"id\": \"Std___Condvar___notifyOne\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Condvar.notifyAll\":\n    [{\"id\": \"Std___Condvar___notifyAll\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Condvar.new\":\n    [{\"id\": \"Std___Condvar___new\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Condvar\":\n    [{\"id\": \"Std___Condvar\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.CloseableChannel.new\":\n    [{\"id\": \"Std___CloseableChannel___new\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.CloseableChannel\":\n    [{\"id\": \"Std___CloseableChannel\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel.sync\":\n    [{\"id\": \"Std___Channel___sync\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel.send\":\n    [{\"id\": \"Std___Channel___send\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel.recv\":\n    [{\"id\": \"Std___Channel___recv\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel.new\":\n    [{\"id\": \"Std___Channel___new\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel.forAsync\":\n    [{\"id\": \"Std___Channel___forAsync\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel.Sync\":\n    [{\"id\": \"Std___Channel___Sync\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.Channel\":\n    [{\"id\": \"Std___Channel\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"Std.AtomicT\":\n    [{\"id\": \"Std___AtomicT\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"StateT.set\":\n    [{\"id\": \"StateT___set\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.run'\":\n    [{\"id\": \"StateT___run___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.run\":\n    [{\"id\": \"StateT___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.pure\":\n    [{\"id\": \"StateT___pure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.orElse\":\n    [{\"id\": \"StateT___orElse\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.modifyGet\":\n    [{\"id\": \"StateT___modifyGet\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.map\":\n    [{\"id\": \"StateT___map\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.lift\":\n    [{\"id\": \"StateT___lift\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.get\":\n    [{\"id\": \"StateT___get\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.failure\":\n    [{\"id\": \"StateT___failure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT.bind\":\n    [{\"id\": \"StateT___bind\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateT\":\n    [{\"id\": \"StateT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'.set\":\n    [{\"id\": \"StateRefT______set\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'.run'\":\n    [{\"id\": \"StateRefT______run___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'.run\":\n    [{\"id\": \"StateRefT______run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'.modifyGet\":\n    [{\"id\": \"StateRefT______modifyGet\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'.lift\":\n    [{\"id\": \"StateRefT______lift\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'.get\":\n    [{\"id\": \"StateRefT______get\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateRefT'\":\n    [{\"id\": \"StateRefT___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateM\":\n    [{\"id\": \"StateM\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateCpsT.runK\":\n    [{\"id\": \"StateCpsT___runK\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateCpsT.run'\":\n    [{\"id\": \"StateCpsT___run___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateCpsT.run\":\n    [{\"id\": \"StateCpsT___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateCpsT.lift\":\n    [{\"id\": \"StateCpsT___lift\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"StateCpsT\":\n    [{\"id\": \"StateCpsT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Squash.mk\":\n    [{\"id\": \"Squash___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Squash.lift\":\n    [{\"id\": \"Squash___lift\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Squash.ind\":\n    [{\"id\": \"Squash___ind\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Squash\":\n    [{\"id\": \"Squash\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"SizeOf.sizeOf\":\n    [{\"id\": \"SizeOf___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"SizeOf.mk\":\n    [{\"id\": \"SizeOf___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"SizeOf\":\n    [{\"id\": \"SizeOf___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Sigma.snd\":\n    [{\"id\": \"Sigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Sigma.mk\":\n    [{\"id\": \"Sigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Sigma.fst\":\n    [{\"id\": \"Sigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Sigma\":\n    [{\"id\": \"Sigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"ShiftRight.shiftRight\":\n    [{\"id\": \"ShiftRight___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ShiftRight.mk\":\n    [{\"id\": \"ShiftRight___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ShiftRight\":\n    [{\"id\": \"ShiftRight___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ShiftLeft.shiftLeft\":\n    [{\"id\": \"ShiftLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ShiftLeft.mk\":\n    [{\"id\": \"ShiftLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ShiftLeft\":\n    [{\"id\": \"ShiftLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Setoid.trans\":\n    [{\"id\": \"Setoid___trans\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Setoid.symm\":\n    [{\"id\": \"Setoid___symm\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Setoid.refl\":\n    [{\"id\": \"Setoid___refl\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Setoid.r\":\n    [{\"id\": \"Setoid___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Setoid.mk\":\n    [{\"id\": \"Setoid___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Setoid.iseqv\":\n    [{\"id\": \"Setoid___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Setoid\":\n    [{\"id\": \"Setoid___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"SeqRight.seqRight\":\n    [{\"id\": \"SeqRight___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"SeqRight.mk\":\n    [{\"id\": \"SeqRight___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"SeqRight\":\n    [{\"id\": \"SeqRight___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"SeqLeft.seqLeft\":\n    [{\"id\": \"SeqLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"SeqLeft.mk\":\n    [{\"id\": \"SeqLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"SeqLeft\":\n    [{\"id\": \"SeqLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Seq.seq\":\n    [{\"id\": \"Seq___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Seq.mk\":\n    [{\"id\": \"Seq___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Seq\":\n    [{\"id\": \"Seq___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"STWorld.mk\":\n    [{\"id\": \"STWorld___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"STWorld\":\n    [{\"id\": \"STWorld___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ST.mkRef\":\n    [{\"id\": \"ST___mkRef\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.toMonadStateOf\":\n    [{\"id\": \"ST___Ref___toMonadStateOf\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.take\":\n    [{\"id\": \"ST___Ref___take\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.swap\":\n    [{\"id\": \"ST___Ref___swap\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.set\":\n    [{\"id\": \"ST___Ref___set\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.ptrEq\":\n    [{\"id\": \"ST___Ref___ptrEq\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.modifyGet\":\n    [{\"id\": \"ST___Ref___modifyGet\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.modify\":\n    [{\"id\": \"ST___Ref___modify\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.mk\":\n    [{\"id\": \"ST___Ref___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref.get\":\n    [{\"id\": \"ST___Ref___get\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST.Ref\":\n    [{\"id\": \"ST___Ref___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"ST\": [{\"id\": \"ST\", \"data\": null, \"address\": \"/IO/Mutable-References/\"}],\n    \"SMul.smul\":\n    [{\"id\": \"SMul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"SMul.mk\":\n    [{\"id\": \"SMul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"SMul\":\n    [{\"id\": \"SMul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ReprAtom.mk\":\n    [{\"id\": \"ReprAtom___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"ReprAtom\":\n    [{\"id\": \"ReprAtom___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Repr.reprPrec\":\n    [{\"id\": \"Repr___mk\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"Repr.mk\":\n    [{\"id\": \"Repr___mk\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"Repr.addAppParen\":\n    [{\"id\": \"Repr___addAppParen\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Repr\":\n    [{\"id\": \"Repr___mk\", \"data\": null, \"address\": \"/Interacting-with-Lean/\"}],\n    \"ReflBEq.rfl\":\n    [{\"id\": \"ReflBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ReflBEq.mk\":\n    [{\"id\": \"ReflBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ReflBEq\":\n    [{\"id\": \"ReflBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"ReaderT.run\":\n    [{\"id\": \"ReaderT___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT.read\":\n    [{\"id\": \"ReaderT___read\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT.pure\":\n    [{\"id\": \"ReaderT___pure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT.orElse\":\n    [{\"id\": \"ReaderT___orElse\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT.failure\":\n    [{\"id\": \"ReaderT___failure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT.bind\":\n    [{\"id\": \"ReaderT___bind\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT.adapt\":\n    [{\"id\": \"ReaderT___adapt\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderT\":\n    [{\"id\": \"ReaderT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ReaderM\":\n    [{\"id\": \"ReaderM\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"RandomGen.split\":\n    [{\"id\": \"RandomGen___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"RandomGen.range\":\n    [{\"id\": \"RandomGen___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"RandomGen.next\":\n    [{\"id\": \"RandomGen___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"RandomGen.mk\":\n    [{\"id\": \"RandomGen___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"RandomGen\":\n    [{\"id\": \"RandomGen___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"Quotient.sound\":\n    [{\"id\": \"Quotient___sound\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.recOnSubsingleton₂\":\n    [{\"id\": \"Quotient___recOnSubsingleton___\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.recOnSubsingleton\":\n    [{\"id\": \"Quotient___recOnSubsingleton\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.recOn\":\n    [{\"id\": \"Quotient___recOn\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.rec\":\n    [{\"id\": \"Quotient___rec\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.mk'\":\n    [{\"id\": \"Quotient___mk___\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.mk\":\n    [{\"id\": \"Quotient___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.lift₂\":\n    [{\"id\": \"Quotient___lift___\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.liftOn₂\":\n    [{\"id\": \"Quotient___liftOn___\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.liftOn\":\n    [{\"id\": \"Quotient___liftOn\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.lift\":\n    [{\"id\": \"Quotient___lift\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.ind\":\n    [{\"id\": \"Quotient___ind\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.hrecOn\":\n    [{\"id\": \"Quotient___hrecOn\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient.exact\":\n    [{\"id\": \"Quotient___exact\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quotient\":\n    [{\"id\": \"Quotient\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.sound\":\n    [{\"id\": \"Quot___sound\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.recOnSubsingleton\":\n    [{\"id\": \"Quot___recOnSubsingleton\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.recOn\":\n    [{\"id\": \"Quot___recOn\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.rec\":\n    [{\"id\": \"Quot___rec\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.mk\":\n    [{\"id\": \"Quot___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.liftOn\":\n    [{\"id\": \"Quot___liftOn\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.lift\":\n    [{\"id\": \"Quot___lift\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.ind\":\n    [{\"id\": \"Quot___ind\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot.hrecOn\":\n    [{\"id\": \"Quot___hrecOn\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Quot\":\n    [{\"id\": \"Quot\", \"data\": null, \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Pure.pure\":\n    [{\"id\": \"Pure___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Pure.mk\":\n    [{\"id\": \"Pure___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Pure\":\n    [{\"id\": \"Pure___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Prod.swap\":\n    [{\"id\": \"Prod___swap\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.snd\":\n    [{\"id\": \"Prod___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.mk\":\n    [{\"id\": \"Prod___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.map\":\n    [{\"id\": \"Prod___map\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.lexLt\":\n    [{\"id\": \"Prod___lexLt\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.fst\":\n    [{\"id\": \"Prod___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.foldI\":\n    [{\"id\": \"Prod___foldI\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.anyI\":\n    [{\"id\": \"Prod___anyI\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod.allI\":\n    [{\"id\": \"Prod___allI\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Prod\":\n    [{\"id\": \"Prod___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Pow.pow\":\n    [{\"id\": \"Pow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Pow.mk\":\n    [{\"id\": \"Pow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Pow\":\n    [{\"id\": \"Pow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"PUnit.unit\":\n    [{\"id\": \"PUnit___unit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"PUnit\":\n    [{\"id\": \"PUnit___unit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Unit-Type/\"}],\n    \"PSum.inr\":\n    [{\"id\": \"PSum___inl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"PSum.inl\":\n    [{\"id\": \"PSum___inl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"PSum.inhabitedRight\":\n    [{\"id\": \"PSum___inhabitedRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"PSum.inhabitedLeft\":\n    [{\"id\": \"PSum___inhabitedLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"PSum\":\n    [{\"id\": \"PSum___inl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"PSigma.snd\":\n    [{\"id\": \"PSigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PSigma.mk\":\n    [{\"id\": \"PSigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PSigma.fst\":\n    [{\"id\": \"PSigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PSigma\":\n    [{\"id\": \"PSigma___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PProd.snd\":\n    [{\"id\": \"PProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PProd.mk\":\n    [{\"id\": \"PProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PProd.fst\":\n    [{\"id\": \"PProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PProd\":\n    [{\"id\": \"PProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"PLift.up\":\n    [{\"id\": \"PLift___up\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"PLift.down\":\n    [{\"id\": \"PLift___up\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"PLift\":\n    [{\"id\": \"PLift___up\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"PEmpty.elim\":\n    [{\"id\": \"PEmpty___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"PEmpty\":\n    [{\"id\": \"PEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"Ordering.then\":\n    [{\"id\": \"Ordering___then\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.swap\":\n    [{\"id\": \"Ordering___swap\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.lt\":\n    [{\"id\": \"Ordering___lt\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.isNe\":\n    [{\"id\": \"Ordering___isNe\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.isLT\":\n    [{\"id\": \"Ordering___isLT\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.isLE\":\n    [{\"id\": \"Ordering___isLE\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.isGT\":\n    [{\"id\": \"Ordering___isGT\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.isGE\":\n    [{\"id\": \"Ordering___isGE\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.isEq\":\n    [{\"id\": \"Ordering___isEq\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.gt\":\n    [{\"id\": \"Ordering___lt\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering.eq\":\n    [{\"id\": \"Ordering___lt\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ordering\":\n    [{\"id\": \"Ordering___lt\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.toLT\":\n    [{\"id\": \"Ord___toLT\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.toLE\":\n    [{\"id\": \"Ord___toLE\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.toBEq\":\n    [{\"id\": \"Ord___toBEq\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.opposite\":\n    [{\"id\": \"Ord___opposite\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.on\":\n    [{\"id\": \"Ord___on\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.mk\":\n    [{\"id\": \"Ord___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.lex'\":\n    [{\"id\": \"Ord___lex___\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.lex\":\n    [{\"id\": \"Ord___lex\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord.compare\":\n    [{\"id\": \"Ord___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Ord\":\n    [{\"id\": \"Ord___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"OrOp.or\":\n    [{\"id\": \"OrOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"OrOp.mk\":\n    [{\"id\": \"OrOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"OrOp\":\n    [{\"id\": \"OrOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Or.inr\":\n    [{\"id\": \"Or___inl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Or.inl\":\n    [{\"id\": \"Or___inl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Or.by_cases'\":\n    [{\"id\": \"Or___by_cases___\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Or.by_cases\":\n    [{\"id\": \"Or___by_cases\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Or\":\n    [{\"id\": \"Or___inl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"OptionT.tryCatch\":\n    [{\"id\": \"OptionT___tryCatch\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.run\":\n    [{\"id\": \"OptionT___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.pure\":\n    [{\"id\": \"OptionT___pure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.orElse\":\n    [{\"id\": \"OptionT___orElse\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.mk\":\n    [{\"id\": \"OptionT___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.lift\":\n    [{\"id\": \"OptionT___lift\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.fail\":\n    [{\"id\": \"OptionT___fail\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT.bind\":\n    [{\"id\": \"OptionT___bind\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"OptionT\":\n    [{\"id\": \"OptionT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Option.unattach\":\n    [{\"id\": \"Option___unattach\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.tryCatch\":\n    [{\"id\": \"Option___tryCatch\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.toList\":\n    [{\"id\": \"Option___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.toArray\":\n    [{\"id\": \"Option___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.some\":\n    [{\"id\": \"Option___none\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.sequence\":\n    [{\"id\": \"Option___sequence\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.repr\":\n    [{\"id\": \"Option___repr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.pmap\":\n    [{\"id\": \"Option___pmap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.pelim\":\n    [{\"id\": \"Option___pelim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.pbind\":\n    [{\"id\": \"Option___pbind\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.orElse\":\n    [{\"id\": \"Option___orElse\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.or\":\n    [{\"id\": \"Option___or\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.none\":\n    [{\"id\": \"Option___none\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.min\":\n    [{\"id\": \"Option___min\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.merge\":\n    [{\"id\": \"Option___merge\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.max\":\n    [{\"id\": \"Option___max\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.mapM\":\n    [{\"id\": \"Option___mapM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.mapA\":\n    [{\"id\": \"Option___mapA\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.map\":\n    [{\"id\": \"Option___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.lt\":\n    [{\"id\": \"Option___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.join\":\n    [{\"id\": \"Option___join\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.isSome\":\n    [{\"id\": \"Option___isSome\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.isNone\":\n    [{\"id\": \"Option___isNone\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.isEqSome\":\n    [{\"id\": \"Option___isEqSome\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.guard\":\n    [{\"id\": \"Option___guard\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.getM\":\n    [{\"id\": \"Option___getM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.getDM\":\n    [{\"id\": \"Option___getDM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.getD\":\n    [{\"id\": \"Option___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.get!\":\n    [{\"id\": \"Option___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.get\":\n    [{\"id\": \"Option___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.format\":\n    [{\"id\": \"Option___format\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.forM\":\n    [{\"id\": \"Option___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.filterM\":\n    [{\"id\": \"Option___filterM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.filter\":\n    [{\"id\": \"Option___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.elimM\":\n    [{\"id\": \"Option___elimM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.elim\":\n    [{\"id\": \"Option___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.decidableEqNone\":\n    [{\"id\": \"Option___decidableEqNone\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.choice\":\n    [{\"id\": \"Option___choice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.bindM\":\n    [{\"id\": \"Option___bindM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.bind\":\n    [{\"id\": \"Option___bind\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.attachWith\":\n    [{\"id\": \"Option___attachWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.attach\":\n    [{\"id\": \"Option___attach\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.any\":\n    [{\"id\": \"Option___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option.all\":\n    [{\"id\": \"Option___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"Option\":\n    [{\"id\": \"Option___none\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Optional-Values/\"}],\n    \"OfScientific.ofScientific\":\n    [{\"id\": \"OfScientific___mk\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"OfScientific.mk\":\n    [{\"id\": \"OfScientific___mk\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"OfScientific\":\n    [{\"id\": \"OfScientific___mk\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"OfNat.ofNat\":\n    [{\"id\": \"OfNat___mk\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"OfNat.mk\":\n    [{\"id\": \"OfNat___mk\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"OfNat\":\n    [{\"id\": \"OfNat___mk\",\n      \"data\": null,\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"Not.elim\":\n    [{\"id\": \"Not___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Not\":\n    [{\"id\": \"Not\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Nonempty.intro\":\n    [{\"id\": \"Nonempty___intro\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Nonempty\":\n    [{\"id\": \"Nonempty___intro\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Neg.neg\":\n    [{\"id\": \"Neg___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Neg.mk\":\n    [{\"id\": \"Neg___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Neg\":\n    [{\"id\": \"Neg___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NeZero.out\":\n    [{\"id\": \"NeZero___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NeZero.mk\":\n    [{\"id\": \"NeZero___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NeZero\":\n    [{\"id\": \"NeZero___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NatPow.pow\":\n    [{\"id\": \"NatPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NatPow.mk\":\n    [{\"id\": \"NatPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NatPow\":\n    [{\"id\": \"NatPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"NatCast.natCast\":\n    [{\"id\": \"NatCast___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"NatCast.mk\":\n    [{\"id\": \"NatCast___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"NatCast\":\n    [{\"id\": \"NatCast___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Nat.zero\":\n    [{\"id\": \"Nat___zero\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.xor\":\n    [{\"id\": \"Nat___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toUSize\":\n    [{\"id\": \"Nat___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toUInt8\":\n    [{\"id\": \"Nat___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toUInt64\":\n    [{\"id\": \"Nat___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toUInt32\":\n    [{\"id\": \"Nat___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toUInt16\":\n    [{\"id\": \"Nat___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toSuperscriptString\":\n    [{\"id\": \"Nat___toSuperscriptString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toSuperDigits\":\n    [{\"id\": \"Nat___toSuperDigits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toSubscriptString\":\n    [{\"id\": \"Nat___toSubscriptString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toSubDigits\":\n    [{\"id\": \"Nat___toSubDigits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toInt8\":\n    [{\"id\": \"Nat___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toInt64\":\n    [{\"id\": \"Nat___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toInt32\":\n    [{\"id\": \"Nat___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toInt16\":\n    [{\"id\": \"Nat___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toISize\":\n    [{\"id\": \"Nat___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toFloat32\":\n    [{\"id\": \"Nat___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toFloat\":\n    [{\"id\": \"Nat___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.toDigits\":\n    [{\"id\": \"Nat___toDigits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.testBit\":\n    [{\"id\": \"Nat___testBit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.superDigitChar\":\n    [{\"id\": \"Nat___superDigitChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.succ\":\n    [{\"id\": \"Nat___zero\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.subDigitChar\":\n    [{\"id\": \"Nat___subDigitChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.sub\":\n    [{\"id\": \"Nat___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.strongRecOn\":\n    [{\"id\": \"Nat___strongRecOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.shiftRight\":\n    [{\"id\": \"Nat___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.shiftLeft\":\n    [{\"id\": \"Nat___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.repr\":\n    [{\"id\": \"Nat___repr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.repeatTR\":\n    [{\"id\": \"Nat___repeatTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.repeat\":\n    [{\"id\": \"Nat___repeat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.recAux\":\n    [{\"id\": \"Nat___recAux\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.pred\":\n    [{\"id\": \"Nat___pred\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.pow\":\n    [{\"id\": \"Nat___pow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.nextPowerOfTwo\":\n    [{\"id\": \"Nat___nextPowerOfTwo\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.mul\":\n    [{\"id\": \"Nat___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.modCore\":\n    [{\"id\": \"Nat___modCore\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.mod.inductionOn\":\n    [{\"id\": \"Nat___mod___inductionOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.mod\":\n    [{\"id\": \"Nat___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.min\":\n    [{\"id\": \"Nat___min\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.max\":\n    [{\"id\": \"Nat___max\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.lt\":\n    [{\"id\": \"Nat___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.lor\":\n    [{\"id\": \"Nat___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.log2\":\n    [{\"id\": \"Nat___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.le.step\":\n    [{\"id\": \"Nat___le___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.le.refl\":\n    [{\"id\": \"Nat___le___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.le\":\n    [{\"id\": \"Nat___le___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.lcm\":\n    [{\"id\": \"Nat___lcm\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.land\":\n    [{\"id\": \"Nat___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.isValidChar\":\n    [{\"id\": \"Nat___isValidChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.isPowerOfTwo\":\n    [{\"id\": \"Nat___isPowerOfTwo\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.gcd\":\n    [{\"id\": \"Nat___gcd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.forRevM\":\n    [{\"id\": \"Nat___forRevM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.forM\":\n    [{\"id\": \"Nat___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.foldTR\":\n    [{\"id\": \"Nat___foldTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.foldRevM\":\n    [{\"id\": \"Nat___foldRevM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.foldRev\":\n    [{\"id\": \"Nat___foldRev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.foldM\":\n    [{\"id\": \"Nat___foldM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.fold\":\n    [{\"id\": \"Nat___fold\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.div2Induction\":\n    [{\"id\": \"Nat___div2Induction\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.div.inductionOn\":\n    [{\"id\": \"Nat___div___inductionOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.div\":\n    [{\"id\": \"Nat___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.digitChar\":\n    [{\"id\": \"Nat___digitChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.decLt\":\n    [{\"id\": \"Nat___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.decLe\":\n    [{\"id\": \"Nat___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.decEq\":\n    [{\"id\": \"Nat___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.cast\":\n    [{\"id\": \"Nat___cast\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Nat.casesAuxOn\":\n    [{\"id\": \"Nat___casesAuxOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.caseStrongRecOn\":\n    [{\"id\": \"Nat___caseStrongRecOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.blt\":\n    [{\"id\": \"Nat___blt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.ble\":\n    [{\"id\": \"Nat___ble\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.bitwise\":\n    [{\"id\": \"Nat___bitwise\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.beq\":\n    [{\"id\": \"Nat___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.anyTR\":\n    [{\"id\": \"Nat___anyTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.anyM\":\n    [{\"id\": \"Nat___anyM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.any\":\n    [{\"id\": \"Nat___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.allTR\":\n    [{\"id\": \"Nat___allTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.allM\":\n    [{\"id\": \"Nat___allM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.all\":\n    [{\"id\": \"Nat___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat.add\":\n    [{\"id\": \"Nat___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Nat\":\n    [{\"id\": \"Nat___zero\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Natural-Numbers/\"}],\n    \"Mul.mul\":\n    [{\"id\": \"Mul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Mul.mk\":\n    [{\"id\": \"Mul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Mul\":\n    [{\"id\": \"Mul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"MonadWithReaderOf.withReader\":\n    [{\"id\": \"MonadWithReaderOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadWithReaderOf.mk\":\n    [{\"id\": \"MonadWithReaderOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadWithReaderOf\":\n    [{\"id\": \"MonadWithReaderOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadWithReader.withReader\":\n    [{\"id\": \"MonadWithReader___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadWithReader.mk\":\n    [{\"id\": \"MonadWithReader___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadWithReader\":\n    [{\"id\": \"MonadWithReader___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadStateOf.set\":\n    [{\"id\": \"MonadStateOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadStateOf.modifyGet\":\n    [{\"id\": \"MonadStateOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadStateOf.mk\":\n    [{\"id\": \"MonadStateOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadStateOf.get\":\n    [{\"id\": \"MonadStateOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadStateOf\":\n    [{\"id\": \"MonadStateOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadState.set\":\n    [{\"id\": \"MonadState___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadState.modifyGet\":\n    [{\"id\": \"MonadState___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"},\n     {\"id\": \"MonadState___modifyGet\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadState.mk\":\n    [{\"id\": \"MonadState___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadState.get\":\n    [{\"id\": \"MonadState___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"},\n     {\"id\": \"MonadState___get\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadState\":\n    [{\"id\": \"MonadState___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadReaderOf.read\":\n    [{\"id\": \"MonadReaderOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadReaderOf.mk\":\n    [{\"id\": \"MonadReaderOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadReaderOf\":\n    [{\"id\": \"MonadReaderOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadReader.read\":\n    [{\"id\": \"MonadReader___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadReader.mk\":\n    [{\"id\": \"MonadReader___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadReader\":\n    [{\"id\": \"MonadReader___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadLiftT.monadLift\":\n    [{\"id\": \"MonadLiftT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadLiftT.mk\":\n    [{\"id\": \"MonadLiftT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadLiftT\":\n    [{\"id\": \"MonadLiftT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadLift.monadLift\":\n    [{\"id\": \"MonadLift___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadLift.mk\":\n    [{\"id\": \"MonadLift___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadLift\":\n    [{\"id\": \"MonadLift___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFunctorT.monadMap\":\n    [{\"id\": \"MonadFunctorT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFunctorT.mk\":\n    [{\"id\": \"MonadFunctorT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFunctorT\":\n    [{\"id\": \"MonadFunctorT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFunctor.monadMap\":\n    [{\"id\": \"MonadFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFunctor.mk\":\n    [{\"id\": \"MonadFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFunctor\":\n    [{\"id\": \"MonadFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadFinally.tryFinally'\":\n    [{\"id\": \"MonadFinally___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadFinally.mk\":\n    [{\"id\": \"MonadFinally___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadFinally\":\n    [{\"id\": \"MonadFinally___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExceptOf.tryCatch\":\n    [{\"id\": \"MonadExceptOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExceptOf.throw\":\n    [{\"id\": \"MonadExceptOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExceptOf.mk\":\n    [{\"id\": \"MonadExceptOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExceptOf\":\n    [{\"id\": \"MonadExceptOf___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept.tryCatch\":\n    [{\"id\": \"MonadExcept___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept.throw\":\n    [{\"id\": \"MonadExcept___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept.orelse'\":\n    [{\"id\": \"MonadExcept___orelse___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept.orElse\":\n    [{\"id\": \"MonadExcept___orElse\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept.ofExcept\":\n    [{\"id\": \"MonadExcept___ofExcept\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept.mk\":\n    [{\"id\": \"MonadExcept___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadExcept\":\n    [{\"id\": \"MonadExcept___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"MonadEvalT.monadEval\":\n    [{\"id\": \"MonadEvalT___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MonadEvalT.mk\":\n    [{\"id\": \"MonadEvalT___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MonadEvalT\":\n    [{\"id\": \"MonadEvalT___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MonadEval.monadEval\":\n    [{\"id\": \"MonadEval___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MonadEval.mk\":\n    [{\"id\": \"MonadEval___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MonadEval\":\n    [{\"id\": \"MonadEval___mk\",\n      \"data\": null,\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"MonadControlT.stM\":\n    [{\"id\": \"MonadControlT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControlT.restoreM\":\n    [{\"id\": \"MonadControlT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControlT.mk\":\n    [{\"id\": \"MonadControlT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControlT.liftWith\":\n    [{\"id\": \"MonadControlT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControlT\":\n    [{\"id\": \"MonadControlT___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControl.stM\":\n    [{\"id\": \"MonadControl___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControl.restoreM\":\n    [{\"id\": \"MonadControl___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControl.mk\":\n    [{\"id\": \"MonadControl___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControl.liftWith\":\n    [{\"id\": \"MonadControl___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"MonadControl\":\n    [{\"id\": \"MonadControl___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Lifting-Monads/\"}],\n    \"Monad.toApplicative\":\n    [{\"id\": \"Monad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Monad.mk\":\n    [{\"id\": \"Monad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Monad\":\n    [{\"id\": \"Monad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Mod.mod\":\n    [{\"id\": \"Mod___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Mod.mk\":\n    [{\"id\": \"Mod___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Mod\":\n    [{\"id\": \"Mod___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Min.mk\":\n    [{\"id\": \"Min___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Min.min\":\n    [{\"id\": \"Min___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Min\":\n    [{\"id\": \"Min___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Max.mk\":\n    [{\"id\": \"Max___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Max.max\":\n    [{\"id\": \"Max___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Max\":\n    [{\"id\": \"Max___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"MProd.snd\":\n    [{\"id\": \"MProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"MProd.mk\":\n    [{\"id\": \"MProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"MProd.fst\":\n    [{\"id\": \"MProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"MProd\":\n    [{\"id\": \"MProd___mk\", \"data\": null, \"address\": \"/Basic-Types/Tuples/\"}],\n    \"List.zipWithTR\":\n    [{\"id\": \"List___zipWithTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.zipWithAll\":\n    [{\"id\": \"List___zipWithAll\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.zipWith\":\n    [{\"id\": \"List___zipWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.zipIdxTR\":\n    [{\"id\": \"List___zipIdxTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.zipIdx\":\n    [{\"id\": \"List___zipIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.zip\":\n    [{\"id\": \"List___zip\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.unzipTR\":\n    [{\"id\": \"List___unzipTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.unzip\":\n    [{\"id\": \"List___unzip\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.unattach\":\n    [{\"id\": \"List___unattach\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.toString\":\n    [{\"id\": \"List___toString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.toFloatArray\":\n    [{\"id\": \"List___toFloatArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.toByteArray\":\n    [{\"id\": \"List___toByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.toArrayImpl\":\n    [{\"id\": \"List___toArrayImpl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.toArray\":\n    [{\"id\": \"List___toArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.takeWhileTR\":\n    [{\"id\": \"List___takeWhileTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.takeWhile\":\n    [{\"id\": \"List___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.takeTR\":\n    [{\"id\": \"List___takeTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.take\":\n    [{\"id\": \"List___take\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.tailD\":\n    [{\"id\": \"List___tailD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.tail?\":\n    [{\"id\": \"List___tail___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.tail!\":\n    [{\"id\": \"List___tail___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.tail\":\n    [{\"id\": \"List___tail\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.sum\":\n    [{\"id\": \"List___sum\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.splitBy\":\n    [{\"id\": \"List___splitBy\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.splitAt\":\n    [{\"id\": \"List___splitAt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.span\":\n    [{\"id\": \"List___span\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.singleton\":\n    [{\"id\": \"List___singleton\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.setTR\":\n    [{\"id\": \"List___setTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.set\":\n    [{\"id\": \"List___set\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.rotateRight\":\n    [{\"id\": \"List___rotateRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.rotateLeft\":\n    [{\"id\": \"List___rotateLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.rightpad\":\n    [{\"id\": \"List___rightpad\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.reverse\":\n    [{\"id\": \"List___reverse\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.replicateTR\":\n    [{\"id\": \"List___replicateTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.replicate\":\n    [{\"id\": \"List___replicate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.replaceTR\":\n    [{\"id\": \"List___replaceTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.replace\":\n    [{\"id\": \"List___replace\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.removeAll\":\n    [{\"id\": \"List___removeAll\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.range'TR\":\n    [{\"id\": \"List___range___TR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.range'\":\n    [{\"id\": \"List___range___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.range\":\n    [{\"id\": \"List___range\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.pmap\":\n    [{\"id\": \"List___pmap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.partitionMap\":\n    [{\"id\": \"List___partitionMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.partitionM\":\n    [{\"id\": \"List___partitionM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.partition\":\n    [{\"id\": \"List___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.or\":\n    [{\"id\": \"List___or\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.ofFn\":\n    [{\"id\": \"List___ofFn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.nil\":\n    [{\"id\": \"List___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.modifyTailIdx\":\n    [{\"id\": \"List___modifyTailIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.modifyTR\":\n    [{\"id\": \"List___modifyTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.modifyHead\":\n    [{\"id\": \"List___modifyHead\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.modify\":\n    [{\"id\": \"List___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.min?\":\n    [{\"id\": \"List___min___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mergeSort\":\n    [{\"id\": \"List___mergeSort\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.merge\":\n    [{\"id\": \"List___merge\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.max?\":\n    [{\"id\": \"List___max___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapTR\":\n    [{\"id\": \"List___mapTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapMonoM\":\n    [{\"id\": \"List___mapMonoM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapMono\":\n    [{\"id\": \"List___mapMono\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapM'\":\n    [{\"id\": \"List___mapM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapM\":\n    [{\"id\": \"List___mapM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapIdxM\":\n    [{\"id\": \"List___mapIdxM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapIdx\":\n    [{\"id\": \"List___mapIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapFinIdxM\":\n    [{\"id\": \"List___mapFinIdxM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapFinIdx\":\n    [{\"id\": \"List___mapFinIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.mapA\":\n    [{\"id\": \"List___mapA\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.map\":\n    [{\"id\": \"List___map\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.lt\":\n    [{\"id\": \"List___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.lookup\":\n    [{\"id\": \"List___lookup\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.lex\":\n    [{\"id\": \"List___lex\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.lengthTR\":\n    [{\"id\": \"List___lengthTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.length\":\n    [{\"id\": \"List___length\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.leftpadTR\":\n    [{\"id\": \"List___leftpadTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.leftpad\":\n    [{\"id\": \"List___leftpad\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.le\":\n    [{\"id\": \"List___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.iterM\":\n    [{\"id\": \"List___iterM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.iter\":\n    [{\"id\": \"List___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isSuffixOf?\":\n    [{\"id\": \"List___isSuffixOf___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isSuffixOf\":\n    [{\"id\": \"List___isSuffixOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isSublist\":\n    [{\"id\": \"List___isSublist\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isPrefixOf?\":\n    [{\"id\": \"List___isPrefixOf___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isPrefixOf\":\n    [{\"id\": \"List___isPrefixOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isPerm\":\n    [{\"id\": \"List___isPerm\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isEqv\":\n    [{\"id\": \"List___isEqv\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.isEmpty\":\n    [{\"id\": \"List___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.intersperseTR\":\n    [{\"id\": \"List___intersperseTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.intersperse\":\n    [{\"id\": \"List___intersperse\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.intercalateTR\":\n    [{\"id\": \"List___intercalateTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.intercalate\":\n    [{\"id\": \"List___intercalate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.insertIdxTR\":\n    [{\"id\": \"List___insertIdxTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.insertIdx\":\n    [{\"id\": \"List___insertIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.insert\":\n    [{\"id\": \"List___insert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.idxOf?\":\n    [{\"id\": \"List___idxOf___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.idxOf\":\n    [{\"id\": \"List___idxOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.headD\":\n    [{\"id\": \"List___headD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.head?\":\n    [{\"id\": \"List___head___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.head!\":\n    [{\"id\": \"List___head___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.head\":\n    [{\"id\": \"List___head\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.groupByKey\":\n    [{\"id\": \"List___groupByKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.getLastD\":\n    [{\"id\": \"List___getLastD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.getLast?\":\n    [{\"id\": \"List___getLast___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.getLast!\":\n    [{\"id\": \"List___getLast___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.getLast\":\n    [{\"id\": \"List___getLast\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.getD\":\n    [{\"id\": \"List___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.get\":\n    [{\"id\": \"List___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.forM\":\n    [{\"id\": \"List___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.forA\":\n    [{\"id\": \"List___forA\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldrTR\":\n    [{\"id\": \"List___foldrTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldrRecOn\":\n    [{\"id\": \"List___foldrRecOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldrM\":\n    [{\"id\": \"List___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldr\":\n    [{\"id\": \"List___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldlRecOn\":\n    [{\"id\": \"List___foldlRecOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldlM\":\n    [{\"id\": \"List___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.foldl\":\n    [{\"id\": \"List___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.flattenTR\":\n    [{\"id\": \"List___flattenTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.flatten\":\n    [{\"id\": \"List___flatten\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.flatMapTR\":\n    [{\"id\": \"List___flatMapTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.flatMapM\":\n    [{\"id\": \"List___flatMapM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.flatMap\":\n    [{\"id\": \"List___flatMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.firstM\":\n    [{\"id\": \"List___firstM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.findSomeM?\":\n    [{\"id\": \"List___findSomeM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.findSome?\":\n    [{\"id\": \"List___findSome___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.findM?\":\n    [{\"id\": \"List___findM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.findIdx?\":\n    [{\"id\": \"List___findIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.findIdx\":\n    [{\"id\": \"List___findIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.findFinIdx?\":\n    [{\"id\": \"List___findFinIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.find?\":\n    [{\"id\": \"List___find___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.finRange\":\n    [{\"id\": \"List___finRange\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.finIdxOf?\":\n    [{\"id\": \"List___finIdxOf___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filterTR\":\n    [{\"id\": \"List___filterTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filterRevM\":\n    [{\"id\": \"List___filterRevM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filterMapTR\":\n    [{\"id\": \"List___filterMapTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filterMapM\":\n    [{\"id\": \"List___filterMapM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filterMap\":\n    [{\"id\": \"List___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filterM\":\n    [{\"id\": \"List___filterM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.filter\":\n    [{\"id\": \"List___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.extract\":\n    [{\"id\": \"List___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.eraseTR\":\n    [{\"id\": \"List___eraseTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.eraseReps\":\n    [{\"id\": \"List___eraseReps\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.erasePTR\":\n    [{\"id\": \"List___erasePTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.eraseP\":\n    [{\"id\": \"List___eraseP\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.eraseIdxTR\":\n    [{\"id\": \"List___eraseIdxTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.eraseIdx\":\n    [{\"id\": \"List___eraseIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.eraseDups\":\n    [{\"id\": \"List___eraseDups\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.erase\":\n    [{\"id\": \"List___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.elem\":\n    [{\"id\": \"List___elem\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.dropWhile\":\n    [{\"id\": \"List___dropWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.dropLastTR\":\n    [{\"id\": \"List___dropLastTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.dropLast\":\n    [{\"id\": \"List___dropLast\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.drop\":\n    [{\"id\": \"List___drop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.countP\":\n    [{\"id\": \"List___countP\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.count\":\n    [{\"id\": \"List___count\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.contains\":\n    [{\"id\": \"List___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.cons\":\n    [{\"id\": \"List___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.concat\":\n    [{\"id\": \"List___concat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.beq\":\n    [{\"id\": \"List___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.attachWith\":\n    [{\"id\": \"List___attachWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.attach\":\n    [{\"id\": \"List___attach\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.appendTR\":\n    [{\"id\": \"List___appendTR\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.append\":\n    [{\"id\": \"List___append\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.anyM\":\n    [{\"id\": \"List___anyM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.any\":\n    [{\"id\": \"List___any\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.and\":\n    [{\"id\": \"List___and\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.allM\":\n    [{\"id\": \"List___allM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.all\":\n    [{\"id\": \"List___all\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Sublist.slnil\":\n    [{\"id\": \"List___Sublist___slnil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Sublist.cons₂\":\n    [{\"id\": \"List___Sublist___slnil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Sublist.cons\":\n    [{\"id\": \"List___Sublist___slnil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Sublist\":\n    [{\"id\": \"List___Sublist___slnil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Perm.trans\":\n    [{\"id\": \"List___Perm___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Perm.swap\":\n    [{\"id\": \"List___Perm___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Perm.nil\":\n    [{\"id\": \"List___Perm___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Perm.cons\":\n    [{\"id\": \"List___Perm___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Perm\":\n    [{\"id\": \"List___Perm___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Pairwise.nil\":\n    [{\"id\": \"List___Pairwise___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Pairwise.cons\":\n    [{\"id\": \"List___Pairwise___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Pairwise\":\n    [{\"id\": \"List___Pairwise___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Nodup\":\n    [{\"id\": \"List___Nodup\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Mem.tail\":\n    [{\"id\": \"List___Mem___head\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Mem.head\":\n    [{\"id\": \"List___Mem___head\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Mem\":\n    [{\"id\": \"List___Mem___head\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Lex.rel\":\n    [{\"id\": \"List___Lex___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Lex.nil\":\n    [{\"id\": \"List___Lex___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Lex.cons\":\n    [{\"id\": \"List___Lex___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Lex\":\n    [{\"id\": \"List___Lex___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.IsSuffix\":\n    [{\"id\": \"List___IsSuffix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.IsPrefix\":\n    [{\"id\": \"List___IsPrefix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.IsInfix\":\n    [{\"id\": \"List___IsInfix\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.Cursor.tail\":\n    [{\"id\": \"List___Cursor___tail\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.suffix\":\n    [{\"id\": \"List___Cursor___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.property\":\n    [{\"id\": \"List___Cursor___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.prefix\":\n    [{\"id\": \"List___Cursor___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.pos\":\n    [{\"id\": \"List___Cursor___pos\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.mk\":\n    [{\"id\": \"List___Cursor___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.end\":\n    [{\"id\": \"List___Cursor___end\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.current\":\n    [{\"id\": \"List___Cursor___current\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.begin\":\n    [{\"id\": \"List___Cursor___begin\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor.at\":\n    [{\"id\": \"List___Cursor___at\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List.Cursor\":\n    [{\"id\": \"List___Cursor___mk\",\n      \"data\": null,\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"List\":\n    [{\"id\": \"List___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"Lean.strLitKind\":\n    [{\"id\": \"Lean___strLitKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.scientificLitKind\":\n    [{\"id\": \"Lean___scientificLitKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.numLitKind\":\n    [{\"id\": \"Lean___numLitKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.nullKind\":\n    [{\"id\": \"Lean___nullKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.nameLitKind\":\n    [{\"id\": \"Lean___nameLitKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.interpolatedStrLitKind\":\n    [{\"id\": \"Lean___interpolatedStrLitKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.interpolatedStrKind\":\n    [{\"id\": \"Lean___interpolatedStrKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.identKind\":\n    [{\"id\": \"Lean___identKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.hygieneInfoKind\":\n    [{\"id\": \"Lean___hygieneInfoKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.groupKind\":\n    [{\"id\": \"Lean___groupKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.fieldIdxKind\":\n    [{\"id\": \"Lean___fieldIdxKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.choiceKind\":\n    [{\"id\": \"Lean___choiceKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.charLitKind\":\n    [{\"id\": \"Lean___charLitKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntaxArray\":\n    [{\"id\": \"Lean___TSyntaxArray\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.raw\":\n    [{\"id\": \"Lean___TSyntax___mk\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.mk\":\n    [{\"id\": \"Lean___TSyntax___mk\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getString\":\n    [{\"id\": \"Lean___TSyntax___getString\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getScientific\":\n    [{\"id\": \"Lean___TSyntax___getScientific\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getNat\":\n    [{\"id\": \"Lean___TSyntax___getNat\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getName\":\n    [{\"id\": \"Lean___TSyntax___getName\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getId\":\n    [{\"id\": \"Lean___TSyntax___getId\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getHygieneInfo\":\n    [{\"id\": \"Lean___TSyntax___getHygieneInfo\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax.getChar\":\n    [{\"id\": \"Lean___TSyntax___getChar\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.TSyntax\":\n    [{\"id\": \"Lean___TSyntax___mk\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.SyntaxNodeKinds\":\n    [{\"id\": \"Lean___SyntaxNodeKinds\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.SyntaxNodeKind\":\n    [{\"id\": \"Lean___SyntaxNodeKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.setKind\":\n    [{\"id\": \"Lean___Syntax___setKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.node\":\n    [{\"id\": \"Lean___Syntax___missing\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.missing\":\n    [{\"id\": \"Lean___Syntax___missing\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.isOfKind\":\n    [{\"id\": \"Lean___Syntax___isOfKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.ident\":\n    [{\"id\": \"Lean___Syntax___missing\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.getKind\":\n    [{\"id\": \"Lean___Syntax___getKind\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.atom\":\n    [{\"id\": \"Lean___Syntax___missing\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Term\":\n    [{\"id\": \"Lean___Syntax___Term\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Tactic\":\n    [{\"id\": \"Lean___Syntax___Tactic\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.TSepArray.mk\":\n    [{\"id\": \"Lean___Syntax___TSepArray___mk\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.TSepArray.elemsAndSeps\":\n    [{\"id\": \"Lean___Syntax___TSepArray___mk\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.TSepArray\":\n    [{\"id\": \"Lean___Syntax___TSepArray___mk\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.StrLit\":\n    [{\"id\": \"Lean___Syntax___StrLit\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.ScientificLit\":\n    [{\"id\": \"Lean___Syntax___ScientificLit\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Prio\":\n    [{\"id\": \"Lean___Syntax___Prio\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Preresolved.namespace\":\n    [{\"id\": \"Lean___Syntax___Preresolved___namespace\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Preresolved.decl\":\n    [{\"id\": \"Lean___Syntax___Preresolved___namespace\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Preresolved\":\n    [{\"id\": \"Lean___Syntax___Preresolved___namespace\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Prec\":\n    [{\"id\": \"Lean___Syntax___Prec\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.NumLit\":\n    [{\"id\": \"Lean___Syntax___NumLit\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.NameLit\":\n    [{\"id\": \"Lean___Syntax___NameLit\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Level\":\n    [{\"id\": \"Lean___Syntax___Level\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Ident\":\n    [{\"id\": \"Lean___Syntax___Ident\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.HygieneInfo\":\n    [{\"id\": \"Lean___Syntax___HygieneInfo\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.Command\":\n    [{\"id\": \"Lean___Syntax___Command\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax.CharLit\":\n    [{\"id\": \"Lean___Syntax___CharLit\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Syntax\":\n    [{\"id\": \"Lean___Syntax___missing\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.SourceInfo.synthetic\":\n    [{\"id\": \"Lean___SourceInfo___original\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.SourceInfo.original\":\n    [{\"id\": \"Lean___SourceInfo___original\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.SourceInfo.none\":\n    [{\"id\": \"Lean___SourceInfo___original\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.SourceInfo\":\n    [{\"id\": \"Lean___SourceInfo___original\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.PrettyPrinter.Unexpander\":\n    [{\"id\": \"Lean___PrettyPrinter___Unexpander\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Lean.PrettyPrinter.UnexpandM\":\n    [{\"id\": \"Lean___PrettyPrinter___UnexpandM\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Lean.Parser.LeadingIdentBehavior.symbol\":\n    [{\"id\": \"Lean___Parser___LeadingIdentBehavior___default\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.LeadingIdentBehavior.default\":\n    [{\"id\": \"Lean___Parser___LeadingIdentBehavior___default\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.LeadingIdentBehavior.both\":\n    [{\"id\": \"Lean___Parser___LeadingIdentBehavior___default\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.LeadingIdentBehavior\":\n    [{\"id\": \"Lean___Parser___LeadingIdentBehavior___default\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Order.monotone\":\n    [{\"id\": \"Lean___Order___monotone\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.fix_eq\":\n    [{\"id\": \"Lean___Order___fix_eq\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.fix\":\n    [{\"id\": \"Lean___Order___fix\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.PartialOrder.rel_trans\":\n    [{\"id\": \"Lean___Order___PartialOrder___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.PartialOrder.rel_refl\":\n    [{\"id\": \"Lean___Order___PartialOrder___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.PartialOrder.rel_antisymm\":\n    [{\"id\": \"Lean___Order___PartialOrder___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.PartialOrder.rel\":\n    [{\"id\": \"Lean___Order___PartialOrder___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.PartialOrder.mk\":\n    [{\"id\": \"Lean___Order___PartialOrder___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.PartialOrder\":\n    [{\"id\": \"Lean___Order___PartialOrder___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.CCPO.toPartialOrder\":\n    [{\"id\": \"Lean___Order___CCPO___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.CCPO.mk\":\n    [{\"id\": \"Lean___Order___CCPO___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Order.CCPO\":\n    [{\"id\": \"Lean___Order___CCPO___mk\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Meta.registerSimpAttr\":\n    [{\"id\": \"Lean___Meta___registerSimpAttr\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Meta.TransparencyMode.reducible\":\n    [{\"id\": \"Lean___Meta___TransparencyMode___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.TransparencyMode.instances\":\n    [{\"id\": \"Lean___Meta___TransparencyMode___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.TransparencyMode.default\":\n    [{\"id\": \"Lean___Meta___TransparencyMode___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.TransparencyMode.all\":\n    [{\"id\": \"Lean___Meta___TransparencyMode___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.TransparencyMode\":\n    [{\"id\": \"Lean___Meta___TransparencyMode___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.SimpExtension\":\n    [{\"id\": \"Lean___Meta___SimpExtension\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Meta.Simp.neutralConfig\":\n    [{\"id\": \"Lean___Meta___Simp___neutralConfig\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.zetaUnused\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.zetaHave\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.zetaDelta\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.zeta\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.warnExponents\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.unfoldPartialApp\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.suggestions\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.singlePass\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.proj\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.mk\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.memoize\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.maxSteps\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.maxDischargeDepth\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.letToHave\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.iota\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.index\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.implicitDefEqProofs\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.ground\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.failIfUnchanged\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.etaStruct\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.eta\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.dsimp\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.decide\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.contextual\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.congrConsts\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.catchRuntime\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.bitVecOfNat\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.beta\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.autoUnfold\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config.arith\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Simp.Config\":\n    [{\"id\": \"Lean___Meta___Simp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.Rewrite.NewGoals\":\n    [{\"id\": \"Lean___Meta___Rewrite___NewGoals\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Rewrite.Config.transparency\":\n    [{\"id\": \"Lean___Meta___Rewrite___Config___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Rewrite.Config.offsetCnstrs\":\n    [{\"id\": \"Lean___Meta___Rewrite___Config___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Rewrite.Config.occs\":\n    [{\"id\": \"Lean___Meta___Rewrite___Config___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Rewrite.Config.newGoals\":\n    [{\"id\": \"Lean___Meta___Rewrite___Config___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Rewrite.Config.mk\":\n    [{\"id\": \"Lean___Meta___Rewrite___Config___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Rewrite.Config\":\n    [{\"id\": \"Lean___Meta___Rewrite___Config___mk\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Occurrences.pos\":\n    [{\"id\": \"Lean___Meta___Occurrences___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Occurrences.neg\":\n    [{\"id\": \"Lean___Meta___Occurrences___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Occurrences.all\":\n    [{\"id\": \"Lean___Meta___Occurrences___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.Occurrences\":\n    [{\"id\": \"Lean___Meta___Occurrences___all\",\n      \"data\": null,\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Meta.DSimp.Config.zetaUnused\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.zetaHave\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.zetaDelta\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.zeta\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.unfoldPartialApp\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.proj\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.mk\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.iota\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.index\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.failIfUnchanged\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.etaStruct\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.eta\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.decide\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.beta\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config.autoUnfold\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.Meta.DSimp.Config\":\n    [{\"id\": \"Lean___Meta___DSimp___Config___mk\",\n      \"data\": null,\n      \"address\": \"/The-Simplifier/Configuring-Simplification/\"}],\n    \"Lean.MacroM\":\n    [{\"id\": \"Lean___MacroM\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.withFreshMacroScope\":\n    [{\"id\": \"Lean___Macro___withFreshMacroScope\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.trace\":\n    [{\"id\": \"Lean___Macro___trace\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.throwUnsupported\":\n    [{\"id\": \"Lean___Macro___throwUnsupported\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.throwErrorAt\":\n    [{\"id\": \"Lean___Macro___throwErrorAt\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.throwError\":\n    [{\"id\": \"Lean___Macro___throwError\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.resolveNamespace\":\n    [{\"id\": \"Lean___Macro___resolveNamespace\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.resolveGlobalName\":\n    [{\"id\": \"Lean___Macro___resolveGlobalName\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.hasDecl\":\n    [{\"id\": \"Lean___Macro___hasDecl\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.getCurrNamespace\":\n    [{\"id\": \"Lean___Macro___getCurrNamespace\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.expandMacro?\":\n    [{\"id\": \"Lean___Macro___expandMacro___\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.addMacroScope\":\n    [{\"id\": \"Lean___Macro___addMacroScope\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Macro.Exception.unsupportedSyntax\":\n    [{\"id\": \"Lean___Macro___Exception___unsupportedSyntax\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.LeanOption.value\":\n    [{\"id\": \"Lean___LeanOption___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lean.LeanOption.name\":\n    [{\"id\": \"Lean___LeanOption___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lean.LeanOption.mk\":\n    [{\"id\": \"Lean___LeanOption___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lean.LeanOption\":\n    [{\"id\": \"Lean___LeanOption___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lean.Grind.ToInt.toInt_mem\":\n    [{\"id\": \"Lean___Grind___ToInt___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.ToInt.toInt_inj\":\n    [{\"id\": \"Lean___Grind___ToInt___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.ToInt.toInt\":\n    [{\"id\": \"Lean___Grind___ToInt___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.ToInt.mk\":\n    [{\"id\": \"Lean___Grind___ToInt___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.ToInt\":\n    [{\"id\": \"Lean___Grind___ToInt___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.Semiring.zero_mul\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.toMul\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.toAdd\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.right_distrib\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.pow_zero\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.pow_succ\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.one_mul\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.ofNat_succ\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.ofNat\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.nsmul\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.npow\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.natCast\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.mul_zero\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.mul_one\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.mul_assoc\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.mk\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.left_distrib\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.add_zero\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.add_comm\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring.add_assoc\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Semiring\":\n    [{\"id\": \"Lean___Grind___Semiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Ring.toSemiring\":\n    [{\"id\": \"Lean___Grind___Ring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Ring.mk\":\n    [{\"id\": \"Lean___Grind___Ring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Ring\":\n    [{\"id\": \"Lean___Grind___Ring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.OrderedRing.zero_lt_one\":\n    [{\"id\": \"Lean___Grind___OrderedRing___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedRing.toOrderedAdd\":\n    [{\"id\": \"Lean___Grind___OrderedRing___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedRing.mul_lt_mul_of_pos_left\":\n    [{\"id\": \"Lean___Grind___OrderedRing___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedRing.mk\":\n    [{\"id\": \"Lean___Grind___OrderedRing___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedRing\":\n    [{\"id\": \"Lean___Grind___OrderedRing___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedAdd.mk\":\n    [{\"id\": \"Lean___Grind___OrderedAdd___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedAdd.add_le_left_iff\":\n    [{\"id\": \"Lean___Grind___OrderedAdd___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.OrderedAdd\":\n    [{\"id\": \"Lean___Grind___OrderedAdd___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.NoNatZeroDivisors.no_nat_zero_divisors\":\n    [{\"id\": \"Lean___Grind___NoNatZeroDivisors___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.NoNatZeroDivisors.mk'\":\n    [{\"id\": \"Lean___Grind___NoNatZeroDivisors___mk___\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.NoNatZeroDivisors.mk\":\n    [{\"id\": \"Lean___Grind___NoNatZeroDivisors___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.NoNatZeroDivisors\":\n    [{\"id\": \"Lean___Grind___NoNatZeroDivisors___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.NatModule.toAddCommMonoid\":\n    [{\"id\": \"Lean___Grind___NatModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.NatModule.mk\":\n    [{\"id\": \"Lean___Grind___NatModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.NatModule\":\n    [{\"id\": \"Lean___Grind___NatModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.IsCharP.ofNat_ext_iff\":\n    [{\"id\": \"Lean___Grind___IsCharP___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.IsCharP.mk\":\n    [{\"id\": \"Lean___Grind___IsCharP___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.IsCharP\":\n    [{\"id\": \"Lean___Grind___IsCharP___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.IntModule.toAddCommGroup\":\n    [{\"id\": \"Lean___Grind___IntModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.IntModule.mk\":\n    [{\"id\": \"Lean___Grind___IntModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.IntModule\":\n    [{\"id\": \"Lean___Grind___IntModule___mk\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Arithmetic-Solver/\"}],\n    \"Lean.Grind.IntInterval.io\":\n    [{\"id\": \"Lean___Grind___IntInterval___co\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.IntInterval.ii\":\n    [{\"id\": \"Lean___Grind___IntInterval___co\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.IntInterval.co\":\n    [{\"id\": \"Lean___Grind___IntInterval___co\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.IntInterval.ci\":\n    [{\"id\": \"Lean___Grind___IntInterval___co\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.IntInterval\":\n    [{\"id\": \"Lean___Grind___IntInterval___co\",\n      \"data\": null,\n      \"address\": \"/The--grind--tactic/Linear-Integer-Arithmetic/\"}],\n    \"Lean.Grind.Field.toCommRing\":\n    [{\"id\": \"Lean___Grind___Field___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Field.mk\":\n    [{\"id\": \"Lean___Grind___Field___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.Field\":\n    [{\"id\": \"Lean___Grind___Field___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.CommSemiring.toSemiring\":\n    [{\"id\": \"Lean___Grind___CommSemiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.CommSemiring.mk\":\n    [{\"id\": \"Lean___Grind___CommSemiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.CommSemiring\":\n    [{\"id\": \"Lean___Grind___CommSemiring___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.CommRing.toRing\":\n    [{\"id\": \"Lean___Grind___CommRing___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.CommRing.mk\":\n    [{\"id\": \"Lean___Grind___CommRing___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.CommRing\":\n    [{\"id\": \"Lean___Grind___CommRing___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.AddRightCancel.mk\":\n    [{\"id\": \"Lean___Grind___AddRightCancel___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.AddRightCancel.add_right_cancel\":\n    [{\"id\": \"Lean___Grind___AddRightCancel___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Grind.AddRightCancel\":\n    [{\"id\": \"Lean___Grind___AddRightCancel___mk\",\n      \"data\": null,\n      \"address\":\n      \"/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/\"}],\n    \"Lean.Elab.registerDerivingHandler\":\n    [{\"id\": \"Lean___Elab___registerDerivingHandler\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"LawfulMonad.toLawfulApplicative\":\n    [{\"id\": \"LawfulMonad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulMonad.mk'\":\n    [{\"id\": \"LawfulMonad___mk___\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulMonad.mk\":\n    [{\"id\": \"LawfulMonad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulMonad\":\n    [{\"id\": \"LawfulMonad___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulHashable.mk\":\n    [{\"id\": \"LawfulHashable___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulHashable.hash_eq\":\n    [{\"id\": \"LawfulHashable___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulHashable\":\n    [{\"id\": \"LawfulHashable___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulGetElem.mk\":\n    [{\"id\": \"LawfulGetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulGetElem.getElem?_def\":\n    [{\"id\": \"LawfulGetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulGetElem.getElem!_def\":\n    [{\"id\": \"LawfulGetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulGetElem\":\n    [{\"id\": \"LawfulGetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulFunctor.mk\":\n    [{\"id\": \"LawfulFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulFunctor.map_const\":\n    [{\"id\": \"LawfulFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulFunctor.id_map\":\n    [{\"id\": \"LawfulFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulFunctor.comp_map\":\n    [{\"id\": \"LawfulFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulFunctor\":\n    [{\"id\": \"LawfulFunctor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulBEq.toReflBEq\":\n    [{\"id\": \"LawfulBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulBEq.mk\":\n    [{\"id\": \"LawfulBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulBEq\":\n    [{\"id\": \"LawfulBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LawfulApplicative.toLawfulFunctor\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulApplicative.seqRight_eq\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulApplicative.seqLeft_eq\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulApplicative.pure_seq\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulApplicative.mk\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"LawfulApplicative\":\n    [{\"id\": \"LawfulApplicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Laws/\"}],\n    \"Lake.getTryCache\":\n    [{\"id\": \"Lake___getTryCache\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getSharedLibPath\":\n    [{\"id\": \"Lake___getSharedLibPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getRootPackage\":\n    [{\"id\": \"Lake___getRootPackage\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getPkgUrlMap\":\n    [{\"id\": \"Lake___getPkgUrlMap\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getNoCache\":\n    [{\"id\": \"Lake___getNoCache\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanc\":\n    [{\"id\": \"Lake___getLeanc\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanSystemLibDir\":\n    [{\"id\": \"Lake___getLeanSystemLibDir\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanSysroot\":\n    [{\"id\": \"Lake___getLeanSysroot\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanSrcPath\":\n    [{\"id\": \"Lake___getLeanSrcPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanSrcDir\":\n    [{\"id\": \"Lake___getLeanSrcDir\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanSharedLib\":\n    [{\"id\": \"Lake___getLeanSharedLib\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanPath\":\n    [{\"id\": \"Lake___getLeanPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanLibDir\":\n    [{\"id\": \"Lake___getLeanLibDir\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanInstall\":\n    [{\"id\": \"Lake___getLeanInstall\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanIncludeDir\":\n    [{\"id\": \"Lake___getLeanIncludeDir\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanCc?\":\n    [{\"id\": \"Lake___getLeanCc___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanCc\":\n    [{\"id\": \"Lake___getLeanCc\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLeanAr\":\n    [{\"id\": \"Lake___getLeanAr\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLean\":\n    [{\"id\": \"Lake___getLean\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLakeSrcDir\":\n    [{\"id\": \"Lake___getLakeSrcDir\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLakeLibDir\":\n    [{\"id\": \"Lake___getLakeLibDir\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLakeInstall\":\n    [{\"id\": \"Lake___getLakeInstall\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLakeHome\":\n    [{\"id\": \"Lake___getLakeHome\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLakeEnv\":\n    [{\"id\": \"Lake___getLakeEnv\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getLake\":\n    [{\"id\": \"Lake___getLake\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getEnvSharedLibPath\":\n    [{\"id\": \"Lake___getEnvSharedLibPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getEnvLeanSrcPath\":\n    [{\"id\": \"Lake___getEnvLeanSrcPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getEnvLeanPath\":\n    [{\"id\": \"Lake___getEnvLeanPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getElanToolchain\":\n    [{\"id\": \"Lake___getElanToolchain\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getElanInstall?\":\n    [{\"id\": \"Lake___getElanInstall___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getElanHome?\":\n    [{\"id\": \"Lake___getElanHome___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getElan?\":\n    [{\"id\": \"Lake___getElan___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getAugmentedSharedLibPath\":\n    [{\"id\": \"Lake___getAugmentedSharedLibPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getAugmentedLeanSrcPath\":\n    [{\"id\": \"Lake___getAugmentedLeanSrcPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getAugmentedLeanPath\":\n    [{\"id\": \"Lake___getAugmentedLeanPath\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.getAugmentedEnv\":\n    [{\"id\": \"Lake___getAugmentedEnv\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.findPackage?\":\n    [{\"id\": \"Lake___findPackage___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.findModule?\":\n    [{\"id\": \"Lake___findModule___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.findLeanLib?\":\n    [{\"id\": \"Lake___findLeanLib___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.findLeanExe?\":\n    [{\"id\": \"Lake___findLeanExe___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.findExternLib?\":\n    [{\"id\": \"Lake___findExternLib___\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.ScriptM\":\n    [{\"id\": \"Lake___ScriptM\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Lake___ScriptM-next\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.MonadWorkspace.mk\":\n    [{\"id\": \"Lake___MonadWorkspace___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.MonadWorkspace.getWorkspace\":\n    [{\"id\": \"Lake___MonadWorkspace___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.MonadWorkspace\":\n    [{\"id\": \"Lake___MonadWorkspace___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.MonadLakeEnv\":\n    [{\"id\": \"Lake___MonadLakeEnv\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig.toLeanConfig\":\n    [{\"id\": \"Lake___LeanLibConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig.mk\":\n    [{\"id\": \"Lake___LeanLibConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig\":\n    [{\"id\": \"Lake___LeanLibConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig.toLeanConfig\":\n    [{\"id\": \"Lake___LeanExeConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig.mk\":\n    [{\"id\": \"Lake___LeanExeConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig\":\n    [{\"id\": \"Lake___LeanExeConfig___mk\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Glob.submodules\":\n    [{\"id\": \"Lake___Glob___one\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Glob.one\":\n    [{\"id\": \"Lake___Glob___one\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Glob.andSubmodules\":\n    [{\"id\": \"Lake___Glob___one\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Glob\":\n    [{\"id\": \"Lake___Glob___one\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.BuildType.release\":\n    [{\"id\": \"Lake___BuildType___debug\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.BuildType.relWithDebInfo\":\n    [{\"id\": \"Lake___BuildType___debug\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.BuildType.minSizeRel\":\n    [{\"id\": \"Lake___BuildType___debug\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.BuildType.debug\":\n    [{\"id\": \"Lake___BuildType___debug\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.BuildType\":\n    [{\"id\": \"Lake___BuildType___debug\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Backend.llvm\":\n    [{\"id\": \"Lake___Backend___c\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Backend.default\":\n    [{\"id\": \"Lake___Backend___c\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Backend.c\":\n    [{\"id\": \"Lake___Backend___c\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Backend\":\n    [{\"id\": \"Lake___Backend___c\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LT.mk\":\n    [{\"id\": \"LT___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LT.lt\":\n    [{\"id\": \"LT___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LT\":\n    [{\"id\": \"LT___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LE.mk\":\n    [{\"id\": \"LE___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LE.le\":\n    [{\"id\": \"LE___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"LE\":\n    [{\"id\": \"LE___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"IntCast.mk\":\n    [{\"id\": \"IntCast___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"IntCast.intCast\":\n    [{\"id\": \"IntCast___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"IntCast\":\n    [{\"id\": \"IntCast___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Int8.xor\":\n    [{\"id\": \"Int8___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toUInt8\":\n    [{\"id\": \"Int8___ofUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toNatClampNeg\":\n    [{\"id\": \"Int8___toNatClampNeg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toInt64\":\n    [{\"id\": \"Int8___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toInt32\":\n    [{\"id\": \"Int8___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toInt16\":\n    [{\"id\": \"Int8___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toInt\":\n    [{\"id\": \"Int8___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toISize\":\n    [{\"id\": \"Int8___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toFloat32\":\n    [{\"id\": \"Int8___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toFloat\":\n    [{\"id\": \"Int8___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.toBitVec\":\n    [{\"id\": \"Int8___toBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.sub\":\n    [{\"id\": \"Int8___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.size\":\n    [{\"id\": \"Int8___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.shiftRight\":\n    [{\"id\": \"Int8___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.shiftLeft\":\n    [{\"id\": \"Int8___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.ofUInt8\":\n    [{\"id\": \"Int8___ofUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.ofNat\":\n    [{\"id\": \"Int8___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.ofIntTruncate\":\n    [{\"id\": \"Int8___ofIntTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.ofIntLE\":\n    [{\"id\": \"Int8___ofIntLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.ofInt\":\n    [{\"id\": \"Int8___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.ofBitVec\":\n    [{\"id\": \"Int8___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.neg\":\n    [{\"id\": \"Int8___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.mul\":\n    [{\"id\": \"Int8___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.mod\":\n    [{\"id\": \"Int8___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.minValue\":\n    [{\"id\": \"Int8___minValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.maxValue\":\n    [{\"id\": \"Int8___maxValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.lt\":\n    [{\"id\": \"Int8___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.lor\":\n    [{\"id\": \"Int8___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.le\":\n    [{\"id\": \"Int8___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.land\":\n    [{\"id\": \"Int8___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.div\":\n    [{\"id\": \"Int8___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.decLt\":\n    [{\"id\": \"Int8___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.decLe\":\n    [{\"id\": \"Int8___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.decEq\":\n    [{\"id\": \"Int8___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.complement\":\n    [{\"id\": \"Int8___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.add\":\n    [{\"id\": \"Int8___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8.abs\":\n    [{\"id\": \"Int8___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int8\":\n    [{\"id\": \"Int8___ofUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.xor\":\n    [{\"id\": \"Int64___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toUInt64\":\n    [{\"id\": \"Int64___ofUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toNatClampNeg\":\n    [{\"id\": \"Int64___toNatClampNeg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toInt8\":\n    [{\"id\": \"Int64___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toInt32\":\n    [{\"id\": \"Int64___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toInt16\":\n    [{\"id\": \"Int64___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toInt\":\n    [{\"id\": \"Int64___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toISize\":\n    [{\"id\": \"Int64___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toFloat32\":\n    [{\"id\": \"Int64___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toFloat\":\n    [{\"id\": \"Int64___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.toBitVec\":\n    [{\"id\": \"Int64___toBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.sub\":\n    [{\"id\": \"Int64___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.size\":\n    [{\"id\": \"Int64___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.shiftRight\":\n    [{\"id\": \"Int64___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.shiftLeft\":\n    [{\"id\": \"Int64___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.ofUInt64\":\n    [{\"id\": \"Int64___ofUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.ofNat\":\n    [{\"id\": \"Int64___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.ofIntTruncate\":\n    [{\"id\": \"Int64___ofIntTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.ofIntLE\":\n    [{\"id\": \"Int64___ofIntLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.ofInt\":\n    [{\"id\": \"Int64___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.ofBitVec\":\n    [{\"id\": \"Int64___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.neg\":\n    [{\"id\": \"Int64___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.mul\":\n    [{\"id\": \"Int64___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.mod\":\n    [{\"id\": \"Int64___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.minValue\":\n    [{\"id\": \"Int64___minValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.maxValue\":\n    [{\"id\": \"Int64___maxValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.lt\":\n    [{\"id\": \"Int64___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.lor\":\n    [{\"id\": \"Int64___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.le\":\n    [{\"id\": \"Int64___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.land\":\n    [{\"id\": \"Int64___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.div\":\n    [{\"id\": \"Int64___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.decLt\":\n    [{\"id\": \"Int64___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.decLe\":\n    [{\"id\": \"Int64___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.decEq\":\n    [{\"id\": \"Int64___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.complement\":\n    [{\"id\": \"Int64___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.add\":\n    [{\"id\": \"Int64___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64.abs\":\n    [{\"id\": \"Int64___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int64\":\n    [{\"id\": \"Int64___ofUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.xor\":\n    [{\"id\": \"Int32___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toUInt32\":\n    [{\"id\": \"Int32___ofUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toNatClampNeg\":\n    [{\"id\": \"Int32___toNatClampNeg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toInt8\":\n    [{\"id\": \"Int32___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toInt64\":\n    [{\"id\": \"Int32___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toInt16\":\n    [{\"id\": \"Int32___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toInt\":\n    [{\"id\": \"Int32___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toISize\":\n    [{\"id\": \"Int32___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toFloat32\":\n    [{\"id\": \"Int32___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toFloat\":\n    [{\"id\": \"Int32___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.toBitVec\":\n    [{\"id\": \"Int32___toBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.sub\":\n    [{\"id\": \"Int32___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.size\":\n    [{\"id\": \"Int32___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.shiftRight\":\n    [{\"id\": \"Int32___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.shiftLeft\":\n    [{\"id\": \"Int32___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.ofUInt32\":\n    [{\"id\": \"Int32___ofUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.ofNat\":\n    [{\"id\": \"Int32___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.ofIntTruncate\":\n    [{\"id\": \"Int32___ofIntTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.ofIntLE\":\n    [{\"id\": \"Int32___ofIntLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.ofInt\":\n    [{\"id\": \"Int32___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.ofBitVec\":\n    [{\"id\": \"Int32___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.neg\":\n    [{\"id\": \"Int32___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.mul\":\n    [{\"id\": \"Int32___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.mod\":\n    [{\"id\": \"Int32___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.minValue\":\n    [{\"id\": \"Int32___minValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.maxValue\":\n    [{\"id\": \"Int32___maxValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.lt\":\n    [{\"id\": \"Int32___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.lor\":\n    [{\"id\": \"Int32___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.le\":\n    [{\"id\": \"Int32___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.land\":\n    [{\"id\": \"Int32___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.div\":\n    [{\"id\": \"Int32___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.decLt\":\n    [{\"id\": \"Int32___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.decLe\":\n    [{\"id\": \"Int32___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.decEq\":\n    [{\"id\": \"Int32___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.complement\":\n    [{\"id\": \"Int32___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.add\":\n    [{\"id\": \"Int32___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32.abs\":\n    [{\"id\": \"Int32___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int32\":\n    [{\"id\": \"Int32___ofUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.xor\":\n    [{\"id\": \"Int16___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toUInt16\":\n    [{\"id\": \"Int16___ofUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toNatClampNeg\":\n    [{\"id\": \"Int16___toNatClampNeg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toInt8\":\n    [{\"id\": \"Int16___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toInt64\":\n    [{\"id\": \"Int16___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toInt32\":\n    [{\"id\": \"Int16___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toInt\":\n    [{\"id\": \"Int16___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toISize\":\n    [{\"id\": \"Int16___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toFloat32\":\n    [{\"id\": \"Int16___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toFloat\":\n    [{\"id\": \"Int16___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.toBitVec\":\n    [{\"id\": \"Int16___toBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.sub\":\n    [{\"id\": \"Int16___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.size\":\n    [{\"id\": \"Int16___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.shiftRight\":\n    [{\"id\": \"Int16___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.shiftLeft\":\n    [{\"id\": \"Int16___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.ofUInt16\":\n    [{\"id\": \"Int16___ofUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.ofNat\":\n    [{\"id\": \"Int16___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.ofIntTruncate\":\n    [{\"id\": \"Int16___ofIntTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.ofIntLE\":\n    [{\"id\": \"Int16___ofIntLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.ofInt\":\n    [{\"id\": \"Int16___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.ofBitVec\":\n    [{\"id\": \"Int16___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.neg\":\n    [{\"id\": \"Int16___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.mul\":\n    [{\"id\": \"Int16___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.mod\":\n    [{\"id\": \"Int16___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.minValue\":\n    [{\"id\": \"Int16___minValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.maxValue\":\n    [{\"id\": \"Int16___maxValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.lt\":\n    [{\"id\": \"Int16___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.lor\":\n    [{\"id\": \"Int16___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.le\":\n    [{\"id\": \"Int16___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.land\":\n    [{\"id\": \"Int16___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.div\":\n    [{\"id\": \"Int16___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.decLt\":\n    [{\"id\": \"Int16___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.decLe\":\n    [{\"id\": \"Int16___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.decEq\":\n    [{\"id\": \"Int16___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.complement\":\n    [{\"id\": \"Int16___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.add\":\n    [{\"id\": \"Int16___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16.abs\":\n    [{\"id\": \"Int16___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int16\":\n    [{\"id\": \"Int16___ofUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"Int.toNat?\":\n    [{\"id\": \"Int___toNat___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.toNat\":\n    [{\"id\": \"Int___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.toInt8\":\n    [{\"id\": \"Int___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.toInt64\":\n    [{\"id\": \"Int___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.toInt32\":\n    [{\"id\": \"Int___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.toInt16\":\n    [{\"id\": \"Int___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.toISize\":\n    [{\"id\": \"Int___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.tmod\":\n    [{\"id\": \"Int___tmod\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.tdiv\":\n    [{\"id\": \"Int___tdiv\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.subNatNat\":\n    [{\"id\": \"Int___subNatNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.sub\":\n    [{\"id\": \"Int___sub\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.sign\":\n    [{\"id\": \"Int___sign\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.shiftRight\":\n    [{\"id\": \"Int___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.repr\":\n    [{\"id\": \"Int___repr\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.pow\":\n    [{\"id\": \"Int___pow\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.ofNat\":\n    [{\"id\": \"Int___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.not\":\n    [{\"id\": \"Int___not\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.negSucc\":\n    [{\"id\": \"Int___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.negOfNat\":\n    [{\"id\": \"Int___negOfNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.neg\":\n    [{\"id\": \"Int___neg\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.natAbs\":\n    [{\"id\": \"Int___natAbs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.mul\":\n    [{\"id\": \"Int___mul\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.lt\":\n    [{\"id\": \"Int___lt\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.le\":\n    [{\"id\": \"Int___le\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.lcm\":\n    [{\"id\": \"Int___lcm\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.gcd\":\n    [{\"id\": \"Int___gcd\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.fmod\":\n    [{\"id\": \"Int___fmod\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.fdiv\":\n    [{\"id\": \"Int___fdiv\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.emod\":\n    [{\"id\": \"Int___emod\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.ediv\":\n    [{\"id\": \"Int___ediv\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.decEq\":\n    [{\"id\": \"Int___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.cast\":\n    [{\"id\": \"Int___cast\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Int.bmod\":\n    [{\"id\": \"Int___bmod\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.bdiv\":\n    [{\"id\": \"Int___bdiv\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int.add\":\n    [{\"id\": \"Int___add\", \"data\": null, \"address\": \"/Basic-Types/Integers/\"}],\n    \"Int\":\n    [{\"id\": \"Int___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Inhabited.mk\":\n    [{\"id\": \"Inhabited___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Inhabited.default\":\n    [{\"id\": \"Inhabited___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Inhabited\":\n    [{\"id\": \"Inhabited___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Iff.mpr\":\n    [{\"id\": \"Iff___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Iff.mp\":\n    [{\"id\": \"Iff___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Iff.intro\":\n    [{\"id\": \"Iff___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Iff.elim\":\n    [{\"id\": \"Iff___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Iff\":\n    [{\"id\": \"Iff___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Id.run\":\n    [{\"id\": \"Id___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Id\":\n    [{\"id\": \"Id\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ISize.xor\":\n    [{\"id\": \"ISize___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toUSize\":\n    [{\"id\": \"ISize___ofUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toNatClampNeg\":\n    [{\"id\": \"ISize___toNatClampNeg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toInt8\":\n    [{\"id\": \"ISize___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toInt64\":\n    [{\"id\": \"ISize___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toInt32\":\n    [{\"id\": \"ISize___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toInt16\":\n    [{\"id\": \"ISize___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toInt\":\n    [{\"id\": \"ISize___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toFloat32\":\n    [{\"id\": \"ISize___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toFloat\":\n    [{\"id\": \"ISize___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.toBitVec\":\n    [{\"id\": \"ISize___toBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.sub\":\n    [{\"id\": \"ISize___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.size\":\n    [{\"id\": \"ISize___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.shiftRight\":\n    [{\"id\": \"ISize___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.shiftLeft\":\n    [{\"id\": \"ISize___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.ofUSize\":\n    [{\"id\": \"ISize___ofUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.ofNat\":\n    [{\"id\": \"ISize___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.ofIntTruncate\":\n    [{\"id\": \"ISize___ofIntTruncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.ofIntLE\":\n    [{\"id\": \"ISize___ofIntLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.ofInt\":\n    [{\"id\": \"ISize___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.ofBitVec\":\n    [{\"id\": \"ISize___ofBitVec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.neg\":\n    [{\"id\": \"ISize___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.mul\":\n    [{\"id\": \"ISize___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.mod\":\n    [{\"id\": \"ISize___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.minValue\":\n    [{\"id\": \"ISize___minValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.maxValue\":\n    [{\"id\": \"ISize___maxValue\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.lt\":\n    [{\"id\": \"ISize___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.lor\":\n    [{\"id\": \"ISize___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.le\":\n    [{\"id\": \"ISize___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.land\":\n    [{\"id\": \"ISize___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.div\":\n    [{\"id\": \"ISize___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.decLt\":\n    [{\"id\": \"ISize___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.decLe\":\n    [{\"id\": \"ISize___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.decEq\":\n    [{\"id\": \"ISize___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.complement\":\n    [{\"id\": \"ISize___complement\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.add\":\n    [{\"id\": \"ISize___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize.abs\":\n    [{\"id\": \"ISize___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"ISize\":\n    [{\"id\": \"ISize___ofUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Fixed-Precision-Integers/\"}],\n    \"IO.withStdout\":\n    [{\"id\": \"IO___withStdout\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.withStdin\":\n    [{\"id\": \"IO___withStdin\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.withStderr\":\n    [{\"id\": \"IO___withStderr\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.waitAny\":\n    [{\"id\": \"IO___waitAny\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.wait\":\n    [{\"id\": \"IO___wait\", \"data\": null, \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.userError\":\n    [{\"id\": \"IO___userError\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.toEIO\":\n    [{\"id\": \"IO___toEIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.sleep\":\n    [{\"id\": \"IO___sleep\", \"data\": null, \"address\": \"/IO/Timing/\"}],\n    \"IO.setStdout\":\n    [{\"id\": \"IO___setStdout\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.setStdin\":\n    [{\"id\": \"IO___setStdin\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.setStderr\":\n    [{\"id\": \"IO___setStderr\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.setRandSeed\":\n    [{\"id\": \"IO___setRandSeed\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"IO.setAccessRights\":\n    [{\"id\": \"IO___setAccessRights\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.rand\":\n    [{\"id\": \"IO___rand\", \"data\": null, \"address\": \"/IO/Random-Numbers/\"}],\n    \"IO.println\":\n    [{\"id\": \"IO___println\", \"data\": null, \"address\": \"/IO/Console-Output/\"}],\n    \"IO.print\":\n    [{\"id\": \"IO___print\", \"data\": null, \"address\": \"/IO/Console-Output/\"}],\n    \"IO.ofExcept\":\n    [{\"id\": \"IO___ofExcept\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.monoNanosNow\":\n    [{\"id\": \"IO___monoNanosNow\", \"data\": null, \"address\": \"/IO/Timing/\"}],\n    \"IO.monoMsNow\":\n    [{\"id\": \"IO___monoMsNow\", \"data\": null, \"address\": \"/IO/Timing/\"}],\n    \"IO.mkRef\":\n    [{\"id\": \"IO___mkRef\",\n      \"data\": null,\n      \"address\": \"/IO/Mutable-References/\"}],\n    \"IO.mapTasks\":\n    [{\"id\": \"IO___mapTasks\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.mapTask\":\n    [{\"id\": \"IO___mapTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.lazyPure\":\n    [{\"id\": \"IO___lazyPure\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.iterate\":\n    [{\"id\": \"IO___iterate\",\n      \"data\": null,\n      \"address\": \"/IO/Control-Structures/\"}],\n    \"IO.hasFinished\":\n    [{\"id\": \"IO___hasFinished\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.getTaskState\":\n    [{\"id\": \"IO___getTaskState\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.getTID\":\n    [{\"id\": \"IO___getTID\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.getStdout\":\n    [{\"id\": \"IO___getStdout\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.getStdin\":\n    [{\"id\": \"IO___getStdin\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.getStderr\":\n    [{\"id\": \"IO___getStderr\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.getRandomBytes\":\n    [{\"id\": \"IO___getRandomBytes\",\n      \"data\": null,\n      \"address\": \"/IO/Random-Numbers/\"}],\n    \"IO.getNumHeartbeats\":\n    [{\"id\": \"IO___getNumHeartbeats\", \"data\": null, \"address\": \"/IO/Timing/\"}],\n    \"IO.getEnv\":\n    [{\"id\": \"IO___getEnv\",\n      \"data\": null,\n      \"address\": \"/IO/Environment-Variables/\"}],\n    \"IO.eprintln\":\n    [{\"id\": \"IO___eprintln\", \"data\": null, \"address\": \"/IO/Console-Output/\"}],\n    \"IO.eprint\":\n    [{\"id\": \"IO___eprint\", \"data\": null, \"address\": \"/IO/Console-Output/\"}],\n    \"IO.currentDir\":\n    [{\"id\": \"IO___currentDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.checkCanceled\":\n    [{\"id\": \"IO___checkCanceled\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.chainTask\":\n    [{\"id\": \"IO___chainTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.cancel\":\n    [{\"id\": \"IO___cancel\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.bindTask\":\n    [{\"id\": \"IO___bindTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.asTask\":\n    [{\"id\": \"IO___asTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.appPath\":\n    [{\"id\": \"IO___appPath\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.appDir\":\n    [{\"id\": \"IO___appDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.addHeartbeats\":\n    [{\"id\": \"IO___addHeartbeats\", \"data\": null, \"address\": \"/IO/Timing/\"}],\n    \"IO.TaskState.waiting\":\n    [{\"id\": \"IO___TaskState___waiting\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.TaskState.running\":\n    [{\"id\": \"IO___TaskState___waiting\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.TaskState.finished\":\n    [{\"id\": \"IO___TaskState___waiting\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.TaskState\":\n    [{\"id\": \"IO___TaskState___waiting\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Ref\":\n    [{\"id\": \"IO___Ref\", \"data\": null, \"address\": \"/IO/Mutable-References/\"}],\n    \"IO.Promise.resultD\":\n    [{\"id\": \"IO___Promise___resultD\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Promise.result?\":\n    [{\"id\": \"IO___Promise___result___\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Promise.result!\":\n    [{\"id\": \"IO___Promise___result___-next\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Promise.resolve\":\n    [{\"id\": \"IO___Promise___resolve\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Promise.new\":\n    [{\"id\": \"IO___Promise___new\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Promise.isResolved\":\n    [{\"id\": \"IO___Promise___isResolved\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Promise\":\n    [{\"id\": \"IO___Promise\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"IO.Process.spawn\":\n    [{\"id\": \"IO___Process___spawn\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.setCurrentDir\":\n    [{\"id\": \"IO___Process___setCurrentDir\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.run\":\n    [{\"id\": \"IO___Process___run\", \"data\": null, \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.output\":\n    [{\"id\": \"IO___Process___output\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.getPID\":\n    [{\"id\": \"IO___Process___getPID\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.getCurrentDir\":\n    [{\"id\": \"IO___Process___getCurrentDir\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.exit\":\n    [{\"id\": \"IO___Process___exit\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.StdioConfig.stdout\":\n    [{\"id\": \"IO___Process___StdioConfig___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.StdioConfig.stdin\":\n    [{\"id\": \"IO___Process___StdioConfig___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.StdioConfig.stderr\":\n    [{\"id\": \"IO___Process___StdioConfig___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.StdioConfig.mk\":\n    [{\"id\": \"IO___Process___StdioConfig___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.StdioConfig\":\n    [{\"id\": \"IO___Process___StdioConfig___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Stdio.toHandleType\":\n    [{\"id\": \"IO___Process___Stdio___toHandleType\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Stdio.piped\":\n    [{\"id\": \"IO___Process___Stdio___piped\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Stdio.null\":\n    [{\"id\": \"IO___Process___Stdio___piped\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Stdio.inherit\":\n    [{\"id\": \"IO___Process___Stdio___piped\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Stdio\":\n    [{\"id\": \"IO___Process___Stdio___piped\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.SpawnArgs.toStdioConfig\":\n    [{\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.SpawnArgs.mk\":\n    [{\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.SpawnArgs.cwd\":\n    [{\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.SpawnArgs.cmd\":\n    [{\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.SpawnArgs.args\":\n    [{\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.SpawnArgs\":\n    [{\"id\": \"IO___Process___SpawnArgs___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Output.stdout\":\n    [{\"id\": \"IO___Process___Output___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Output.stderr\":\n    [{\"id\": \"IO___Process___Output___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Output.mk\":\n    [{\"id\": \"IO___Process___Output___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Output.exitCode\":\n    [{\"id\": \"IO___Process___Output___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Output\":\n    [{\"id\": \"IO___Process___Output___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.wait\":\n    [{\"id\": \"IO___Process___Child___wait\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.tryWait\":\n    [{\"id\": \"IO___Process___Child___tryWait\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.takeStdin\":\n    [{\"id\": \"IO___Process___Child___takeStdin\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.stdout\":\n    [{\"id\": \"IO___Process___Child___stdin\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.stdin\":\n    [{\"id\": \"IO___Process___Child___stdin\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.stderr\":\n    [{\"id\": \"IO___Process___Child___stdin\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child.kill\":\n    [{\"id\": \"IO___Process___Child___kill\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.Process.Child\":\n    [{\"id\": \"IO___Process___Child___stdin\",\n      \"data\": null,\n      \"address\": \"/IO/Processes/\"}],\n    \"IO.FileRight.user\":\n    [{\"id\": \"IO___FileRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FileRight.other\":\n    [{\"id\": \"IO___FileRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FileRight.mk\":\n    [{\"id\": \"IO___FileRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FileRight.group\":\n    [{\"id\": \"IO___FileRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FileRight.flags\":\n    [{\"id\": \"IO___FileRight___flags\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FileRight\":\n    [{\"id\": \"IO___FileRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.writeFile\":\n    [{\"id\": \"IO___FS___writeFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.writeBinFile\":\n    [{\"id\": \"IO___FS___writeBinFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.withTempFile\":\n    [{\"id\": \"IO___FS___withTempFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.withTempDir\":\n    [{\"id\": \"IO___FS___withTempDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.withIsolatedStreams\":\n    [{\"id\": \"IO___FS___withIsolatedStreams\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.withFile\":\n    [{\"id\": \"IO___FS___withFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.rename\":\n    [{\"id\": \"IO___FS___rename\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.removeFile\":\n    [{\"id\": \"IO___FS___removeFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.removeDirAll\":\n    [{\"id\": \"IO___FS___removeDirAll\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.removeDir\":\n    [{\"id\": \"IO___FS___removeDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.realPath\":\n    [{\"id\": \"IO___FS___realPath\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.readFile\":\n    [{\"id\": \"IO___FS___readFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.readBinFile\":\n    [{\"id\": \"IO___FS___readBinFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.lines\":\n    [{\"id\": \"IO___FS___lines\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.createTempFile\":\n    [{\"id\": \"IO___FS___createTempFile\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.createTempDir\":\n    [{\"id\": \"IO___FS___createTempDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.createDirAll\":\n    [{\"id\": \"IO___FS___createDirAll\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.createDir\":\n    [{\"id\": \"IO___FS___createDir\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.write\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.read\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.putStrLn\":\n    [{\"id\": \"IO___FS___Stream___putStrLn\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.putStr\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.ofHandle\":\n    [{\"id\": \"IO___FS___Stream___ofHandle\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.ofBuffer\":\n    [{\"id\": \"IO___FS___Stream___ofBuffer\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.mk\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.isTty\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.getLine\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.flush\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.Buffer.pos\":\n    [{\"id\": \"IO___FS___Stream___Buffer___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.Buffer.mk\":\n    [{\"id\": \"IO___FS___Stream___Buffer___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.Buffer.data\":\n    [{\"id\": \"IO___FS___Stream___Buffer___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream.Buffer\":\n    [{\"id\": \"IO___FS___Stream___Buffer___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Stream\":\n    [{\"id\": \"IO___FS___Stream___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Mode.writeNew\":\n    [{\"id\": \"IO___FS___Mode___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Mode.write\":\n    [{\"id\": \"IO___FS___Mode___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Mode.readWrite\":\n    [{\"id\": \"IO___FS___Mode___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Mode.read\":\n    [{\"id\": \"IO___FS___Mode___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Mode.append\":\n    [{\"id\": \"IO___FS___Mode___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Mode\":\n    [{\"id\": \"IO___FS___Mode___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Metadata.type\":\n    [{\"id\": \"IO___FS___Metadata___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Metadata.modified\":\n    [{\"id\": \"IO___FS___Metadata___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Metadata.mk\":\n    [{\"id\": \"IO___FS___Metadata___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Metadata.byteSize\":\n    [{\"id\": \"IO___FS___Metadata___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Metadata.accessed\":\n    [{\"id\": \"IO___FS___Metadata___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Metadata\":\n    [{\"id\": \"IO___FS___Metadata___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.write\":\n    [{\"id\": \"IO___FS___Handle___write\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.unlock\":\n    [{\"id\": \"IO___FS___Handle___unlock\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.tryLock\":\n    [{\"id\": \"IO___FS___Handle___tryLock\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.truncate\":\n    [{\"id\": \"IO___FS___Handle___truncate\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.rewind\":\n    [{\"id\": \"IO___FS___Handle___rewind\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.readToEnd\":\n    [{\"id\": \"IO___FS___Handle___readToEnd\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.readBinToEndInto\":\n    [{\"id\": \"IO___FS___Handle___readBinToEndInto\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.readBinToEnd\":\n    [{\"id\": \"IO___FS___Handle___readBinToEnd\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.read\":\n    [{\"id\": \"IO___FS___Handle___read\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.putStrLn\":\n    [{\"id\": \"IO___FS___Handle___putStrLn\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.putStr\":\n    [{\"id\": \"IO___FS___Handle___putStr\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.mk\":\n    [{\"id\": \"IO___FS___Handle___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.lock\":\n    [{\"id\": \"IO___FS___Handle___lock\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.isTty\":\n    [{\"id\": \"IO___FS___Handle___isTty\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.getLine\":\n    [{\"id\": \"IO___FS___Handle___getLine\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle.flush\":\n    [{\"id\": \"IO___FS___Handle___flush\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.Handle\":\n    [{\"id\": \"IO___FS___Handle\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.DirEntry.root\":\n    [{\"id\": \"IO___FS___DirEntry___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.DirEntry.path\":\n    [{\"id\": \"IO___FS___DirEntry___path\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.DirEntry.mk\":\n    [{\"id\": \"IO___FS___DirEntry___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.DirEntry.fileName\":\n    [{\"id\": \"IO___FS___DirEntry___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.FS.DirEntry\":\n    [{\"id\": \"IO___FS___DirEntry___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.Error.userError\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.unsupportedOperation\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.unsatisfiedConstraints\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.unexpectedEof\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.toString\":\n    [{\"id\": \"IO___Error___toString\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.timeExpired\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.resourceVanished\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.resourceExhausted\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.resourceBusy\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.protocolError\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.permissionDenied\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.otherError\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.noSuchThing\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.noFileOrDirectory\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.invalidArgument\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.interrupted\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.inappropriateType\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.illegalOperation\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.hardwareFault\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error.alreadyExists\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.Error\":\n    [{\"id\": \"IO___Error___alreadyExists\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"IO.AccessRight.write\":\n    [{\"id\": \"IO___AccessRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.AccessRight.read\":\n    [{\"id\": \"IO___AccessRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.AccessRight.mk\":\n    [{\"id\": \"IO___AccessRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.AccessRight.flags\":\n    [{\"id\": \"IO___AccessRight___flags\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.AccessRight.execution\":\n    [{\"id\": \"IO___AccessRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO.AccessRight\":\n    [{\"id\": \"IO___AccessRight___mk\",\n      \"data\": null,\n      \"address\": \"/IO/Files___-File-Handles___-and-Streams/\"}],\n    \"IO\": [{\"id\": \"IO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"HomogeneousPow.pow\":\n    [{\"id\": \"HomogeneousPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HomogeneousPow.mk\":\n    [{\"id\": \"HomogeneousPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HomogeneousPow\":\n    [{\"id\": \"HomogeneousPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Hashable.mk\":\n    [{\"id\": \"Hashable___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Hashable.hash\":\n    [{\"id\": \"Hashable___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Hashable\":\n    [{\"id\": \"Hashable___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HasEquiv.mk\":\n    [{\"id\": \"HasEquiv___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"HasEquiv.Equiv\":\n    [{\"id\": \"HasEquiv___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"HasEquiv\":\n    [{\"id\": \"HasEquiv___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"HXor.mk\":\n    [{\"id\": \"HXor___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HXor.hXor\":\n    [{\"id\": \"HXor___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HXor\":\n    [{\"id\": \"HXor___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HSub.mk\":\n    [{\"id\": \"HSub___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HSub.hSub\":\n    [{\"id\": \"HSub___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HSub\":\n    [{\"id\": \"HSub___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HShiftRight.mk\":\n    [{\"id\": \"HShiftRight___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HShiftRight.hShiftRight\":\n    [{\"id\": \"HShiftRight___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HShiftRight\":\n    [{\"id\": \"HShiftRight___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HShiftLeft.mk\":\n    [{\"id\": \"HShiftLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HShiftLeft.hShiftLeft\":\n    [{\"id\": \"HShiftLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HShiftLeft\":\n    [{\"id\": \"HShiftLeft___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HPow.mk\":\n    [{\"id\": \"HPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HPow.hPow\":\n    [{\"id\": \"HPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HPow\":\n    [{\"id\": \"HPow___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HOr.mk\":\n    [{\"id\": \"HOr___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HOr.hOr\":\n    [{\"id\": \"HOr___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HOr\":\n    [{\"id\": \"HOr___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HMul.mk\":\n    [{\"id\": \"HMul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HMul.hMul\":\n    [{\"id\": \"HMul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HMul\":\n    [{\"id\": \"HMul___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HMod.mk\":\n    [{\"id\": \"HMod___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HMod.hMod\":\n    [{\"id\": \"HMod___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HMod\":\n    [{\"id\": \"HMod___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HEq.subst\":\n    [{\"id\": \"HEq___subst\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HEq.rfl\":\n    [{\"id\": \"HEq___rfl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HEq.refl\":\n    [{\"id\": \"HEq___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HEq.ndrecOn\":\n    [{\"id\": \"HEq___ndrecOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HEq.ndrec\":\n    [{\"id\": \"HEq___ndrec\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HEq.elim\":\n    [{\"id\": \"HEq___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HEq\":\n    [{\"id\": \"HEq___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"HDiv.mk\":\n    [{\"id\": \"HDiv___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HDiv.hDiv\":\n    [{\"id\": \"HDiv___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HDiv\":\n    [{\"id\": \"HDiv___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAppend.mk\":\n    [{\"id\": \"HAppend___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAppend.hAppend\":\n    [{\"id\": \"HAppend___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAppend\":\n    [{\"id\": \"HAppend___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAnd.mk\":\n    [{\"id\": \"HAnd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAnd.hAnd\":\n    [{\"id\": \"HAnd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAnd\":\n    [{\"id\": \"HAnd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAdd.mk\":\n    [{\"id\": \"HAdd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAdd.hAdd\":\n    [{\"id\": \"HAdd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"HAdd\":\n    [{\"id\": \"HAdd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem?.toGetElem\":\n    [{\"id\": \"GetElem______mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem?.mk\":\n    [{\"id\": \"GetElem______mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem?.getElem?\":\n    [{\"id\": \"GetElem______mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem?\":\n    [{\"id\": \"GetElem______mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem.mk\":\n    [{\"id\": \"GetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem.getElem\":\n    [{\"id\": \"GetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"GetElem\":\n    [{\"id\": \"GetElem___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Functor.mk\":\n    [{\"id\": \"Functor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Functor.mapRev\":\n    [{\"id\": \"Functor___mapRev\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"Functor.mapConst\":\n    [{\"id\": \"Functor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Functor.map\":\n    [{\"id\": \"Functor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Functor.discard\":\n    [{\"id\": \"Functor___discard\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"Functor\":\n    [{\"id\": \"Functor___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Function.uncurry\":\n    [{\"id\": \"Function___uncurry\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.curry\":\n    [{\"id\": \"Function___curry\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.const\":\n    [{\"id\": \"Function___const\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.comp\":\n    [{\"id\": \"Function___comp\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.Surjective\":\n    [{\"id\": \"Function___Surjective\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.RightInverse\":\n    [{\"id\": \"Function___RightInverse\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.LeftInverse\":\n    [{\"id\": \"Function___LeftInverse\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.Injective\":\n    [{\"id\": \"Function___Injective\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.HasRightInverse\":\n    [{\"id\": \"Function___HasRightInverse\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"Function.HasLeftInverse\":\n    [{\"id\": \"Function___HasLeftInverse\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Functions/\"}],\n    \"ForM.mk\":\n    [{\"id\": \"ForM___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForM.forM\":\n    [{\"id\": \"ForM___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForM.forIn\":\n    [{\"id\": \"ForM___forIn\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForM\":\n    [{\"id\": \"ForM___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForInStep.yield\":\n    [{\"id\": \"ForInStep___done\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForInStep.value\":\n    [{\"id\": \"ForInStep___value\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForInStep.done\":\n    [{\"id\": \"ForInStep___done\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForInStep\":\n    [{\"id\": \"ForInStep___done\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForIn.mk\":\n    [{\"id\": \"ForIn___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForIn.forIn\":\n    [{\"id\": \"ForIn___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForIn'.mk\":\n    [{\"id\": \"ForIn______mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForIn'.forIn'\":\n    [{\"id\": \"ForIn______mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForIn'\":\n    [{\"id\": \"ForIn______mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"ForIn\":\n    [{\"id\": \"ForIn___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Float32.toUSize\":\n    [{\"id\": \"Float32___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toUInt8\":\n    [{\"id\": \"Float32___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toUInt64\":\n    [{\"id\": \"Float32___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toUInt32\":\n    [{\"id\": \"Float32___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toUInt16\":\n    [{\"id\": \"Float32___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toString\":\n    [{\"id\": \"Float32___toString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toInt8\":\n    [{\"id\": \"Float32___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toInt64\":\n    [{\"id\": \"Float32___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toInt32\":\n    [{\"id\": \"Float32___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toInt16\":\n    [{\"id\": \"Float32___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toISize\":\n    [{\"id\": \"Float32___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toFloat\":\n    [{\"id\": \"Float32___toFloat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.toBits\":\n    [{\"id\": \"Float32___toBits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.tanh\":\n    [{\"id\": \"Float32___tanh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.tan\":\n    [{\"id\": \"Float32___tan\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.sub\":\n    [{\"id\": \"Float32___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.sqrt\":\n    [{\"id\": \"Float32___sqrt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.sinh\":\n    [{\"id\": \"Float32___sinh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.sin\":\n    [{\"id\": \"Float32___sin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.scaleB\":\n    [{\"id\": \"Float32___scaleB\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.round\":\n    [{\"id\": \"Float32___round\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.pow\":\n    [{\"id\": \"Float32___pow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.ofScientific\":\n    [{\"id\": \"Float32___ofScientific\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.ofNat\":\n    [{\"id\": \"Float32___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.ofInt\":\n    [{\"id\": \"Float32___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.ofBits\":\n    [{\"id\": \"Float32___ofBits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.ofBinaryScientific\":\n    [{\"id\": \"Float32___ofBinaryScientific\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.neg\":\n    [{\"id\": \"Float32___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.mul\":\n    [{\"id\": \"Float32___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.lt\":\n    [{\"id\": \"Float32___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.log2\":\n    [{\"id\": \"Float32___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.log10\":\n    [{\"id\": \"Float32___log10\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.log\":\n    [{\"id\": \"Float32___log\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.le\":\n    [{\"id\": \"Float32___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.isNaN\":\n    [{\"id\": \"Float32___isNaN\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.isInf\":\n    [{\"id\": \"Float32___isInf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.isFinite\":\n    [{\"id\": \"Float32___isFinite\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.frExp\":\n    [{\"id\": \"Float32___frExp\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.floor\":\n    [{\"id\": \"Float32___floor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.exp2\":\n    [{\"id\": \"Float32___exp2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.exp\":\n    [{\"id\": \"Float32___exp\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.div\":\n    [{\"id\": \"Float32___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.decLt\":\n    [{\"id\": \"Float32___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.decLe\":\n    [{\"id\": \"Float32___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.cosh\":\n    [{\"id\": \"Float32___cosh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.cos\":\n    [{\"id\": \"Float32___cos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.ceil\":\n    [{\"id\": \"Float32___ceil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.cbrt\":\n    [{\"id\": \"Float32___cbrt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.beq\":\n    [{\"id\": \"Float32___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.atanh\":\n    [{\"id\": \"Float32___atanh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.atan2\":\n    [{\"id\": \"Float32___atan2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.atan\":\n    [{\"id\": \"Float32___atan\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.asinh\":\n    [{\"id\": \"Float32___asinh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.asin\":\n    [{\"id\": \"Float32___asin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.add\":\n    [{\"id\": \"Float32___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.acosh\":\n    [{\"id\": \"Float32___acosh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.acos\":\n    [{\"id\": \"Float32___acos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32.abs\":\n    [{\"id\": \"Float32___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float32\":\n    [{\"id\": \"Float32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toUSize\":\n    [{\"id\": \"Float___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toUInt8\":\n    [{\"id\": \"Float___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toUInt64\":\n    [{\"id\": \"Float___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toUInt32\":\n    [{\"id\": \"Float___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toUInt16\":\n    [{\"id\": \"Float___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toString\":\n    [{\"id\": \"Float___toString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toInt8\":\n    [{\"id\": \"Float___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toInt64\":\n    [{\"id\": \"Float___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toInt32\":\n    [{\"id\": \"Float___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toInt16\":\n    [{\"id\": \"Float___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toISize\":\n    [{\"id\": \"Float___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toFloat32\":\n    [{\"id\": \"Float___toFloat32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.toBits\":\n    [{\"id\": \"Float___toBits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.tanh\":\n    [{\"id\": \"Float___tanh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.tan\":\n    [{\"id\": \"Float___tan\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.sub\":\n    [{\"id\": \"Float___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.sqrt\":\n    [{\"id\": \"Float___sqrt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.sinh\":\n    [{\"id\": \"Float___sinh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.sin\":\n    [{\"id\": \"Float___sin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.scaleB\":\n    [{\"id\": \"Float___scaleB\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.round\":\n    [{\"id\": \"Float___round\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.pow\":\n    [{\"id\": \"Float___pow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.ofScientific\":\n    [{\"id\": \"Float___ofScientific\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.ofNat\":\n    [{\"id\": \"Float___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.ofInt\":\n    [{\"id\": \"Float___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.ofBits\":\n    [{\"id\": \"Float___ofBits\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.ofBinaryScientific\":\n    [{\"id\": \"Float___ofBinaryScientific\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.neg\":\n    [{\"id\": \"Float___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.mul\":\n    [{\"id\": \"Float___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.lt\":\n    [{\"id\": \"Float___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.log2\":\n    [{\"id\": \"Float___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.log10\":\n    [{\"id\": \"Float___log10\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.log\":\n    [{\"id\": \"Float___log\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.le\":\n    [{\"id\": \"Float___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.isNaN\":\n    [{\"id\": \"Float___isNaN\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.isInf\":\n    [{\"id\": \"Float___isInf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.isFinite\":\n    [{\"id\": \"Float___isFinite\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.frExp\":\n    [{\"id\": \"Float___frExp\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.floor\":\n    [{\"id\": \"Float___floor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.exp2\":\n    [{\"id\": \"Float___exp2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.exp\":\n    [{\"id\": \"Float___exp\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.div\":\n    [{\"id\": \"Float___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.decLt\":\n    [{\"id\": \"Float___decLt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.decLe\":\n    [{\"id\": \"Float___decLe\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.cosh\":\n    [{\"id\": \"Float___cosh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.cos\":\n    [{\"id\": \"Float___cos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.ceil\":\n    [{\"id\": \"Float___ceil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.cbrt\":\n    [{\"id\": \"Float___cbrt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.beq\":\n    [{\"id\": \"Float___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.atanh\":\n    [{\"id\": \"Float___atanh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.atan2\":\n    [{\"id\": \"Float___atan2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.atan\":\n    [{\"id\": \"Float___atan\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.asinh\":\n    [{\"id\": \"Float___asinh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.asin\":\n    [{\"id\": \"Float___asin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.add\":\n    [{\"id\": \"Float___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.acosh\":\n    [{\"id\": \"Float___acosh\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.acos\":\n    [{\"id\": \"Float___acos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float.abs\":\n    [{\"id\": \"Float___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Float\":\n    [{\"id\": \"Float-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Floating-Point-Numbers/\"}],\n    \"Fin.xor\":\n    [{\"id\": \"Fin___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.val\":\n    [{\"id\": \"Fin___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.toNat\":\n    [{\"id\": \"Fin___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.succRecOn\":\n    [{\"id\": \"Fin___succRecOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.succRec\":\n    [{\"id\": \"Fin___succRec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.succ\":\n    [{\"id\": \"Fin___succ\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.subNat\":\n    [{\"id\": \"Fin___subNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.sub\":\n    [{\"id\": \"Fin___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.shiftRight\":\n    [{\"id\": \"Fin___shiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.shiftLeft\":\n    [{\"id\": \"Fin___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.reverseInduction\":\n    [{\"id\": \"Fin___reverseInduction\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.rev\":\n    [{\"id\": \"Fin___rev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.pred\":\n    [{\"id\": \"Fin___pred\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.ofNat\":\n    [{\"id\": \"Fin___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.natAdd\":\n    [{\"id\": \"Fin___natAdd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.mul\":\n    [{\"id\": \"Fin___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.modn\":\n    [{\"id\": \"Fin___modn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.mod\":\n    [{\"id\": \"Fin___mod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.mk\":\n    [{\"id\": \"Fin___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.lor\":\n    [{\"id\": \"Fin___lor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.log2\":\n    [{\"id\": \"Fin___log2\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.lastCases\":\n    [{\"id\": \"Fin___lastCases\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.last\":\n    [{\"id\": \"Fin___last\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.land\":\n    [{\"id\": \"Fin___land\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.isLt\":\n    [{\"id\": \"Fin___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.inductionOn\":\n    [{\"id\": \"Fin___inductionOn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.induction\":\n    [{\"id\": \"Fin___induction\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.hIterateFrom\":\n    [{\"id\": \"Fin___hIterateFrom\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.hIterate\":\n    [{\"id\": \"Fin___hIterate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.foldrM\":\n    [{\"id\": \"Fin___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.foldr\":\n    [{\"id\": \"Fin___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.foldlM\":\n    [{\"id\": \"Fin___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.foldl\":\n    [{\"id\": \"Fin___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.elim0\":\n    [{\"id\": \"Fin___elim0\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.div\":\n    [{\"id\": \"Fin___div\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.castSucc\":\n    [{\"id\": \"Fin___castSucc\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.castLT\":\n    [{\"id\": \"Fin___castLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.castLE\":\n    [{\"id\": \"Fin___castLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.castAdd\":\n    [{\"id\": \"Fin___castAdd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.cast\":\n    [{\"id\": \"Fin___cast\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.cases\":\n    [{\"id\": \"Fin___cases\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.addNat\":\n    [{\"id\": \"Fin___addNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.addCases\":\n    [{\"id\": \"Fin___addCases\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin.add\":\n    [{\"id\": \"Fin___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"Fin\":\n    [{\"id\": \"Fin___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Finite-Natural-Numbers/\"}],\n    \"False.elim\":\n    [{\"id\": \"False___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"False\":\n    [{\"id\": \"False\", \"data\": null, \"address\": \"/Basic-Propositions/Truth/\"}],\n    \"Exists.intro\":\n    [{\"id\": \"Exists___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Exists.choose\":\n    [{\"id\": \"Exists___choose\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Exists\":\n    [{\"id\": \"Exists___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"ExceptT.tryCatch\":\n    [{\"id\": \"ExceptT___tryCatch\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.run\":\n    [{\"id\": \"ExceptT___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.pure\":\n    [{\"id\": \"ExceptT___pure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.mk\":\n    [{\"id\": \"ExceptT___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.map\":\n    [{\"id\": \"ExceptT___map\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.lift\":\n    [{\"id\": \"ExceptT___lift\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.bindCont\":\n    [{\"id\": \"ExceptT___bindCont\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.bind\":\n    [{\"id\": \"ExceptT___bind\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT.adapt\":\n    [{\"id\": \"ExceptT___adapt\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptT\":\n    [{\"id\": \"ExceptT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptCpsT.runK\":\n    [{\"id\": \"ExceptCpsT___runK\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptCpsT.runCatch\":\n    [{\"id\": \"ExceptCpsT___runCatch\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptCpsT.run\":\n    [{\"id\": \"ExceptCpsT___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptCpsT.lift\":\n    [{\"id\": \"ExceptCpsT___lift\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"ExceptCpsT\":\n    [{\"id\": \"ExceptCpsT\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.tryCatch\":\n    [{\"id\": \"Except___tryCatch\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.toOption\":\n    [{\"id\": \"Except___toOption\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.toBool\":\n    [{\"id\": \"Except___toBool\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.pure\":\n    [{\"id\": \"Except___pure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.orElseLazy\":\n    [{\"id\": \"Except___orElseLazy\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.ok\":\n    [{\"id\": \"Except___error\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.mapError\":\n    [{\"id\": \"Except___mapError\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.map\":\n    [{\"id\": \"Except___map\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.isOk\":\n    [{\"id\": \"Except___isOk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.error\":\n    [{\"id\": \"Except___error\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except.bind\":\n    [{\"id\": \"Except___bind\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Except\":\n    [{\"id\": \"Except___error\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Even.zero\":\n    [{\"id\": \"Even___zero-next\", \"data\": null, \"address\": \"/Introduction/\"}],\n    \"Even.plusTwo\":\n    [{\"id\": \"Even___zero-next\", \"data\": null, \"address\": \"/Introduction/\"}],\n    \"Even\":\n    [{\"id\": \"Even___zero-next\", \"data\": null, \"address\": \"/Introduction/\"}],\n    \"Equivalence.trans\":\n    [{\"id\": \"Equivalence___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Equivalence.symm\":\n    [{\"id\": \"Equivalence___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Equivalence.refl\":\n    [{\"id\": \"Equivalence___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Equivalence.mk\":\n    [{\"id\": \"Equivalence___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"Equivalence\":\n    [{\"id\": \"Equivalence___mk\",\n      \"data\": null,\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"EquivBEq.toPartialEquivBEq\":\n    [{\"id\": \"EquivBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"EquivBEq.mk\":\n    [{\"id\": \"EquivBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"EquivBEq\":\n    [{\"id\": \"EquivBEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Eq.trans\":\n    [{\"id\": \"Eq___trans\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Eq.symm\":\n    [{\"id\": \"Eq___symm\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Eq.subst\":\n    [{\"id\": \"Eq___subst\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Eq.refl\":\n    [{\"id\": \"Eq___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Eq.mpr\":\n    [{\"id\": \"Eq___mpr\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Eq.mp\":\n    [{\"id\": \"Eq___mp\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Eq\":\n    [{\"id\": \"Eq___refl\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Empty.elim\":\n    [{\"id\": \"Empty___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"Empty\":\n    [{\"id\": \"Empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/The-Empty-Type/\"}],\n    \"EStateM.tryCatch\":\n    [{\"id\": \"EStateM___tryCatch\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.throw\":\n    [{\"id\": \"EStateM___throw\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.set\":\n    [{\"id\": \"EStateM___set\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.seqRight\":\n    [{\"id\": \"EStateM___seqRight\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.run'\":\n    [{\"id\": \"EStateM___run___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.run\":\n    [{\"id\": \"EStateM___run\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.pure\":\n    [{\"id\": \"EStateM___pure\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.orElse'\":\n    [{\"id\": \"EStateM___orElse___\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.orElse\":\n    [{\"id\": \"EStateM___orElse\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.nonBacktrackable\":\n    [{\"id\": \"EStateM___nonBacktrackable\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.modifyGet\":\n    [{\"id\": \"EStateM___modifyGet\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.map\":\n    [{\"id\": \"EStateM___map\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.get\":\n    [{\"id\": \"EStateM___get\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.fromStateM\":\n    [{\"id\": \"EStateM___fromStateM\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.bind\":\n    [{\"id\": \"EStateM___bind\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.adaptExcept\":\n    [{\"id\": \"EStateM___adaptExcept\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Result.ok\":\n    [{\"id\": \"EStateM___Result___ok\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Result.error\":\n    [{\"id\": \"EStateM___Result___ok\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Result\":\n    [{\"id\": \"EStateM___Result___ok\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Backtrackable.save\":\n    [{\"id\": \"EStateM___Backtrackable___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Backtrackable.restore\":\n    [{\"id\": \"EStateM___Backtrackable___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Backtrackable.mk\":\n    [{\"id\": \"EStateM___Backtrackable___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM.Backtrackable\":\n    [{\"id\": \"EStateM___Backtrackable___mk\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EStateM\":\n    [{\"id\": \"EStateM\",\n      \"data\": null,\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"EST\":\n    [{\"id\": \"EST\", \"data\": null, \"address\": \"/IO/Mutable-References/\"}],\n    \"EIO.toIO'\":\n    [{\"id\": \"EIO___toIO___\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"EIO.toIO\":\n    [{\"id\": \"EIO___toIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"EIO.toBaseIO\":\n    [{\"id\": \"EIO___toBaseIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"EIO.mapTasks\":\n    [{\"id\": \"EIO___mapTasks\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"EIO.mapTask\":\n    [{\"id\": \"EIO___mapTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"EIO.chainTask\":\n    [{\"id\": \"EIO___chainTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"EIO.catchExceptions\":\n    [{\"id\": \"EIO___catchExceptions\",\n      \"data\": null,\n      \"address\": \"/IO/Logical-Model/\"}],\n    \"EIO.bindTask\":\n    [{\"id\": \"EIO___bindTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"EIO.asTask\":\n    [{\"id\": \"EIO___asTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"EIO\": [{\"id\": \"EIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"Dvd.mk\":\n    [{\"id\": \"Dvd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Dvd.dvd\":\n    [{\"id\": \"Dvd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Dvd\":\n    [{\"id\": \"Dvd___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Div.mk\":\n    [{\"id\": \"Div___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Div.div\":\n    [{\"id\": \"Div___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Div\":\n    [{\"id\": \"Div___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"DecidableRel\":\n    [{\"id\": \"DecidableRel\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"DecidablePred\":\n    [{\"id\": \"DecidablePred\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"DecidableLT\":\n    [{\"id\": \"DecidableLT\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"DecidableLE\":\n    [{\"id\": \"DecidableLE\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"DecidableEq\":\n    [{\"id\": \"DecidableEq\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Decidable.isTrue\":\n    [{\"id\": \"Decidable___isFalse\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Decidable.isFalse\":\n    [{\"id\": \"Decidable___isFalse\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Decidable.decide\":\n    [{\"id\": \"Decidable___decide\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Decidable.byCases\":\n    [{\"id\": \"Decidable___byCases\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Decidable\":\n    [{\"id\": \"Decidable___isFalse\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"CoeTail.mk\":\n    [{\"id\": \"CoeTail___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeTail.coe\":\n    [{\"id\": \"CoeTail___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeTail\":\n    [{\"id\": \"CoeTail___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeTC.mk\":\n    [{\"id\": \"CoeTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeTC.coe\":\n    [{\"id\": \"CoeTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeTC\":\n    [{\"id\": \"CoeTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeT.mk\":\n    [{\"id\": \"CoeT___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeT.coe\":\n    [{\"id\": \"CoeT___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeT\":\n    [{\"id\": \"CoeT___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeSort.mk\":\n    [{\"id\": \"CoeSort___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"CoeSort.coe\":\n    [{\"id\": \"CoeSort___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"CoeSort\":\n    [{\"id\": \"CoeSort___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"CoeOut.mk\":\n    [{\"id\": \"CoeOut___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeOut.coe\":\n    [{\"id\": \"CoeOut___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeOut\":\n    [{\"id\": \"CoeOut___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeOTC.mk\":\n    [{\"id\": \"CoeOTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeOTC.coe\":\n    [{\"id\": \"CoeOTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeOTC\":\n    [{\"id\": \"CoeOTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeHead.mk\":\n    [{\"id\": \"CoeHead___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeHead.coe\":\n    [{\"id\": \"CoeHead___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeHead\":\n    [{\"id\": \"CoeHead___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeHTCT.mk\":\n    [{\"id\": \"CoeHTCT___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeHTCT.coe\":\n    [{\"id\": \"CoeHTCT___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeHTCT\":\n    [{\"id\": \"CoeHTCT___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeHTC.mk\":\n    [{\"id\": \"CoeHTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeHTC.coe\":\n    [{\"id\": \"CoeHTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeHTC\":\n    [{\"id\": \"CoeHTC___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Implementation-Details/\"}],\n    \"CoeFun.mk\":\n    [{\"id\": \"CoeFun___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"CoeFun.coe\":\n    [{\"id\": \"CoeFun___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"CoeFun\":\n    [{\"id\": \"CoeFun___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"CoeDep.mk\":\n    [{\"id\": \"CoeDep___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeDep.coe\":\n    [{\"id\": \"CoeDep___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"CoeDep\":\n    [{\"id\": \"CoeDep___mk\",\n      \"data\": null,\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Coe.mk\": [{\"id\": \"Coe___mk\", \"data\": null, \"address\": \"/Coercions/\"}],\n    \"Coe.coe\": [{\"id\": \"Coe___mk\", \"data\": null, \"address\": \"/Coercions/\"}],\n    \"Coe\": [{\"id\": \"Coe___mk\", \"data\": null, \"address\": \"/Coercions/\"}],\n    \"Char.valid\":\n    [{\"id\": \"Char___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.val\":\n    [{\"id\": \"Char___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.utf8Size\":\n    [{\"id\": \"Char___utf8Size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.utf16Size\":\n    [{\"id\": \"Char___utf16Size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.toUpper\":\n    [{\"id\": \"Char___toUpper\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.toUInt8\":\n    [{\"id\": \"Char___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.toString\":\n    [{\"id\": \"Char___toString\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.toNat\":\n    [{\"id\": \"Char___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.toLower\":\n    [{\"id\": \"Char___toLower\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.quote\":\n    [{\"id\": \"Char___quote\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.ofUInt8\":\n    [{\"id\": \"Char___ofUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.ofNat\":\n    [{\"id\": \"Char___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.mk\":\n    [{\"id\": \"Char___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.lt\":\n    [{\"id\": \"Char___lt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.le\":\n    [{\"id\": \"Char___le\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isWhitespace\":\n    [{\"id\": \"Char___isWhitespace\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isValidCharNat\":\n    [{\"id\": \"Char___isValidCharNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isUpper\":\n    [{\"id\": \"Char___isUpper\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isLower\":\n    [{\"id\": \"Char___isLower\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isDigit\":\n    [{\"id\": \"Char___isDigit\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isAlphanum\":\n    [{\"id\": \"Char___isAlphanum\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char.isAlpha\":\n    [{\"id\": \"Char___isAlpha\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"Char\":\n    [{\"id\": \"Char___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Characters/\"}],\n    \"ByteSlice.toByteArray\":\n    [{\"id\": \"ByteSlice___toByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.stop\":\n    [{\"id\": \"ByteSlice___stop\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.start\":\n    [{\"id\": \"ByteSlice___start\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.slice\":\n    [{\"id\": \"ByteSlice___slice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.size\":\n    [{\"id\": \"ByteSlice___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.ofByteArray\":\n    [{\"id\": \"ByteSlice___ofByteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.getD\":\n    [{\"id\": \"ByteSlice___getD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.get!\":\n    [{\"id\": \"ByteSlice___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.get\":\n    [{\"id\": \"ByteSlice___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.forM\":\n    [{\"id\": \"ByteSlice___forM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.foldrM\":\n    [{\"id\": \"ByteSlice___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.foldr\":\n    [{\"id\": \"ByteSlice___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.empty\":\n    [{\"id\": \"ByteSlice___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.contains\":\n    [{\"id\": \"ByteSlice___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.byteArray\":\n    [{\"id\": \"ByteSlice___byteArray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice.beq\":\n    [{\"id\": \"ByteSlice___beq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteSlice\":\n    [{\"id\": \"ByteSlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.utf8DecodeChar?\":\n    [{\"id\": \"ByteArray___utf8DecodeChar___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.utf8DecodeChar\":\n    [{\"id\": \"ByteArray___utf8DecodeChar\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.utf8Decode?\":\n    [{\"id\": \"ByteArray___utf8Decode___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.usize\":\n    [{\"id\": \"ByteArray___usize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.uset\":\n    [{\"id\": \"ByteArray___uset\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.uget\":\n    [{\"id\": \"ByteArray___uget\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.toUInt64LE!\":\n    [{\"id\": \"ByteArray___toUInt64LE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.toUInt64BE!\":\n    [{\"id\": \"ByteArray___toUInt64BE___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.toList\":\n    [{\"id\": \"ByteArray___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.toByteSlice\":\n    [{\"id\": \"ByteArray___toByteSlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.size\":\n    [{\"id\": \"ByteArray___size\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.set!\":\n    [{\"id\": \"ByteArray___set___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.set\":\n    [{\"id\": \"ByteArray___set\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.push\":\n    [{\"id\": \"ByteArray___push\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.mk\":\n    [{\"id\": \"ByteArray___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.iter\":\n    [{\"id\": \"ByteArray___iter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.isEmpty\":\n    [{\"id\": \"ByteArray___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.get!\":\n    [{\"id\": \"ByteArray___get___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.get\":\n    [{\"id\": \"ByteArray___get\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.forIn\":\n    [{\"id\": \"ByteArray___forIn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.foldlM\":\n    [{\"id\": \"ByteArray___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.foldl\":\n    [{\"id\": \"ByteArray___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.findIdx?\":\n    [{\"id\": \"ByteArray___findIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.findFinIdx?\":\n    [{\"id\": \"ByteArray___findFinIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.fastAppend\":\n    [{\"id\": \"ByteArray___fastAppend\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.extract\":\n    [{\"id\": \"ByteArray___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.emptyWithCapacity\":\n    [{\"id\": \"ByteArray___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.empty\":\n    [{\"id\": \"ByteArray___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.data\":\n    [{\"id\": \"ByteArray___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.copySlice\":\n    [{\"id\": \"ByteArray___copySlice\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.append\":\n    [{\"id\": \"ByteArray___append\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.toEnd\":\n    [{\"id\": \"ByteArray___Iterator___toEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.remainingBytes\":\n    [{\"id\": \"ByteArray___Iterator___remainingBytes\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.prevn\":\n    [{\"id\": \"ByteArray___Iterator___prevn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.prev\":\n    [{\"id\": \"ByteArray___Iterator___prev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.pos\":\n    [{\"id\": \"ByteArray___Iterator___pos\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.nextn\":\n    [{\"id\": \"ByteArray___Iterator___nextn\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.next'\":\n    [{\"id\": \"ByteArray___Iterator___next___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.next\":\n    [{\"id\": \"ByteArray___Iterator___next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.mk\":\n    [{\"id\": \"ByteArray___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.idx\":\n    [{\"id\": \"ByteArray___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.hasPrev\":\n    [{\"id\": \"ByteArray___Iterator___hasPrev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.hasNext\":\n    [{\"id\": \"ByteArray___Iterator___hasNext\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.forward\":\n    [{\"id\": \"ByteArray___Iterator___forward\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.curr'\":\n    [{\"id\": \"ByteArray___Iterator___curr___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.curr\":\n    [{\"id\": \"ByteArray___Iterator___curr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.atEnd\":\n    [{\"id\": \"ByteArray___Iterator___atEnd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator.array\":\n    [{\"id\": \"ByteArray___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray.Iterator\":\n    [{\"id\": \"ByteArray___Iterator___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"ByteArray\":\n    [{\"id\": \"ByteArray___mk\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Byte-Arrays/\"}],\n    \"Bool.xor\":\n    [{\"id\": \"Bool___xor\", \"data\": null, \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.true\":\n    [{\"id\": \"Bool___false\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toUSize\":\n    [{\"id\": \"Bool___toUSize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toUInt8\":\n    [{\"id\": \"Bool___toUInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toUInt64\":\n    [{\"id\": \"Bool___toUInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toUInt32\":\n    [{\"id\": \"Bool___toUInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toUInt16\":\n    [{\"id\": \"Bool___toUInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toNat\":\n    [{\"id\": \"Bool___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toInt8\":\n    [{\"id\": \"Bool___toInt8\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toInt64\":\n    [{\"id\": \"Bool___toInt64\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toInt32\":\n    [{\"id\": \"Bool___toInt32\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toInt16\":\n    [{\"id\": \"Bool___toInt16\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toInt\":\n    [{\"id\": \"Bool___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.toISize\":\n    [{\"id\": \"Bool___toISize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.or\":\n    [{\"id\": \"Bool___or\", \"data\": null, \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.not\":\n    [{\"id\": \"Bool___not\", \"data\": null, \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.false\":\n    [{\"id\": \"Bool___false\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.decEq\":\n    [{\"id\": \"Bool___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.dcond\":\n    [{\"id\": \"Bool___dcond\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool.and\":\n    [{\"id\": \"Bool___and\", \"data\": null, \"address\": \"/Basic-Types/Booleans/\"}],\n    \"Bool\":\n    [{\"id\": \"Bool___false\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"BitVec.zeroExtend\":\n    [{\"id\": \"BitVec___zeroExtend\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.zero\":\n    [{\"id\": \"BitVec___zero\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.xor\":\n    [{\"id\": \"BitVec___xor\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.usubOverflow\":\n    [{\"id\": \"BitVec___usubOverflow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ushiftRightRec\":\n    [{\"id\": \"BitVec___ushiftRightRec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ushiftRight\":\n    [{\"id\": \"BitVec___ushiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.umod\":\n    [{\"id\": \"BitVec___umod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ult\":\n    [{\"id\": \"BitVec___ult\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ule\":\n    [{\"id\": \"BitVec___ule\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.udiv\":\n    [{\"id\": \"BitVec___udiv\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.uaddOverflow\":\n    [{\"id\": \"BitVec___uaddOverflow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.twoPow\":\n    [{\"id\": \"BitVec___twoPow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.truncate\":\n    [{\"id\": \"BitVec___truncate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.toNat\":\n    [{\"id\": \"BitVec___toNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.toInt\":\n    [{\"id\": \"BitVec___toInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.toHex\":\n    [{\"id\": \"BitVec___toHex\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.toFin\":\n    [{\"id\": \"BitVec___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.sub\":\n    [{\"id\": \"BitVec___sub\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ssubOverflow\":\n    [{\"id\": \"BitVec___ssubOverflow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.sshiftRightRec\":\n    [{\"id\": \"BitVec___sshiftRightRec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.sshiftRight'\":\n    [{\"id\": \"BitVec___sshiftRight___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.sshiftRight\":\n    [{\"id\": \"BitVec___sshiftRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.srem\":\n    [{\"id\": \"BitVec___srem\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.smtUDiv\":\n    [{\"id\": \"BitVec___smtUDiv\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.smtSDiv\":\n    [{\"id\": \"BitVec___smtSDiv\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.smod\":\n    [{\"id\": \"BitVec___smod\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.slt\":\n    [{\"id\": \"BitVec___slt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.sle\":\n    [{\"id\": \"BitVec___sle\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.signExtend\":\n    [{\"id\": \"BitVec___signExtend\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.shiftLeftZeroExtend\":\n    [{\"id\": \"BitVec___shiftLeftZeroExtend\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.shiftLeftRec\":\n    [{\"id\": \"BitVec___shiftLeftRec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.shiftLeft\":\n    [{\"id\": \"BitVec___shiftLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.shiftConcat\":\n    [{\"id\": \"BitVec___shiftConcat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.setWidth'\":\n    [{\"id\": \"BitVec___setWidth___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.setWidth\":\n    [{\"id\": \"BitVec___setWidth\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.sdiv\":\n    [{\"id\": \"BitVec___sdiv\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.saddOverflow\":\n    [{\"id\": \"BitVec___saddOverflow\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.rotateRight\":\n    [{\"id\": \"BitVec___rotateRight\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.rotateLeft\":\n    [{\"id\": \"BitVec___rotateLeft\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.reverse\":\n    [{\"id\": \"BitVec___reverse\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.replicate\":\n    [{\"id\": \"BitVec___replicate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.or\":\n    [{\"id\": \"BitVec___or\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofNatLT\":\n    [{\"id\": \"BitVec___ofNatLT\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofNat\":\n    [{\"id\": \"BitVec___ofNat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofInt\":\n    [{\"id\": \"BitVec___ofInt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofFin\":\n    [{\"id\": \"BitVec___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofBoolListLE\":\n    [{\"id\": \"BitVec___ofBoolListLE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofBoolListBE\":\n    [{\"id\": \"BitVec___ofBoolListBE\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.ofBool\":\n    [{\"id\": \"BitVec___ofBool\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.not\":\n    [{\"id\": \"BitVec___not\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.nil\":\n    [{\"id\": \"BitVec___nil\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.neg\":\n    [{\"id\": \"BitVec___neg\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.mulRec\":\n    [{\"id\": \"BitVec___mulRec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.mul\":\n    [{\"id\": \"BitVec___mul\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.msb\":\n    [{\"id\": \"BitVec___msb\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.iunfoldr_replace\":\n    [{\"id\": \"BitVec___iunfoldr_replace\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.iunfoldr\":\n    [{\"id\": \"BitVec___iunfoldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.intMin\":\n    [{\"id\": \"BitVec___intMin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.intMax\":\n    [{\"id\": \"BitVec___intMax\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.hash\":\n    [{\"id\": \"BitVec___hash\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.getMsbD\":\n    [{\"id\": \"BitVec___getMsbD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.getMsb?\":\n    [{\"id\": \"BitVec___getMsb___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.getMsb\":\n    [{\"id\": \"BitVec___getMsb\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.getLsbD\":\n    [{\"id\": \"BitVec___getLsbD\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.getLsb?\":\n    [{\"id\": \"BitVec___getLsb___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.getLsb\":\n    [{\"id\": \"BitVec___getLsb\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.fill\":\n    [{\"id\": \"BitVec___fill\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.extractLsb'\":\n    [{\"id\": \"BitVec___extractLsb___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.extractLsb\":\n    [{\"id\": \"BitVec___extractLsb\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.divSubtractShift\":\n    [{\"id\": \"BitVec___divSubtractShift\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.divRec\":\n    [{\"id\": \"BitVec___divRec\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.decEq\":\n    [{\"id\": \"BitVec___decEq\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.cons\":\n    [{\"id\": \"BitVec___cons\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.concat\":\n    [{\"id\": \"BitVec___concat\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.cast\":\n    [{\"id\": \"BitVec___cast\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.carry\":\n    [{\"id\": \"BitVec___carry\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.append\":\n    [{\"id\": \"BitVec___append\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.and\":\n    [{\"id\": \"BitVec___and\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.allOnes\":\n    [{\"id\": \"BitVec___allOnes\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.add\":\n    [{\"id\": \"BitVec___add\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.adcb\":\n    [{\"id\": \"BitVec___adcb\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.adc\":\n    [{\"id\": \"BitVec___adc\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.abs\":\n    [{\"id\": \"BitVec___abs\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec\":\n    [{\"id\": \"BitVec___ofFin\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"Bind.mk\":\n    [{\"id\": \"Bind___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Bind.kleisliRight\":\n    [{\"id\": \"Bind___kleisliRight\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"Bind.kleisliLeft\":\n    [{\"id\": \"Bind___kleisliLeft\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"Bind.bindLeft\":\n    [{\"id\": \"Bind___bindLeft\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/API-Reference/\"}],\n    \"Bind.bind\":\n    [{\"id\": \"Bind___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Bind\":\n    [{\"id\": \"Bind___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"BaseIO.toIO\":\n    [{\"id\": \"BaseIO___toIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"BaseIO.toEIO\":\n    [{\"id\": \"BaseIO___toEIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"BaseIO.mapTasks\":\n    [{\"id\": \"BaseIO___mapTasks\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"BaseIO.mapTask\":\n    [{\"id\": \"BaseIO___mapTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"BaseIO.chainTask\":\n    [{\"id\": \"BaseIO___chainTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"BaseIO.bindTask\":\n    [{\"id\": \"BaseIO___bindTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"BaseIO.asTask\":\n    [{\"id\": \"BaseIO___asTask\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"BaseIO\":\n    [{\"id\": \"BaseIO\", \"data\": null, \"address\": \"/IO/Logical-Model/\"}],\n    \"BEq.mk\":\n    [{\"id\": \"BEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"BEq.beq\":\n    [{\"id\": \"BEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"BEq\":\n    [{\"id\": \"BEq___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Array.zipWithAll\":\n    [{\"id\": \"Array___zipWithAll\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.zipWith\":\n    [{\"id\": \"Array___zipWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.zipIdx\":\n    [{\"id\": \"Array___zipIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.zip\":\n    [{\"id\": \"Array___zip\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.usize\":\n    [{\"id\": \"Array___usize\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.uset\":\n    [{\"id\": \"Array___uset\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.unzip\":\n    [{\"id\": \"Array___unzip\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.unattach\":\n    [{\"id\": \"Array___unattach\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.uget\":\n    [{\"id\": \"Array___uget\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.toVector\":\n    [{\"id\": \"Array___toVector\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.toSubarray\":\n    [{\"id\": \"Array___toSubarray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.toListRev\":\n    [{\"id\": \"Array___toListRev\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.toListAppend\":\n    [{\"id\": \"Array___toListAppend\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.toList\":\n    [{\"id\": \"Array___toList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"},\n     {\"id\": \"Array___mk\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.takeWhile\":\n    [{\"id\": \"Array___takeWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.take\":\n    [{\"id\": \"Array___take\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.swapIfInBounds\":\n    [{\"id\": \"Array___swapIfInBounds\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.swapAt!\":\n    [{\"id\": \"Array___swapAt___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.swapAt\":\n    [{\"id\": \"Array___swapAt\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.swap\":\n    [{\"id\": \"Array___swap\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.sum\":\n    [{\"id\": \"Array___sum\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.size\":\n    [{\"id\": \"Array___size\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.singleton\":\n    [{\"id\": \"Array___singleton\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.shrink\":\n    [{\"id\": \"Array___shrink\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.setIfInBounds\":\n    [{\"id\": \"Array___setIfInBounds\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.set!\":\n    [{\"id\": \"Array___set___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.set\":\n    [{\"id\": \"Array___set\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.rightpad\":\n    [{\"id\": \"Array___rightpad\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.reverse\":\n    [{\"id\": \"Array___reverse\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.replicate\":\n    [{\"id\": \"Array___replicate\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.replace\":\n    [{\"id\": \"Array___replace\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.range'\":\n    [{\"id\": \"Array___range___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.range\":\n    [{\"id\": \"Array___range\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.qsortOrd\":\n    [{\"id\": \"Array___qsortOrd\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.qsort\":\n    [{\"id\": \"Array___qsort\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.push\":\n    [{\"id\": \"Array___push\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.popWhile\":\n    [{\"id\": \"Array___popWhile\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.pop\":\n    [{\"id\": \"Array___pop\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.pmap\":\n    [{\"id\": \"Array___pmap\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.partition\":\n    [{\"id\": \"Array___partition\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.ofSubarray\":\n    [{\"id\": \"Array___ofSubarray\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.ofFn\":\n    [{\"id\": \"Array___ofFn\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.modifyOp\":\n    [{\"id\": \"Array___modifyOp\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.modifyM\":\n    [{\"id\": \"Array___modifyM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.modify\":\n    [{\"id\": \"Array___modify\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mk\":\n    [{\"id\": \"Array___mk\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapMonoM\":\n    [{\"id\": \"Array___mapMonoM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapMono\":\n    [{\"id\": \"Array___mapMono\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapM'\":\n    [{\"id\": \"Array___mapM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapM\":\n    [{\"id\": \"Array___mapM\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapIdxM\":\n    [{\"id\": \"Array___mapIdxM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapIdx\":\n    [{\"id\": \"Array___mapIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapFinIdxM\":\n    [{\"id\": \"Array___mapFinIdxM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.mapFinIdx\":\n    [{\"id\": \"Array___mapFinIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.map\":\n    [{\"id\": \"Array___map\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.lex\":\n    [{\"id\": \"Array___lex\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.leftpad\":\n    [{\"id\": \"Array___leftpad\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.iterM\":\n    [{\"id\": \"Array___iterM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.iterFromIdxM\":\n    [{\"id\": \"Array___iterFromIdxM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.iterFromIdx\":\n    [{\"id\": \"Array___iterFromIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.iter\":\n    [{\"id\": \"Array___iter\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.isPrefixOf\":\n    [{\"id\": \"Array___isPrefixOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.isEqv\":\n    [{\"id\": \"Array___isEqv\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.isEmpty\":\n    [{\"id\": \"Array___isEmpty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.insertionSort\":\n    [{\"id\": \"Array___insertionSort\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.insertIdxIfInBounds\":\n    [{\"id\": \"Array___insertIdxIfInBounds\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.insertIdx!\":\n    [{\"id\": \"Array___insertIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.insertIdx\":\n    [{\"id\": \"Array___insertIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.idxOf?\":\n    [{\"id\": \"Array___idxOf___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.idxOf\":\n    [{\"id\": \"Array___idxOf\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.groupByKey\":\n    [{\"id\": \"Array___groupByKey\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.getMax?\":\n    [{\"id\": \"Array___getMax___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.getEvenElems\":\n    [{\"id\": \"Array___getEvenElems\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.getD\":\n    [{\"id\": \"Array___getD\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.forRevM\":\n    [{\"id\": \"Array___forRevM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.forM\":\n    [{\"id\": \"Array___forM\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.foldrM\":\n    [{\"id\": \"Array___foldrM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.foldr\":\n    [{\"id\": \"Array___foldr\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.foldlM\":\n    [{\"id\": \"Array___foldlM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.foldl\":\n    [{\"id\": \"Array___foldl\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.flatten\":\n    [{\"id\": \"Array___flatten\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.flatMapM\":\n    [{\"id\": \"Array___flatMapM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.flatMap\":\n    [{\"id\": \"Array___flatMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.firstM\":\n    [{\"id\": \"Array___firstM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findSomeRevM?\":\n    [{\"id\": \"Array___findSomeRevM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findSomeRev?\":\n    [{\"id\": \"Array___findSomeRev___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findSomeM?\":\n    [{\"id\": \"Array___findSomeM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findSome?\":\n    [{\"id\": \"Array___findSome___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findSome!\":\n    [{\"id\": \"Array___findSome___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findRevM?\":\n    [{\"id\": \"Array___findRevM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findRev?\":\n    [{\"id\": \"Array___findRev___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findM?\":\n    [{\"id\": \"Array___findM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findIdxM?\":\n    [{\"id\": \"Array___findIdxM___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findIdx?\":\n    [{\"id\": \"Array___findIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findIdx\":\n    [{\"id\": \"Array___findIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.findFinIdx?\":\n    [{\"id\": \"Array___findFinIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.find?\":\n    [{\"id\": \"Array___find___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.finRange\":\n    [{\"id\": \"Array___finRange\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.finIdxOf?\":\n    [{\"id\": \"Array___finIdxOf___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filterSepElemsM\":\n    [{\"id\": \"Array___filterSepElemsM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filterSepElems\":\n    [{\"id\": \"Array___filterSepElems\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filterRevM\":\n    [{\"id\": \"Array___filterRevM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filterMapM\":\n    [{\"id\": \"Array___filterMapM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filterMap\":\n    [{\"id\": \"Array___filterMap\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filterM\":\n    [{\"id\": \"Array___filterM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.filter\":\n    [{\"id\": \"Array___filter\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.extract\":\n    [{\"id\": \"Array___extract\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.eraseReps\":\n    [{\"id\": \"Array___eraseReps\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.eraseP\":\n    [{\"id\": \"Array___eraseP\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.eraseIdxIfInBounds\":\n    [{\"id\": \"Array___eraseIdxIfInBounds\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.eraseIdx!\":\n    [{\"id\": \"Array___eraseIdx___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.eraseIdx\":\n    [{\"id\": \"Array___eraseIdx\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.erase\":\n    [{\"id\": \"Array___erase\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.emptyWithCapacity\":\n    [{\"id\": \"Array___emptyWithCapacity\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.empty\":\n    [{\"id\": \"Array___empty\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.elem\":\n    [{\"id\": \"Array___elem\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.drop\":\n    [{\"id\": \"Array___drop\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.countP\":\n    [{\"id\": \"Array___countP\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.count\":\n    [{\"id\": \"Array___count\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.contains\":\n    [{\"id\": \"Array___contains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.binSearchContains\":\n    [{\"id\": \"Array___binSearchContains\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.binSearch\":\n    [{\"id\": \"Array___binSearch\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.binInsertM\":\n    [{\"id\": \"Array___binInsertM\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.binInsert\":\n    [{\"id\": \"Array___binInsert\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.back?\":\n    [{\"id\": \"Array___back___\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.back!\":\n    [{\"id\": \"Array___back___-next\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.back\":\n    [{\"id\": \"Array___back\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.attachWith\":\n    [{\"id\": \"Array___attachWith\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.attach\":\n    [{\"id\": \"Array___attach\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.appendList\":\n    [{\"id\": \"Array___appendList\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.append\":\n    [{\"id\": \"Array___append\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.anyM\":\n    [{\"id\": \"Array___anyM\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.any\":\n    [{\"id\": \"Array___any\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.allM\":\n    [{\"id\": \"Array___allM\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.allDiff\":\n    [{\"id\": \"Array___allDiff\",\n      \"data\": null,\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.all\":\n    [{\"id\": \"Array___all\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array\":\n    [{\"id\": \"Array___mk\", \"data\": null, \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Applicative.toPure\":\n    [{\"id\": \"Applicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Applicative.toFunctor\":\n    [{\"id\": \"Applicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Applicative.mk\":\n    [{\"id\": \"Applicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Applicative\":\n    [{\"id\": \"Applicative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Append.mk\":\n    [{\"id\": \"Append___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Append.append\":\n    [{\"id\": \"Append___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Append\":\n    [{\"id\": \"Append___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"AndOp.mk\":\n    [{\"id\": \"AndOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"AndOp.and\":\n    [{\"id\": \"AndOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"AndOp\":\n    [{\"id\": \"AndOp___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"And.right\":\n    [{\"id\": \"And___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"And.left\":\n    [{\"id\": \"And___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"And.intro\":\n    [{\"id\": \"And___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"And.elim\":\n    [{\"id\": \"And___elim\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"And\":\n    [{\"id\": \"And___intro\",\n      \"data\": null,\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"Alternative.toApplicative\":\n    [{\"id\": \"Alternative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Alternative.mk\":\n    [{\"id\": \"Alternative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Alternative\":\n    [{\"id\": \"Alternative___mk\",\n      \"data\": null,\n      \"address\": \"/Functors___-Monads-and--do--Notation/\"}],\n    \"Add.mk\":\n    [{\"id\": \"Add___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Add.add\":\n    [{\"id\": \"Add___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Add\":\n    [{\"id\": \"Add___mk\",\n      \"data\": null,\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"Acc.intro\":\n    [{\"id\": \"Acc___intro\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Acc\":\n    [{\"id\": \"Acc___intro\",\n      \"data\": null,\n      \"address\": \"/Definitions/Recursive-Definitions/\"}]}},\n  \"Manual.parserAlias\":\n  {\"title\": \"Parser Alias Documentation\",\n   \"description\": \"Parser Alias Documentation\",\n   \"contents\":\n   {\"withoutPosition\":\n    [{\"id\": \"withoutPosition\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"withPositionAfterLinebreak\":\n    [{\"id\": \"withPositionAfterLinebreak\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"withPosition\":\n    [{\"id\": \"withPosition\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"lineEq\":\n    [{\"id\": \"lineEq\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"colGt\":\n    [{\"id\": \"colGt\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"colGe\":\n    [{\"id\": \"colGe\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"colEq\":\n    [{\"id\": \"colEq\",\n      \"data\": null,\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}]}},\n  \"Manual.lakeTomlTable\":\n  {\"title\": \"Manual.lakeTomlTable\",\n   \"description\": \"Manual.lakeTomlTable\",\n   \"contents\":\n   {\"Lake.PackageConfig\":\n    [{\"id\": \"Lake___PackageConfig\",\n      \"data\":\n      {\"type\": \"Lake.PackageConfig\",\n       \"description\": \"Package Configuration\",\n       \"arrayKey\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig\":\n    [{\"id\": \"Lake___LeanLibConfig\",\n      \"data\":\n      {\"type\": \"Lake.LeanLibConfig\",\n       \"description\": \"Library Targets\",\n       \"arrayKey\": \"lean_lib\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig\":\n    [{\"id\": \"Lake___LeanExeConfig\",\n      \"data\":\n      {\"type\": \"Lake.LeanExeConfig\",\n       \"description\": \"Executable Targets\",\n       \"arrayKey\": \"lean_exe\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency\":\n    [{\"id\": \"Lake___Dependency\",\n      \"data\":\n      {\"type\": \"Lake.Dependency\",\n       \"description\": \"Requiring Packages\",\n       \"arrayKey\": \"require\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}]}},\n  \"Manual.lakeTomlField\":\n  {\"title\": \"Manual.lakeTomlField\",\n   \"description\": \"Manual.lakeTomlField\",\n   \"contents\":\n   {\"Lake.PackageConfig weakLinkArgs\":\n    [{\"id\": \"Lake___PackageConfig-weakLinkArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"weakLinkArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig weakLeancArgs\":\n    [{\"id\": \"Lake___PackageConfig-weakLeancArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"weakLeancArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig weakLeanArgs\":\n    [{\"id\": \"Lake___PackageConfig-weakLeanArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"weakLeanArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig versionTags\":\n    [{\"id\": \"Lake___PackageConfig-versionTags\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"versionTags\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig version\":\n    [{\"id\": \"Lake___PackageConfig-version\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"version\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig testDriverArgs\":\n    [{\"id\": \"Lake___PackageConfig-testDriverArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"testDriverArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig testDriver\":\n    [{\"id\": \"Lake___PackageConfig-testDriver\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"testDriver\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig srcDir\":\n    [{\"id\": \"Lake___PackageConfig-srcDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"srcDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig restoreAllArtifacts\":\n    [{\"id\": \"Lake___PackageConfig-restoreAllArtifacts\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"restoreAllArtifacts\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig reservoir\":\n    [{\"id\": \"Lake___PackageConfig-reservoir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"reservoir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig releaseRepo\":\n    [{\"id\": \"Lake___PackageConfig-releaseRepo\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"releaseRepo\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig readmeFile\":\n    [{\"id\": \"Lake___PackageConfig-readmeFile\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"readmeFile\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig preferReleaseBuild\":\n    [{\"id\": \"Lake___PackageConfig-preferReleaseBuild\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"preferReleaseBuild\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig precompileModules\":\n    [{\"id\": \"Lake___PackageConfig-precompileModules\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"precompileModules\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig platformIndependent\":\n    [{\"id\": \"Lake___PackageConfig-platformIndependent\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"platformIndependent\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig packagesDir\":\n    [{\"id\": \"Lake___PackageConfig-packagesDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"packagesDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig nativeLibDir\":\n    [{\"id\": \"Lake___PackageConfig-nativeLibDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"nativeLibDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig name\":\n    [{\"id\": \"Lake___PackageConfig-name\",\n      \"data\":\n      {\"tableArrayKey\": null, \"table\": \"Lake.PackageConfig\", \"field\": \"name\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreServerOptions\":\n    [{\"id\": \"Lake___PackageConfig-moreServerOptions\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreServerOptions\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreLinkObjs\":\n    [{\"id\": \"Lake___PackageConfig-moreLinkObjs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreLinkObjs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreLinkLibs\":\n    [{\"id\": \"Lake___PackageConfig-moreLinkLibs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreLinkLibs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreLinkArgs\":\n    [{\"id\": \"Lake___PackageConfig-moreLinkArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreLinkArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreLeancArgs\":\n    [{\"id\": \"Lake___PackageConfig-moreLeancArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreLeancArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreLeanArgs\":\n    [{\"id\": \"Lake___PackageConfig-moreLeanArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreLeanArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig moreGlobalServerArgs\":\n    [{\"id\": \"Lake___PackageConfig-moreGlobalServerArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"moreGlobalServerArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig lintDriverArgs\":\n    [{\"id\": \"Lake___PackageConfig-lintDriverArgs\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"lintDriverArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig lintDriver\":\n    [{\"id\": \"Lake___PackageConfig-lintDriver\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"lintDriver\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig licenseFiles\":\n    [{\"id\": \"Lake___PackageConfig-licenseFiles\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"licenseFiles\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig license\":\n    [{\"id\": \"Lake___PackageConfig-license\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"license\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig libPrefixOnWindows\":\n    [{\"id\": \"Lake___PackageConfig-libPrefixOnWindows\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"libPrefixOnWindows\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig leanOptions\":\n    [{\"id\": \"Lake___PackageConfig-leanOptions\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"leanOptions\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig leanLibDir\":\n    [{\"id\": \"Lake___PackageConfig-leanLibDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"leanLibDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig keywords\":\n    [{\"id\": \"Lake___PackageConfig-keywords\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"keywords\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig irDir\":\n    [{\"id\": \"Lake___PackageConfig-irDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"irDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig homepage\":\n    [{\"id\": \"Lake___PackageConfig-homepage\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"homepage\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig extraDepTargets\":\n    [{\"id\": \"Lake___PackageConfig-extraDepTargets\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"extraDepTargets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig enableArtifactCache?\":\n    [{\"id\": \"Lake___PackageConfig-enableArtifactCache___\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"enableArtifactCache?\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig description\":\n    [{\"id\": \"Lake___PackageConfig-description\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"description\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig defaultTargets\":\n    [{\"id\": \"Lake___PackageConfig-defaultTargets\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"defaultTargets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig buildType\":\n    [{\"id\": \"Lake___PackageConfig-buildType\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"buildType\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig buildDir\":\n    [{\"id\": \"Lake___PackageConfig-buildDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"buildDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig buildArchive\":\n    [{\"id\": \"Lake___PackageConfig-buildArchive\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"buildArchive\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig bootstrap\":\n    [{\"id\": \"Lake___PackageConfig-bootstrap\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"bootstrap\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig binDir\":\n    [{\"id\": \"Lake___PackageConfig-binDir\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"binDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.PackageConfig allowImportAll\":\n    [{\"id\": \"Lake___PackageConfig-allowImportAll\",\n      \"data\":\n      {\"tableArrayKey\": null,\n       \"table\": \"Lake.PackageConfig\",\n       \"field\": \"allowImportAll\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig weakLinkArgs\":\n    [{\"id\": \"Lake___LeanLibConfig-weakLinkArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"weakLinkArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig weakLeancArgs\":\n    [{\"id\": \"Lake___LeanLibConfig-weakLeancArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"weakLeancArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig weakLeanArgs\":\n    [{\"id\": \"Lake___LeanLibConfig-weakLeanArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"weakLeanArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig srcDir\":\n    [{\"id\": \"Lake___LeanLibConfig-srcDir\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"srcDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig roots\":\n    [{\"id\": \"Lake___LeanLibConfig-roots\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"roots\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig precompileModules\":\n    [{\"id\": \"Lake___LeanLibConfig-precompileModules\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"precompileModules\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig plugins\":\n    [{\"id\": \"Lake___LeanLibConfig-plugins\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"plugins\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig platformIndependent\":\n    [{\"id\": \"Lake___LeanLibConfig-platformIndependent\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"platformIndependent\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig needs\":\n    [{\"id\": \"Lake___LeanLibConfig-needs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"needs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig name\":\n    [{\"id\": \"Lake___LeanLibConfig-name\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"name\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig moreServerOptions\":\n    [{\"id\": \"Lake___LeanLibConfig-moreServerOptions\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"moreServerOptions\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig moreLinkObjs\":\n    [{\"id\": \"Lake___LeanLibConfig-moreLinkObjs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"moreLinkObjs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig moreLinkLibs\":\n    [{\"id\": \"Lake___LeanLibConfig-moreLinkLibs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"moreLinkLibs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig moreLinkArgs\":\n    [{\"id\": \"Lake___LeanLibConfig-moreLinkArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"moreLinkArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig moreLeancArgs\":\n    [{\"id\": \"Lake___LeanLibConfig-moreLeancArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"moreLeancArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig moreLeanArgs\":\n    [{\"id\": \"Lake___LeanLibConfig-moreLeanArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"moreLeanArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig libPrefixOnWindows\":\n    [{\"id\": \"Lake___LeanLibConfig-libPrefixOnWindows\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"libPrefixOnWindows\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig libName\":\n    [{\"id\": \"Lake___LeanLibConfig-libName\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"libName\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig leanOptions\":\n    [{\"id\": \"Lake___LeanLibConfig-leanOptions\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"leanOptions\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig extraDepTargets\":\n    [{\"id\": \"Lake___LeanLibConfig-extraDepTargets\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"extraDepTargets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig dynlibs\":\n    [{\"id\": \"Lake___LeanLibConfig-dynlibs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"dynlibs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig defaultFacets\":\n    [{\"id\": \"Lake___LeanLibConfig-defaultFacets\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"defaultFacets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig buildType\":\n    [{\"id\": \"Lake___LeanLibConfig-buildType\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"buildType\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanLibConfig allowImportAll\":\n    [{\"id\": \"Lake___LeanLibConfig-allowImportAll\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_lib\",\n       \"table\": \"Lake.LeanLibConfig\",\n       \"field\": \"allowImportAll\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig weakLinkArgs\":\n    [{\"id\": \"Lake___LeanExeConfig-weakLinkArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"weakLinkArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig weakLeancArgs\":\n    [{\"id\": \"Lake___LeanExeConfig-weakLeancArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"weakLeancArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig weakLeanArgs\":\n    [{\"id\": \"Lake___LeanExeConfig-weakLeanArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"weakLeanArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig supportInterpreter\":\n    [{\"id\": \"Lake___LeanExeConfig-supportInterpreter\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"supportInterpreter\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig srcDir\":\n    [{\"id\": \"Lake___LeanExeConfig-srcDir\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"srcDir\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig root\":\n    [{\"id\": \"Lake___LeanExeConfig-root\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"root\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig plugins\":\n    [{\"id\": \"Lake___LeanExeConfig-plugins\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"plugins\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig platformIndependent\":\n    [{\"id\": \"Lake___LeanExeConfig-platformIndependent\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"platformIndependent\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig needs\":\n    [{\"id\": \"Lake___LeanExeConfig-needs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"needs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig name\":\n    [{\"id\": \"Lake___LeanExeConfig-name\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"name\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig moreServerOptions\":\n    [{\"id\": \"Lake___LeanExeConfig-moreServerOptions\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"moreServerOptions\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig moreLinkObjs\":\n    [{\"id\": \"Lake___LeanExeConfig-moreLinkObjs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"moreLinkObjs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig moreLinkLibs\":\n    [{\"id\": \"Lake___LeanExeConfig-moreLinkLibs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"moreLinkLibs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig moreLinkArgs\":\n    [{\"id\": \"Lake___LeanExeConfig-moreLinkArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"moreLinkArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig moreLeancArgs\":\n    [{\"id\": \"Lake___LeanExeConfig-moreLeancArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"moreLeancArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig moreLeanArgs\":\n    [{\"id\": \"Lake___LeanExeConfig-moreLeanArgs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"moreLeanArgs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig leanOptions\":\n    [{\"id\": \"Lake___LeanExeConfig-leanOptions\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"leanOptions\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig extraDepTargets\":\n    [{\"id\": \"Lake___LeanExeConfig-extraDepTargets\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"extraDepTargets\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig exeName\":\n    [{\"id\": \"Lake___LeanExeConfig-exeName\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"exeName\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig dynlibs\":\n    [{\"id\": \"Lake___LeanExeConfig-dynlibs\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"dynlibs\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.LeanExeConfig buildType\":\n    [{\"id\": \"Lake___LeanExeConfig-buildType\",\n      \"data\":\n      {\"tableArrayKey\": \"lean_exe\",\n       \"table\": \"Lake.LeanExeConfig\",\n       \"field\": \"buildType\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency version\":\n    [{\"id\": \"Lake___Dependency-version\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"version\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency source\":\n    [{\"id\": \"Lake___Dependency-source\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"source\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency scope\":\n    [{\"id\": \"Lake___Dependency-scope\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"scope\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency rev\":\n    [{\"id\": \"Lake___Dependency-rev\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"rev\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency path\":\n    [{\"id\": \"Lake___Dependency-path\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"path\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency name\":\n    [{\"id\": \"Lake___Dependency-name\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"name\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.Dependency git\":\n    [{\"id\": \"Lake___Dependency-git\",\n      \"data\":\n      {\"tableArrayKey\": \"require\",\n       \"table\": \"Lake.Dependency\",\n       \"field\": \"git\"},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}]}},\n  \"Manual.lakeOpt\":\n  {\"title\": \"Manual.lakeOpt\",\n   \"description\": \"Manual.lakeOpt\",\n   \"contents\":\n   {\"-v\":\n    [{\"id\": \"lake-flag-v\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-q\":\n    [{\"id\": \"lake-flag-q\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-o\":\n    [{\"id\": \"lake-option-o\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-h\":\n    [{\"id\": \"lake-flag-h\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-f\":\n    [{\"id\": \"lake-option-f\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-d\":\n    [{\"id\": \"lake-option-d\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-R\":\n    [{\"id\": \"lake-flag-R\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"-H\":\n    [{\"id\": \"lake-flag-H\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--wfail\":\n    [{\"id\": \"lake-flag--wfail\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--version\":\n    [{\"id\": \"lake-flag--version\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--verbose\":\n    [{\"id\": \"lake-flag--verbose\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--update\":\n    [{\"id\": \"lake-flag--update\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--try-cache\":\n    [{\"id\": \"lake-flag--try-cache\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--toolchain\":\n    [{\"id\": \"lake-option--toolchain\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--scope\":\n    [{\"id\": \"lake-option--scope\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--repo\":\n    [{\"id\": \"lake-option--repo\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--rehash\":\n    [{\"id\": \"lake-flag--rehash\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--reconfigure\":\n    [{\"id\": \"lake-flag--reconfigure\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--quiet\":\n    [{\"id\": \"lake-flag--quiet\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--platform\":\n    [{\"id\": \"lake-option--platform\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--packages\":\n    [{\"id\": \"lake-option--packages\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--old\":\n    [{\"id\": \"lake-flag--old\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--no-cache\":\n    [{\"id\": \"lake-flag--no-cache\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--no-build\":\n    [{\"id\": \"lake-flag--no-build\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--no-ansi\":\n    [{\"id\": \"lake-flag--no-ansi\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--max-revs\":\n    [{\"id\": \"lake-option--max-revs\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--log-level\":\n    [{\"id\": \"lake-option--log-level\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--keep-toolchain\":\n    [{\"id\": \"lake-flag--keep-toolchain\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--iofail\":\n    [{\"id\": \"lake-flag--iofail\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--help\":\n    [{\"id\": \"lake-flag--help\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--file\":\n    [{\"id\": \"lake-option--file\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--fail-level\":\n    [{\"id\": \"lake-option--fail-level\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--dir\":\n    [{\"id\": \"lake-option--dir\",\n      \"data\": \"option\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"--ansi\":\n    [{\"id\": \"lake-flag--ansi\",\n      \"data\": \"flag\",\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}]}},\n  \"Manual.lakeCommand\":\n  {\"title\": \"Lake commands\",\n   \"description\": \"Lake commands\",\n   \"contents\":\n   {\"upload\":\n    [{\"id\": \"upload\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"update\":\n    [{\"id\": \"update\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"unpack\":\n    [{\"id\": \"unpack\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"translate-config\":\n    [{\"id\": \"translate-config\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"test\":\n    [{\"id\": \"test\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"serve\":\n    [{\"id\": \"serve\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"scripts\":\n    [{\"id\": \"script-list\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"script run\":\n    [{\"id\": \"script-run\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"script list\":\n    [{\"id\": \"script-list\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"script doc\":\n    [{\"id\": \"script-doc\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"run\":\n    [{\"id\": \"script-run\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"query\":\n    [{\"id\": \"query\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"pack\":\n    [{\"id\": \"pack\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"new\":\n    [{\"id\": \"new\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lint\":\n    [{\"id\": \"lint\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"lean\":\n    [{\"id\": \"lean\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"init\":\n    [{\"id\": \"init\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"exec\":\n    [{\"id\": \"exe\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"exe\":\n    [{\"id\": \"exe\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"env\":\n    [{\"id\": \"env\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"clean\":\n    [{\"id\": \"clean\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"check-test\":\n    [{\"id\": \"check-test\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"check-lint\":\n    [{\"id\": \"check-lint\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"check-build\":\n    [{\"id\": \"check-build\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"cache put\":\n    [{\"id\": \"cache-put\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"cache get\":\n    [{\"id\": \"cache-get\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"build\":\n    [{\"id\": \"build\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}]}},\n  \"Manual.examples\":\n  {\"title\": \"Manual.examples\",\n   \"description\": \"Manual.examples\",\n   \"contents\":\n   {\"where  for structures\": [],\n    \"Zero-Overhead Subtypes\": [],\n    \"Widths and Newlines\": [],\n    \"Vector length index as a parameter\": [],\n    \"Variations in Instance Definitions\": [],\n    \"Variable not in scope\": [],\n    \"Using Any Local Variable\": [],\n    \"Using  simp?\": [],\n    \"Using  in  for Local Scopes\": [],\n    \"Using  Ord  Instances for  LT  and  LE  Instances\": [],\n    \"Using  NoNatZeroDivisors\": [],\n    \"Using  #print axioms  with  #guard_msgs\": [],\n    \"Updating arrays\": [],\n    \"Unresolvable name inferred by dotted-identifier notation\": [],\n    \"Unnecessary fallback clause\": [],\n    \"Universes, constructors, and parameters\": [],\n    \"Universe-polymorphic identity function\": [],\n    \"Universe-polymorphic  map\": [],\n    \"Universe polymorphism and definitional equality\": [],\n    \"Universe monomorphism in auto-bound implicit parameters\": [],\n    \"Universe mismatch\": [],\n    \"Universe levels of function types\": [],\n    \"Universe level expressions\": [],\n    \"Universe Level Metavariables\": [],\n    \"Unit  in the ABI\": [],\n    \"Uninferred binder type due to resulting type annotation\": [],\n    \"Unexpansion and Arguments\": [],\n    \"Typo in resulting type\": [],\n    \"Types are irrelevant\": [],\n    \"Type Refinement\": [],\n    \"Type Metavariables\": [],\n    \"Turning Off Field Notation\": [],\n    \"Truth-Functional Implication\": [],\n    \"True  is a subsingleton\": [],\n    \"Translating Nested Inductive Types\": [],\n    \"Tracing Instance Search\": [],\n    \"Too Many Instances\": [],\n    \"Throwing and Catching Errors\": [],\n    \"The recursor for  List\": [],\n    \"The recursor for  Bool\": [],\n    \"The Macro Attribute\": [],\n    \"The Integers as a Quotient Type\": [],\n    \"The Identity Monad Transformer \": [],\n    \"The  universe  command when  autoImplicit  is  false\": [],\n    \"The  @[grind ←=]  Attribute\": [],\n    \"The  @[grind ext]  Attribute\": [],\n    \"Testing Return Values\": [],\n    \"Termination failure\": [],\n    \"Termination Proof Tactics During Inference\": [],\n    \"Termination Proof Obligations\": [],\n    \"Terminating Loops in the  Option  Monad\": [],\n    \"Term vs Command Quotation Syntax\": [],\n    \"Target and Facet Specifications\": [],\n    \"Taking Advantage of Run-Time Representations\": [],\n    \"Tail Recursion with Branching\": [],\n    \"Tactic hygiene: inaccessible assumptions\": [],\n    \"Tactic hygiene: accessible assumptions\": [],\n    \"Synthesizing a Type Class Instance\": [],\n    \"Syntax as Strings\": [],\n    \"Suffixed Splices\": [],\n    \"Subtype Coercions\": [],\n    \"Subgoal Sequencing\": [],\n    \"Sub-Array Syntax\": [],\n    \"Structure type inheritance with overlapping fields\": [],\n    \"Structural Recursion vs Subtraction\": [],\n    \"Structural Recursion and Definitional Equality\": [],\n    \"Structural Recursion Under Pairs\": [],\n    \"Stateful Proofs\": [],\n    \"Stateful Predicates\": [],\n    \"State Types\": [],\n    \"Standard Library Types\": [],\n    \"Spuriously mutual types\": [],\n    \"Splitting Predicates\": [],\n    \"Splitting Pattern Matching\": [],\n    \"Splitting Conditional Expressions\": [],\n    \"Specifying Decreasing Parameters\": [],\n    \"Sources as Tables\": [],\n    \"Sort Coercions as Ordinary Coercions\": [],\n    \"Sort Coercions\": [],\n    \"Slicing Lists\": [],\n    \"Simultaneous Matching vs Matching Pairs for Structural Recursion\": [],\n    \"Signed Integers\": [],\n    \"Semi-Output Parameters with Pre-Existing Values\": [],\n    \"Selecting Patterns\": [],\n    \"Section Variables\": [],\n    \"Scoped Macros\": [],\n    \"Scope Information\": [],\n    \"Schematic Variables\": [],\n    \"Schematic Postconditions\": [],\n    \"Running a Program on a File\": [],\n    \"Running a Program\": [],\n    \"Ring Characteristics\": [],\n    \"Right pipeline notation\": [],\n    \"Rewriting Under Binders with  conv\": [],\n    \"Rewriting Propositions\": [],\n    \"Requiring Reservoir Packages from a Git tag\": [],\n    \"Requiring Packages from a Git tag\": [],\n    \"Requiring Packages from Reservoir\": [],\n    \"Requiring Packages from Paths\": [],\n    \"Requiring Packages from Git\": [],\n    \"Representing Syntax as Constructors\": [],\n    \"Relaxed vs Non-Relaxed Automatic Implicit Parameters\": [],\n    \"Refined Parameters\": [],\n    \"Reference Counts in IR\": [],\n    \"Reference Cells as Locks\": [],\n    \"Reducing Functions\": [],\n    \"Reducibility and Tactics\": [],\n    \"Reducibility and Instance Synthesis\": [],\n    \"Reducibility and Generalized Field Notation\": [],\n    \"Redirecting Standard I/O to Strings\": [],\n    \"Recursor with parameters and indices\": [],\n    \"Recursive tactic macro\": [],\n    \"Recursive Equational Lemmas\": [],\n    \"Recursion vs Recursors\": [],\n    \"Reasoning via Lists\": [],\n    \"Reasoning by cases with  match\": [],\n    \"Reasoning by cases with  if\": [],\n    \"Reading from Standard Input\": [],\n    \"Rational Solutions\": [],\n    \"Ranges of Natural Numbers\": [],\n    \"Querying the Environment\": [],\n    \"Quasiquotation\": [],\n    \"Proving Existential Statements\": [],\n    \"Provided Operator Names\": [],\n    \"Protected constant name without namespace prefix\": [],\n    \"Propagating Equalities\": [],\n    \"Proofs in Public\": [],\n    \"Proofs by Induction\": [],\n    \"Proofs are irrelevant\": [],\n    \"Proofs are Private\": [],\n    \"Proofs About Quotients\": [],\n    \"Private and Public Definitions\": [],\n    \"Private Methods\": [],\n    \"Private Field Values\": [],\n    \"Printing Equations\": [],\n    \"Printing Axioms of Simple Definitions\": [],\n    \"Printing Axioms\": [],\n    \"Printing\": [],\n    \"Pretty-Printed Syntax\": [],\n    \"Preprocessing for a custom data type\": [],\n    \"Predicativity of  Type\": [],\n    \"Precedence for Prefix and Infix Operators\": [],\n    \"Postfix Ascription vs  show\": [],\n    \"Popcount\": [],\n    \"Pipeline Fields\": [],\n    \"Patterns from Conclusion and Hypotheses\": [],\n    \"Patterns for Constructors\": [],\n    \"Patterns and default values\": [],\n    \"Pattern-Matching Functions\": [],\n    \"Pattern treated as variable, not constructor\": [],\n    \"Pattern Matching and Lists\": [],\n    \"Pattern Equality Proofs\": [],\n    \"Partial Functions in Proofs\": [],\n    \"Partial Correctness Theorem\": [],\n    \"Parsing Matched Parentheses and Brackets\": [],\n    \"Parsing Comma-Separated Repetitions\": [],\n    \"Parameters before and after the colon\": [],\n    \"Parameter Scope\": [],\n    \"Panic\": [],\n    \"Overly-universe-polymorphic  Bool\": [],\n    \"Overflowing Fixed-Width Literals\": [],\n    \"Output Parameters with Pre-Existing Values\": [],\n    \"Output Parameters and Stuck Search\": [],\n    \"Ordinary vs Strict Implicit Parameters\": [],\n    \"Or  is not a subsingleton\": [],\n    \"Options as Safe Nullability\": [],\n    \"Options as Nullability\": [],\n    \"Optional Splices\": [],\n    \"Opening Scoped Declarations\": [],\n    \"Opening Nested Namespaces\": [],\n    \"One vs. Two Sets of Macro Rules\": [],\n    \"One File, Multiple Handles\": [],\n    \"Omitting parameter in argument to higher-order predicate\": [],\n    \"Observing Uniqueness\": [],\n    \"Numeric Literals for Bitvectors\": [],\n    \"Numeric Literals for  Fin\": [],\n    \"Nonlinear Terms\": [],\n    \"Noncomputable instance in namespace\": [],\n    \"Noncomputable dependency can be made computable\": [],\n    \"Non-strictly-positive inductive types\": [],\n    \"Non-default constructor name\": [],\n    \"Non-Dependent Functions Don't Bind Variables\": [],\n    \"Non-Comma Separators\": [],\n    \"No structure subtyping\": [],\n    \"No cumulativity\": [],\n    \"No Kernel Reasoning About Floating-Point Numbers\": [],\n    \"No Instances of Non-Classes\": [],\n    \"No Backtracking of Lexicographic Order\": [],\n    \"No Automatic Implicit Parameters\": [],\n    \"Newline Characters in Strings\": [],\n    \"Nesting Namespaces and Sections\": [],\n    \"Nested positions\": [],\n    \"Nested Patterns and Sub-Terms\": [],\n    \"Nested Inductive Types with  Std.HashMap\": [],\n    \"Nested Inductive Types and Quotients\": [],\n    \"Nested Inductive Types\": [],\n    \"Nested Dependent Pair Types\": [],\n    \"Nested  do  and Branches\": [],\n    \"Necessarily noncomputable function not appropriately marked\": [],\n    \"Navigation and Rewriting with  conv\": [],\n    \"Natural Numbers as Linear Integer Arithmetic\": [],\n    \"Named goals\": [],\n    \"Named Section\": [],\n    \"Named Arguments\": [],\n    \"Mutually Defined Inductive Types\": [],\n    \"Mutual strict positivity\": [],\n    \"Mutual recursion without parameter decrease\": [],\n    \"Mutual inductive type constructors may not mention each other\": [],\n    \"Mutual Structural Recursion Over Non-Mutual Types\": [],\n    \"Mutual Structural Recursion Over Mutual Types\": [],\n    \"Mutual Block Scope and Automatic Implicit Parameters\": [],\n    \"Mutual Block Scope\": [],\n    \"Multiple Parameters, Same Type\": [],\n    \"Multi-Patterns\": [],\n    \"More Commutative Ring Proofs\": [],\n    \"Monadic functions\": [],\n    \"Monadic Collection Operations\": [],\n    \"Monad Lifts in Function Signatures\": [],\n    \"Modifying Values in Maps\": [],\n    \"Modifiers on structure constructor\": [],\n    \"Mixing Collections\": [],\n    \"Missing resulting type after constructor parameter\": [],\n    \"Missing namespace\": [],\n    \"Missing import\": [],\n    \"Missing  WPMonad  Instance\": [],\n    \"Minimal TOML Package Configuration\": [],\n    \"Minimal Library Target\": [],\n    \"Minimal Executable Target\": [],\n    \"Metavariables in Proofs\": [],\n    \"Meta Definitions\": [],\n    \"Memory Re-Use in IR\": [],\n    \"Maximal Parentheses\": [],\n    \"Matching, With and Without Generalization\": [],\n    \"Matching with an Explicit Motive\": [],\n    \"Matching on Complex Expressions Can Prevent Elaboration\": [],\n    \"Match Patterns Follow Reduction\": [],\n    \"Manually Quotiented Integers\": [],\n    \"Macro Error Reporting\": [],\n    \"Loops are Tail Recursive Functions\": [],\n    \"Longer Prefixes of Current Namespace Take Precedence\": [],\n    \"Longer Identifier Prefixes Take Precedence\": [],\n    \"Long List Literals\": [],\n    \"Location specifiers for  simp\": [],\n    \"Local Names Take Precedence\": [],\n    \"Local Instances Have Priority\": [],\n    \"Local Instances\": [],\n    \"Local Effects with the Identity Monad\": [],\n    \"Lists with Lengths as Applicative Functors\": [],\n    \"Linear Integer Arithmetic with Case Analysis\": [],\n    \"Linear Division and Modulo\": [],\n    \"Limiting  ring  Steps\": [],\n    \"Lifting Transformed Monads\": [],\n    \"Lifting  IO  Monads\": [],\n    \"Library TOML Package Configuration\": [],\n    \"Left-to-Right Generation\": [],\n    \"Left pipeline notation\": [],\n    \"Leading  .  and Unfolding Definitions\": [],\n    \"Leading  .\": [],\n    \"Lazy Lists\": [],\n    \"Iterators and Effects\": [],\n    \"Iterator State Types\": [],\n    \"Iteration over Array Indices with  for\": [],\n    \"Iteration Over Multiple Collections\": [],\n    \"Iterating Over Triples\": [],\n    \"Iterating Over  Nat\": [],\n    \"Iterated Automatic Implicit Parameters\": [],\n    \"Invalid Nested Inductive Types\": [],\n    \"Integer Negation and Addition\": [],\n    \"Insufficient type information\": [],\n    \"Instances for nested types\": [],\n    \"Instances are not recursive\": [],\n    \"Instances are Not Unique\": [],\n    \"Instance Name Generation\": [],\n    \"Inspecting Patterns\": [],\n    \"Injectivity Patterns\": [],\n    \"Inheriting Documentation\": [],\n    \"Inhabited Sum Types\": [],\n    \"Infix Syntax\": [],\n    \"Infix  Functor  and  Applicative  Operators\": [],\n    \"Inferred Termination Annotations\": [],\n    \"Inferred Characteristic\": [],\n    \"Inference too powerful\": [],\n    \"Ineligible decreasing parameters\": [],\n    \"Inductive Types with Constructors\": [],\n    \"Increasing E-matching Limits\": [],\n    \"Incorrect ordering of pattern matches\": [],\n    \"Inconsistent Indices\": [],\n    \"Inconsistencies From Axioms\": [],\n    \"Included and Omitted Section Variables\": [],\n    \"Inaccessible Patterns\": [],\n    \"Inaccessible Assumption Names\": [],\n    \"Impredicativity\": [],\n    \"Impossible Functions\": [],\n    \"Impossible Code Paths\": [],\n    \"Importing Private Information\": [],\n    \"Implicit argument cannot be inferred\": [],\n    \"Implicit and Explicit Parameters to Instances\": [],\n    \"Implicit Parameters from Types\": [],\n    \"Implementing Ranges\": [],\n    \"Implementing Coercions\": [],\n    \"Ignored Terms in Notation Expansion\": [],\n    \"Idiom Brackets\": [],\n    \"Identifying Missing Facts\": [],\n    \"Hierarchical Goal Names\": [],\n    \"Hiding Proof Terms\": [],\n    \"Heterogeneous Equality\": [],\n    \"Grouping and Filling\": [],\n    \"Goals Decided by  linarith\": [],\n    \"Generalized Field Notation\": [],\n    \"From Characters to Strings\": [],\n    \"Forward Pattern Generation\": [],\n    \"Floating-Point Literals\": [],\n    \"Floating-Point Equality Is Not a Congruence\": [],\n    \"Floating-Point Equality Is Not Reflexive\": [],\n    \"Fixed-Width Literals\": [],\n    \"Fixed-Width Bitvector Literals\": [],\n    \"Finitely Many Skips\": [],\n    \"Finite-Field Reasoning\": [],\n    \"Finite and Infinite Ranges\": [],\n    \"Filling Holes with Unification\": [],\n    \"Fields and  grind\": [],\n    \"Field Indices and Structure Inheritance\": [],\n    \"False  is a subsingleton\": [],\n    \"Failing Backward Pattern Generation\": [],\n    \"Extracting the witness from an existential proof\": [],\n    \"Extensional Equality of Subtypes\": [],\n    \"Extending  trivial\": [],\n    \"Exposed and Unexposed Definitions\": [],\n    \"Exporting Private Definitions\": [],\n    \"Exported Names\": [],\n    \"Explicitly-Created Metavariables\": [],\n    \"Explicit Root Namespace\": [],\n    \"Expansion Backtracking\": [],\n    \"Expanding Quasiquotation\": [],\n    \"Excluded Middle and  Decidable\": [],\n    \"Exceptions and Lifting\": [],\n    \"Examples of Linear Integer Arithmetic\": [],\n    \"Even and odd\": [],\n    \"Even Numbers\": [],\n    \"Equational Lemmas\": [],\n    \"Eq  is a subsingleton\": [],\n    \"Enriched Proof Obligation Contexts\": [],\n    \"Elaboration Walkthrough\": [],\n    \"Effect Ordering\": [],\n    \"E-matching and Pattern Matching\": [],\n    \"E-matching Patterns\": [],\n    \"Duplicated Terms in Notation Expansion\": [],\n    \"Duplicate Evaluation in Coercions\": [],\n    \"Dotted identifier where type universe expected\": [],\n    \"Division by Iterated Subtraction: Termination Proof\": [],\n    \"Division by Iterated Subtraction\": [],\n    \"Division by 0\": [],\n    \"Displaying Output\": [],\n    \"Displaying Differences\": [],\n    \"Discriminant Refinement\": [],\n    \"Disambiguation via Typing\": [],\n    \"Differing parameter types\": [],\n    \"Differing numbers of parameters\": [],\n    \"Deriving Multiple Classes\": [],\n    \"Deriving Handlers\": [],\n    \"Dependent projection types\": [],\n    \"Dependent Pairs with Data\": [],\n    \"Dependent Pairs as Sums\": [],\n    \"Dependent Function Types\": [],\n    \"Dependent Coercion to Functions\": [],\n    \"Dependent Coercion\": [],\n    \"Definitional Equality of Unit-Like Types\": [],\n    \"Definitional Equality of Subtypes\": [],\n    \"Definitional Equality of Implicit and Explicit Function Types\": [],\n    \"Definitional Equality of Dependent and Non-Dependent Functions\": [],\n    \"Definitional Equality of  Unit\": [],\n    \"Definition type uninferrable due to unknown parameter type\": [],\n    \"Definition by Partial Fixpoint\": [],\n    \"Defining an intermediate data value within a proof\": [],\n    \"Defining Dependent Coercions\": [],\n    \"Defining Coercions: Decimal Numbers\": [],\n    \"Defining Coercions\": [],\n    \"Default values\": [],\n    \"Default Size Instance\": [],\n    \"Default Instances\": [],\n    \"Dead Code and Subsingleton Elimination\": [],\n    \"Data races with  get  and  set\": [],\n    \"Custom Unit Type\": [],\n    \"Custom Slices\": [],\n    \"Custom Operators in Lean's Output\": [],\n    \"Custom Natural Number Literals\": [],\n    \"Current Namespace Contents Take Precedence Over Opened Namespaces\": [],\n    \"Current Namespace\": [],\n    \"Cross-Phase Code Re-Use\": [],\n    \"Creating and Tracking Proofs That Trust the Compiler\": [],\n    \"Course-of-Values Tables\": [],\n    \"Converting Iterators to Lists\": [],\n    \"Converting Infinite Iterators to Lists\": [],\n    \"Controlling Evaluation with Coercions\": [],\n    \"Controlling Coercion Insertion\": [],\n    \"Consuming Iterators in Loops\": [],\n    \"Consuming Iterators Directly\": [],\n    \"Constructing Lists\": [],\n    \"Congruence Closure\": [],\n    \"Configured Library Target\": [],\n    \"Configured Executable Target\": [],\n    \"Computing types\": [],\n    \"Commutative Rings\": [],\n    \"Commutative Ring Goals Decided by  linarith\": [],\n    \"Commutative (Semi)ring Normalization\": [],\n    \"Coercions and Generalized Field Notation\": [],\n    \"Coercions and  Option\": [],\n    \"Coercions and  OfNat\": [],\n    \"Coercions\": [],\n    \"Coercing to Function Types\": [],\n    \"Coercing from  Fin  to  Nat\": [],\n    \"Coercing Decorated Functions to Function Types\": [],\n    \"CoeOut  vs  Coe  instances\": [],\n    \"Closing a Subprocess's Standard Input\": [],\n    \"Class vs Structure Constructors\": [],\n    \"Class Abbreviations\": [],\n    \"Choosing Eliminators\": [],\n    \"Checking for Type Errors\": [],\n    \"Checking Exit Codes\": [],\n    \"Checking Equality with Pointers\": [],\n    \"Checking Array Bounds\": [],\n    \"Characteristic Zero\": [],\n    \"Built-In Integers as Quotients\": [],\n    \"Bounded Bitvector Literals\": [],\n    \"Binder type requires new type variable\": [],\n    \"Bidirectional Equality Pattern Generation\": [],\n    \"Backward Pattern Generation\": [],\n    \"Axioms and Stuck Reduction\": [],\n    \"Axioms and Compilation\": [],\n    \"Avoiding data races with  modify\": [],\n    \"Avoiding a Type\": [],\n    \"Avoiding Intermediate Structures\": [],\n    \"Automatic universe parameters and the  universe  command\": [],\n    \"Automatic Implicit Parameters and Universe Polymorphism\": [],\n    \"Automatic Implicit Parameters\": [],\n    \"Auto-implicit parameters in structure fields\": [],\n    \"Attempting to use index projection on existential proof\": [],\n    \"Attempting to name an example declaration\": [],\n    \"Attempting to define multiple structure fields on the same line\": [],\n    \"Attempting to define multiple opaque constants at once\": [],\n    \"Atomic Types and  Repr\": [],\n    \"Asynchronous Subprocesses\": [],\n    \"Assumptions by Type, Outside Proofs\": [],\n    \"Assumptions by Type\": [],\n    \"Assumption Names and Conclusion\": [],\n    \"Assigned Operator Names\": [],\n    \"Ascribing Types to  do  Blocks\": [],\n    \"Ascribing Statements to Proofs\": [],\n    \"Array Literals\": [],\n    \"Array Indexing\": [],\n    \"Antiquotation Annotations\": [],\n    \"Anonymous constructors\": [],\n    \"Anonymous Goals\": [],\n    \"And  is a subsingleton\": [],\n    \"An instance for a sum class\": [],\n    \"Ambiguous Operators and Priorities\": [],\n    \"Ambiguous Identifiers\": [],\n    \"Aligned Columns\": [],\n    \"Algebraic Reasoning\": [],\n    \"Accessible Assumption Names\": [],\n    \"A unit type\": [],\n    \"A type with parameter and index\": [],\n    \"A true proposition\": [],\n    \"A recursive instance for a sum class\": [],\n    \"A constructorless type\": [],\n    \"A constructorless proposition\": [],\n    \"A Logging Monad\": [],\n    \"#print  and Structure Types\": [],\n    \"#check  and Underdetermined Types\": []}},\n  \"Manual.errorExplanation\":\n  {\"title\": \"Error Explanations\",\n   \"description\": \"Error Explanations\",\n   \"contents\":\n   {\"lean.unknownIdentifier\":\n    [{\"id\": \"lean___unknownIdentifier\",\n      \"data\":\n      {\"summary\": \"Failed to resolve identifier to variable or constant.\"},\n      \"address\": \"/Error-Explanations/lean___unknownIdentifier/\"}],\n    \"lean.redundantMatchAlt\":\n    [{\"id\": \"lean___redundantMatchAlt\",\n      \"data\": {\"summary\": \"Match alternative will never be reached.\"},\n      \"address\": \"/Error-Explanations/lean___redundantMatchAlt/\"}],\n    \"lean.propRecLargeElim\":\n    [{\"id\": \"lean___propRecLargeElim\",\n      \"data\":\n      {\"summary\":\n       \"Attempted to eliminate a proof into a higher type universe.\"},\n      \"address\": \"/Error-Explanations/lean___propRecLargeElim/\"}],\n    \"lean.projNonPropFromProp\":\n    [{\"id\": \"lean___projNonPropFromProp\",\n      \"data\": {\"summary\": \"Tried to project data from a proof.\"},\n      \"address\": \"/Error-Explanations/lean___projNonPropFromProp/\"}],\n    \"lean.invalidDottedIdent\":\n    [{\"id\": \"lean___invalidDottedIdent\",\n      \"data\":\n      {\"summary\":\n       \"Dotted identifier notation used with invalid or uninferrable expected type.\"},\n      \"address\": \"/Error-Explanations/lean___invalidDottedIdent/\"}],\n    \"lean.inferDefTypeFailed\":\n    [{\"id\": \"lean___inferDefTypeFailed\",\n      \"data\": {\"summary\": \"The type of a definition could not be inferred.\"},\n      \"address\": \"/Error-Explanations/lean___inferDefTypeFailed/\"}],\n    \"lean.inferBinderTypeFailed\":\n    [{\"id\": \"lean___inferBinderTypeFailed\",\n      \"data\": {\"summary\": \"The type of a binder could not be inferred.\"},\n      \"address\": \"/Error-Explanations/lean___inferBinderTypeFailed/\"}],\n    \"lean.inductiveParamMissing\":\n    [{\"id\": \"lean___inductiveParamMissing\",\n      \"data\":\n      {\"summary\":\n       \"Parameter not present in an occurrence of an inductive type in one of its constructors.\"},\n      \"address\": \"/Error-Explanations/lean___inductiveParamMissing/\"}],\n    \"lean.inductiveParamMismatch\":\n    [{\"id\": \"lean___inductiveParamMismatch\",\n      \"data\":\n      {\"summary\":\n       \"Invalid parameter in an occurrence of an inductive type in one of its constructors.\"},\n      \"address\": \"/Error-Explanations/lean___inductiveParamMismatch/\"}],\n    \"lean.dependsOnNoncomputable\":\n    [{\"id\": \"lean___dependsOnNoncomputable\",\n      \"data\":\n      {\"summary\":\n       \"Declaration depends on noncomputable definitions but is not marked as noncomputable\"},\n      \"address\": \"/Error-Explanations/lean___dependsOnNoncomputable/\"}],\n    \"lean.ctorResultingTypeMismatch\":\n    [{\"id\": \"lean___ctorResultingTypeMismatch\",\n      \"data\":\n      {\"summary\":\n       \"Resulting type of constructor was not the inductive type being declared.\"},\n      \"address\": \"/Error-Explanations/lean___ctorResultingTypeMismatch/\"}]}},\n  \"Manual.envVar\":\n  {\"title\": \"Environment Variables\",\n   \"description\": \"Environment Variables\",\n   \"contents\":\n   {\"LEAN_SYSROOT\":\n    [{\"id\": \"LEAN_SYSROOT\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LEAN_NUM_THREADS\":\n    [{\"id\": \"LEAN_NUM_THREADS\",\n      \"data\": null,\n      \"address\": \"/IO/Tasks-and-Threads/\"}],\n    \"LEAN_CC\":\n    [{\"id\": \"LEAN_CC\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LEAN_AR\":\n    [{\"id\": \"LEAN_AR\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LEAN\":\n    [{\"id\": \"LEAN\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_OVERRIDE_LEAN\":\n    [{\"id\": \"LAKE_OVERRIDE_LEAN\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_NO_CACHE\":\n    [{\"id\": \"LAKE_NO_CACHE\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_HOME\":\n    [{\"id\": \"LAKE_HOME\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_CACHE_REVISION_ENDPOINT\":\n    [{\"id\": \"LAKE_CACHE_REVISION_ENDPOINT\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_CACHE_KEY\":\n    [{\"id\": \"LAKE_CACHE_KEY\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_CACHE_ARTIFACT_ENDPOINT\":\n    [{\"id\": \"LAKE_CACHE_ARTIFACT_ENDPOINT\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE_ARTIFACT_CACHE\":\n    [{\"id\": \"LAKE_ARTIFACT_CACHE\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"LAKE\":\n    [{\"id\": \"LAKE\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"ELAN_HOME\":\n    [{\"id\": \"ELAN_HOME\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"ELAN_HOME-next\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"ELAN\":\n    [{\"id\": \"ELAN\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"CC\":\n    [{\"id\": \"CC\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"AR\":\n    [{\"id\": \"AR\",\n      \"data\": null,\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}]}},\n  \"Manual.elanOpt\":\n  {\"title\": \"Manual.elanOpt\",\n   \"description\": \"Manual.elanOpt\",\n   \"contents\":\n   {\"-v\":\n    [{\"id\": \"elan-flag-v\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"-h\":\n    [{\"id\": \"elan-flag-h\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"-V\":\n    [{\"id\": \"elan-flag-V\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--version\":\n    [{\"id\": \"elan-flag--version\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--verbose\":\n    [{\"id\": \"elan-flag--verbose\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--path\":\n    [{\"id\": \"elan-option--path\",\n      \"data\": \"option\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--nonexistent\":\n    [{\"id\": \"elan-flag--nonexistent\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--json\":\n    [{\"id\": \"elan-flag--json\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--install\":\n    [{\"id\": \"elan-flag--install\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--help\":\n    [{\"id\": \"elan-flag--help\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"--delete\":\n    [{\"id\": \"elan-flag--delete\",\n      \"data\": \"flag\",\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}]}},\n  \"Manual.elanCommand\":\n  {\"title\": \"Elan commands\",\n   \"description\": \"Elan commands\",\n   \"contents\":\n   {\"which\":\n    [{\"id\": \"which\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain uninstall\":\n    [{\"id\": \"toolchain-uninstall\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain list\":\n    [{\"id\": \"toolchain-list\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain link\":\n    [{\"id\": \"toolchain-link\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain install\":\n    [{\"id\": \"toolchain-install\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"toolchain gc\":\n    [{\"id\": \"toolchain-gc\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"show\":\n    [{\"id\": \"show-next\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"self update\":\n    [{\"id\": \"self-update\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"self uninstall\":\n    [{\"id\": \"self-uninstall\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"run\":\n    [{\"id\": \"run\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"override unset\":\n    [{\"id\": \"override-unset\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"override set\":\n    [{\"id\": \"override-set\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"override list\":\n    [{\"id\": \"override-list\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"default\":\n    [{\"id\": \"default\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}],\n    \"completions\":\n    [{\"id\": \"completions\",\n      \"data\": null,\n      \"address\":\n      \"/Build-Tools-and-Distribution/Managing-Toolchains-with-Elan/\"}]}},\n  \"Manual.Syntax.production\":\n  {\"title\": \"Manual.Syntax.production\",\n   \"description\": \"Manual.Syntax.production\",\n   \"contents\":\n   {\"«term∃_,_» [{\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term∃_,_»\",\n       \"forms\":\n       [{\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"«term∃_,_» [{\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term∃_,_»\",\n       \"forms\":\n       [{\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"«term‹_›» [{\\\"string\\\": \\\"‹\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"›\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_term_FLQ___FRQ__FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term‹_›»\",\n       \"forms\":\n       [{\"string\": \"‹\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"›\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Reading-Proof-States/\"}],\n    \"«termΣ_,_» [{\\\"string\\\": \\\"Σ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«termΣ_,_»\",\n       \"forms\":\n       [{\"string\": \"Σ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«termΣ_,_» [{\\\"string\\\": \\\"Σ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«termΣ_,_»\",\n       \"forms\":\n       [{\"string\": \"Σ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«termΣ'_,_» [{\\\"string\\\": \\\"Σ'\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term____________FLQQ_\",\n      \"data\":\n      {\"kind\": \"«termΣ'_,_»\",\n       \"forms\":\n       [{\"string\": \"Σ'\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«termΣ'_,_» [{\\\"string\\\": \\\"Σ'\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term____________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«termΣ'_,_»\",\n       \"forms\":\n       [{\"string\": \"Σ'\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term¬_» [{\\\"string\\\": \\\"¬\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_____FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term¬_»\",\n       \"forms\":\n       [{\"string\": \"¬\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term{_:_//_}» [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"//\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_term___________________FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term{_:_//_}»\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"//\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"«term{_:_//_}» [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"//\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_term___________________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term{_:_//_}»\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"//\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Subtypes/\"}],\n    \"«term_⊕_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⊕\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_⊕_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⊕\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"«term_⊕'_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⊕'\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_⊕'_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⊕'\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Sum-Types/\"}],\n    \"«term_≥_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"≥\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next\",\n      \"data\":\n      {\"kind\": \"«term_≥_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"≥\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_≤_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"≤\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term_≤_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"≤\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_≍_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"≍\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_≍_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"≍\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"«term_≈_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"≈\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_≈_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"≈\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Quotients/\"}],\n    \"«term_∨_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"∨\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_∨_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"∨\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term_∧_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"∧\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_∧_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"∧\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term_↔_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"↔\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_↔_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"↔\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Logical-Connectives/\"}],\n    \"«term_×_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"×\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_×_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"×\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term_×__1» [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"×\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______1_FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_×__1»\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"×\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term_×'_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"×'\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_×'_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"×'\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"«term_||_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"||\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_||_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"||\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"«term_|>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"|>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_____GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_|>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"«term_>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\">\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \">\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_>>=_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\">>=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__GT__GT______FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_>>=_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \">>=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_>=>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\">=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__GT_____GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_>=>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \">=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_=_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term______FLQQ_-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_=_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"«term_=<<_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=<<\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_____LT__LT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_=<<_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=<<\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<|_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT______FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_<|_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"«term_<|>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<|>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_<|>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<|>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_<_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Basic-Classes/\"}],\n    \"«term_<=<_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<=<\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT_____LT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_<=<_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<=<\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<*_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<*\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT______FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term_<*_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<*\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<*>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<*>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_-next-next\",\n      \"data\":\n      {\"kind\": \"«term_<*>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<*>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<&>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<&>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term_<&>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<&>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_<$>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<$>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term__LT_____GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term_<$>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<$>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_::_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"::\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"_FLQQ_term_________FLQQ_-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"«term_::_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"::\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"«term_*>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"*>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_____GT___FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term_*>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"*>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"«term_&&_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"&&\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_term_________FLQQ_-next-next\",\n      \"data\":\n      {\"kind\": \"«term_&&_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"&&\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"«term[_]» [{\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_term_LSQ___RSQ__FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term[_]»\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"},\n     {\"id\": \"_FLQQ_term_LSQ___RSQ__FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term[_]»\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"«termExists_,_» [{\\\"string\\\": \\\"exists\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_termExists______FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«termExists_,_»\",\n       \"forms\":\n       [{\"string\": \"exists\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"«termExists_,_» [{\\\"string\\\": \\\"exists\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_termExists______FLQQ_\",\n      \"data\":\n      {\"kind\": \"«termExists_,_»\",\n       \"forms\":\n       [{\"string\": \"exists\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"«term#[_,]» [{\\\"string\\\": \\\"#[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_term____LSQ______RSQ__FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«term#[_,]»\",\n       \"forms\":\n       [{\"string\": \"#[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Arrays/\"},\n     {\"id\": \"_FLQQ_term____LSQ______RSQ__FLQQ_\",\n      \"data\":\n      {\"kind\": \"«term#[_,]»\",\n       \"forms\":\n       [{\"string\": \"#[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Numeric-Literals/\"}],\n    \"«stx_<|>_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<|>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"_FLQQ_stx__LT_____GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"«stx_<|>_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<|>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,+» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",+\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_stx________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«stx_,+»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",+\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,+,?» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",+,?\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_stx______________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«stx_,+,?»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",+,?\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,*» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",*\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_stx________FLQQ_\",\n      \"data\":\n      {\"kind\": \"«stx_,*»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",*\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_,*,?» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\",*,?\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_stx______________FLQQ_\",\n      \"data\":\n      {\"kind\": \"«stx_,*,?»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \",*,?\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_+» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"+\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_stx_____FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"«stx_+»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"+\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«stx_*» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"*\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_stx_____FLQQ_\",\n      \"data\":\n      {\"kind\": \"«stx_*»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"*\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"«prio(_)» [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_prio_LPAR___RPAR__FLQQ_\",\n      \"data\":\n      {\"kind\": \"«prio(_)»\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"«prec(_)» [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"_FLQQ_prec_LPAR___RPAR__FLQQ_\",\n      \"data\":\n      {\"kind\": \"«prec(_)»\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"termIfThenElse [{\\\"string\\\": \\\"if\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"then\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"else\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"termIfThenElse\",\n      \"data\":\n      {\"kind\": \"termIfThenElse\",\n       \"forms\":\n       [{\"string\": \"if\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"then\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"else\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"termIfLet [{\\\"string\\\": \\\"if\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"let\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"then\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"else\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"termIfLet\",\n      \"data\":\n      {\"kind\": \"termIfLet\",\n       \"forms\":\n       [{\"string\": \"if\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"let\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"then\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"else\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"termDepIfThenElse [{\\\"string\\\": \\\"if\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"then\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"else\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"termDepIfThenElse\",\n      \"data\":\n      {\"kind\": \"termDepIfThenElse\",\n       \"forms\":\n       [{\"string\": \"if\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"then\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"else\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"term!_ [{\\\"string\\\": \\\"!\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"term____\",\n      \"data\":\n      {\"kind\": \"term!_\",\n       \"forms\":\n       [{\"string\": \"!\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"stx_? [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"stx____\",\n      \"data\":\n      {\"kind\": \"stx_?\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"?\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"stx!_ [{\\\"string\\\": \\\"!\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"stx____-next\",\n      \"data\":\n      {\"kind\": \"stx!_\",\n       \"forms\":\n       [{\"string\": \"!\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"str.antiquot [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"str___antiquot\",\n      \"data\":\n      {\"kind\": \"str.antiquot\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"prioMid [{\\\"string\\\": \\\"mid\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"prioMid\",\n      \"data\":\n      {\"kind\": \"prioMid\",\n       \"forms\": [{\"string\": \"mid\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"prioLow [{\\\"string\\\": \\\"low\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"prioLow\",\n      \"data\":\n      {\"kind\": \"prioLow\",\n       \"forms\": [{\"string\": \"low\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"prioHigh [{\\\"string\\\": \\\"high\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"prioHigh\",\n      \"data\":\n      {\"kind\": \"prioHigh\",\n       \"forms\": [{\"string\": \"high\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"prioDefault [{\\\"string\\\": \\\"default\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"prioDefault\",\n      \"data\":\n      {\"kind\": \"prioDefault\",\n       \"forms\": [{\"string\": \"default\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"precMin [{\\\"string\\\": \\\"min\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"precMin\",\n      \"data\":\n      {\"kind\": \"precMin\",\n       \"forms\": [{\"string\": \"min\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"precMax [{\\\"string\\\": \\\"max\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"precMax\",\n      \"data\":\n      {\"kind\": \"precMax\",\n       \"forms\": [{\"string\": \"max\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"precLead [{\\\"string\\\": \\\"lead\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"precLead\",\n      \"data\":\n      {\"kind\": \"precLead\",\n       \"forms\": [{\"string\": \"lead\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"precArg [{\\\"string\\\": \\\"arg\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"precArg\",\n      \"data\":\n      {\"kind\": \"precArg\",\n       \"forms\": [{\"string\": \"arg\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"num.antiquot [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"num___antiquot-next\",\n      \"data\":\n      {\"kind\": \"num.antiquot\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"},\n     {\"id\": \"num___antiquot\",\n      \"data\":\n      {\"kind\": \"num.antiquot\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"ident.antiquot [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"ident___antiquot\",\n      \"data\":\n      {\"kind\": \"ident.antiquot\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"coeSortNotation [{\\\"string\\\": \\\"↥\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"coeSortNotation\",\n      \"data\":\n      {\"kind\": \"coeSortNotation\",\n       \"forms\":\n       [{\"string\": \"↥\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Coercions/Coercing-to-Sorts/\"}],\n    \"coeNotation [{\\\"string\\\": \\\"↑\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"coeNotation\",\n      \"data\":\n      {\"kind\": \"coeNotation\",\n       \"forms\":\n       [{\"string\": \"↑\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"coeFunNotation [{\\\"string\\\": \\\"⇑\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"coeFunNotation\",\n      \"data\":\n      {\"kind\": \"coeFunNotation\",\n       \"forms\":\n       [{\"string\": \"⇑\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Coercions/Coercing-to-Function-Types/\"}],\n    \"boolIfThenElse [{\\\"string\\\": \\\"bif\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"then\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"else\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"boolIfThenElse\",\n      \"data\":\n      {\"kind\": \"boolIfThenElse\",\n       \"forms\":\n       [{\"string\": \"bif\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"then\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"else\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Conditionals/\"}],\n    \"Std.«term_<..._» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"<...\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term__LT____________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_<..._»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"<...\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_<...=_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"<...=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term__LT_______________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_<...=_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"<...=\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_<...<_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"<...<\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term__LT___________LT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_<...<_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"<...<\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_<...*» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}, {\\\"string\\\": \\\"<...*\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term__LT______________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_<...*»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"<...*\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_..._» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"...\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term____________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_..._»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"...\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_...=_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"...=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term_______________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_...=_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"...=\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_...<_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"...<\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term___________LT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_...<_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"...<\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term_...*» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}, {\\\"string\\\": \\\"...*\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term______________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term_...*»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"...*\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*..._» [{\\\"string\\\": \\\"*...\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term______________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"Std.«term*..._»\",\n       \"forms\":\n       [{\"string\": \"*...\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*...=_» [{\\\"string\\\": \\\"*...=\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term_________________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term*...=_»\",\n       \"forms\":\n       [{\"string\": \"*...=\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*...<_» [{\\\"string\\\": \\\"*...<\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term_____________LT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term*...<_»\",\n       \"forms\":\n       [{\"string\": \"*...<\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.«term*...*» [{\\\"string\\\": \\\"*...*\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std____FLQQ_term________________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.«term*...*»\",\n       \"forms\": [{\"string\": \"*...*\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Ranges/\"}],\n    \"Std.Tactic.Do.mgoalStx [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⊢ₛ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Tactic___Do___mgoalStx-next\",\n      \"data\":\n      {\"kind\": \"Std.Tactic.Do.mgoalStx\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⊢ₛ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Proof-Mode/\"}],\n    \"Std.HashMap.«term_~m_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"~m\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___HashMap____FLQQ_term____m__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.HashMap.«term_~m_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"~m\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"},\n     {\"id\": \"Std___HashMap____FLQQ_term____m__FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"Std.HashMap.«term_~m_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"~m\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Std.Do.«term⌜_⌝» [{\\\"string\\\": \\\"⌜\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"⌝\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term⌜_⌝»\",\n       \"forms\":\n       [{\"string\": \"⌜\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"⌝\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term⊢ₛ_» [{\\\"string\\\": \\\"⊢ₛ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term_VDASH______FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term⊢ₛ_»\",\n       \"forms\":\n       [{\"string\": \"⊢ₛ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⊣⊢ₛ_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⊣⊢ₛ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term_____VDASH______FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_⊣⊢ₛ_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⊣⊢ₛ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⊢ₛ_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⊢ₛ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term__VDASH______FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_⊢ₛ_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⊢ₛ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⊢ₚ_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⊢ₚ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term__VDASH______FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_⊢ₚ_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⊢ₚ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_∧ₚ_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"∧ₚ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term_________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_∧ₚ_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"∧ₚ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⇓_=>_» [{\\\"string\\\": \\\"⇓\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term_________GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_⇓_=>_»\",\n       \"forms\":\n       [{\"string\": \"⇓\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"},\n     {\"id\": \"Std___Do____FLQQ_term_________GT___FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_⇓_=>_»\",\n       \"forms\":\n       [{\"string\": \"⇓\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_⇓?_=>_» [{\\\"string\\\": \\\"⇓?\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term____________GT___FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_⇓?_=>_»\",\n       \"forms\":\n       [{\"string\": \"⇓?\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«term_→ₚ_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→ₚ\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_term__ARR______FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«term_→ₚ_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→ₚ\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termWp⟦_:_⟧» [{\\\"string\\\": \\\"wp⟦\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"⟧\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_termWp____________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termWp⟦_:_⟧»\",\n       \"forms\":\n       [{\"string\": \"wp⟦\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \"⟧\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termTerm(_)» [{\\\"string\\\": \\\"term(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_termTerm_LPAR___RPAR__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termTerm(_)»\",\n       \"forms\":\n       [{\"string\": \"term(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"∨\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"∨\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"∧\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"∧\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"↔\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"↔\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.«termSpred(_)» [{\\\"string\\\": \\\"spred(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"¬\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do____FLQQ_termSpred_LPAR___RPAR__FLQQ_-next-next-next\",\n      \"data\":\n      {\"kind\": \"Std.Do.«termSpred(_)»\",\n       \"forms\":\n       [{\"string\": \"spred(\", \"kind\": \"keyword\"},\n        {\"string\": \"¬\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.Do.triple [{\\\"string\\\": \\\"⦃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⦄\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⦃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⦄\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Std___Do___triple\",\n      \"data\":\n      {\"kind\": \"Std.Do.triple\",\n       \"forms\":\n       [{\"string\": \"⦃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⦄\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⦃\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⦄\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Std.DHashMap.«term_~m_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"~m\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Std___DHashMap____FLQQ_term____m__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Std.DHashMap.«term_~m_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"~m\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Maps-and-Sets/\"}],\n    \"Manual.FreeSyntax.more []\":\n    [{\"id\": \"Manual___FreeSyntax___more-next-next-next\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.more\", \"forms\": [], \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"},\n     {\"id\": \"Manual___FreeSyntax___more-next-next\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.more\", \"forms\": [], \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"},\n     {\"id\": \"Manual___FreeSyntax___more\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.more\", \"forms\": [], \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"},\n     {\"id\": \"Manual___FreeSyntax___more-next\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.more\", \"forms\": [], \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Manual.FreeSyntax.embed [{\\\"string\\\": \\\"fun \\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\": \\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" =>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Manual___FreeSyntax___embed\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.embed\",\n       \"forms\":\n       [{\"string\": \"fun \", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \": \", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" =>\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Manual.FreeSyntax.done []\":\n    [{\"id\": \"Manual___FreeSyntax___done-next-next\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.done\", \"forms\": [], \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Manual___FreeSyntax___done-next\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.done\", \"forms\": [], \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"},\n     {\"id\": \"Manual___FreeSyntax___done\",\n      \"data\":\n      {\"kind\": \"Manual.FreeSyntax.done\", \"forms\": [], \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"List.«term_~_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"~\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"List____FLQQ_term______FLQQ_\",\n      \"data\":\n      {\"kind\": \"List.«term_~_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"~\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<:+_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<:+\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"List____FLQQ_term__LT_________FLQQ_-next\",\n      \"data\":\n      {\"kind\": \"List.«term_<:+_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<:+\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<:+:_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<:+:\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"List____FLQQ_term__LT____________FLQQ_\",\n      \"data\":\n      {\"kind\": \"List.«term_<:+:_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<:+:\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<+_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<+\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"List____FLQQ_term__LT______FLQQ_\",\n      \"data\":\n      {\"kind\": \"List.«term_<+_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<+\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"List.«term_<+:_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<+:\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"List____FLQQ_term__LT_________FLQQ_\",\n      \"data\":\n      {\"kind\": \"List.«term_<+:_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<+:\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Linked-Lists/\"}],\n    \"Lean.«term_Matches_|» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"matches\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean____FLQQ_term_Matches_____FLQQ_\",\n      \"data\":\n      {\"kind\": \"Lean.«term_Matches_|»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"matches\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.reduceCmd [{\\\"string\\\": \\\"#reduce\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"proofs\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"true\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"types\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"true\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___reduceCmd\",\n      \"data\":\n      {\"kind\": \"Lean.reduceCmd\",\n       \"forms\":\n       [{\"string\": \"#reduce\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"proofs\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"true\", \"kind\": \"keyword\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"types\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"true\", \"kind\": \"keyword\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsWhitespaceArg [{\\\"string\\\": \\\"normalized\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsWhitespaceArg-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsWhitespaceArg\",\n       \"forms\": [{\"string\": \"normalized\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsWhitespaceArg [{\\\"string\\\": \\\"lax\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsWhitespaceArg-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsWhitespaceArg\",\n       \"forms\": [{\"string\": \"lax\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsWhitespaceArg [{\\\"string\\\": \\\"exact\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsWhitespaceArg-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsWhitespaceArg\",\n       \"forms\": [{\"string\": \"exact\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsSpecElt [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsSpecElt-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsSpecElt\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsSpecElt [{\\\"string\\\": \\\"whitespace\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsSpecElt-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsSpecElt\",\n       \"forms\":\n       [{\"string\": \"whitespace\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsSpecElt [{\\\"string\\\": \\\"ordering\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsSpecElt-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsSpecElt\",\n       \"forms\":\n       [{\"string\": \"ordering\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsFilter [{\\\"string\\\": \\\"drop\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"warning\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsFilter-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsFilter\",\n       \"forms\":\n       [{\"string\": \"drop\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"warning\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsFilter [{\\\"string\\\": \\\"drop\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"info\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsFilter-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsFilter\",\n       \"forms\":\n       [{\"string\": \"drop\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"info\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsFilter [{\\\"string\\\": \\\"drop\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"error\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsFilter-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsFilter\",\n       \"forms\":\n       [{\"string\": \"drop\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"error\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsFilter [{\\\"string\\\": \\\"drop\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"all\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsFilter-next\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsFilter\",\n       \"forms\":\n       [{\"string\": \"drop\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"all\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.guardMsgsCmd [{\\\"string\\\": \\\"#guard_msgs\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"in\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___guardMsgsCmd\",\n      \"data\":\n      {\"kind\": \"Lean.guardMsgsCmd\",\n       \"forms\":\n       [{\"string\": \"#guard_msgs\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"in\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.PrettyPrinter.Delaborator.attrApp_delab_ [{\\\"string\\\": \\\"app_delab\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___PrettyPrinter___Delaborator___attrApp_delab_\",\n      \"data\":\n      {\"kind\": \"Lean.PrettyPrinter.Delaborator.attrApp_delab_\",\n       \"forms\":\n       [{\"string\": \"app_delab\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Lean.Parser.commandUnseal__ [{\\\"string\\\": \\\"unseal\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___commandUnseal__\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.commandUnseal__\",\n       \"forms\":\n       [{\"string\": \"unseal\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.commandSeal__ [{\\\"string\\\": \\\"seal\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___commandSeal__\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.commandSeal__\",\n       \"forms\":\n       [{\"string\": \"seal\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Termination.terminationBy [{\\\"string\\\": \\\"termination_by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"structural\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Termination___terminationBy-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Termination.terminationBy\",\n       \"forms\":\n       [{\"string\": \"termination_by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"structural\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Termination.terminationBy [{\\\"string\\\": \\\"termination_by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Termination___terminationBy-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Termination.terminationBy\",\n       \"forms\":\n       [{\"string\": \"termination_by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Term.typeAscription [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"[anonymous]\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___typeAscription-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.typeAscription\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"[anonymous]\", \"kind\": \"literalIdent\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Type-Ascription/\"},\n     {\"id\": \"Lean___Parser___Term___typeAscription\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.typeAscription\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"[anonymous]\", \"kind\": \"literalIdent\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.tuple [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"[anonymous]\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___tuple\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.tuple\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"[anonymous]\", \"kind\": \"literalIdent\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Tuples/\"}],\n    \"Lean.Parser.Term.syntheticHole [{\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___syntheticHole\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.syntheticHole\",\n       \"forms\":\n       [{\"string\": \"?\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Holes/\"}],\n    \"Lean.Parser.Term.syntheticHole [{\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___syntheticHole-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.syntheticHole\",\n       \"forms\":\n       [{\"string\": \"?\", \"kind\": \"keyword\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Holes/\"}],\n    \"Lean.Parser.Term.subst [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"▸\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___subst\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.subst\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"▸\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Propositional-Equality/\"}],\n    \"Lean.Parser.Term.structInstField [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___structInstField-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.structInstField\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Term.structInstField [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"private\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___structInstField\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.structInstField\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"private\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Term.structInst [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"with\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___structInst-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.structInst\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"with\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Term.structInst [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___structInst\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.structInst\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Term.strictImplicitBinder [{\\\"string\\\": \\\"⦃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⦄\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___strictImplicitBinder-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.strictImplicitBinder\",\n       \"forms\":\n       [{\"string\": \"⦃\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⦄\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.strictImplicitBinder [{\\\"string\\\": \\\"⦃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"⦄\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___strictImplicitBinder\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.strictImplicitBinder\",\n       \"forms\":\n       [{\"string\": \"⦃\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"⦄\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.strictImplicitBinder [{\\\"string\\\": \\\"⦃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"⦄\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___strictImplicitBinder-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.strictImplicitBinder\",\n       \"forms\":\n       [{\"string\": \"⦃\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"⦄\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.strictImplicitBinder [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___strictImplicitBinder-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.strictImplicitBinder\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.stateRefT [{\\\"string\\\": \\\"StateRefT\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___stateRefT\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.stateRefT\",\n       \"forms\":\n       [{\"string\": \"StateRefT\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\":\n      \"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/\"}],\n    \"Lean.Parser.Term.show [{\\\"string\\\": \\\"show\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"from\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___show\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.show\",\n       \"forms\":\n       [{\"string\": \"show\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"from\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Type-Ascription/\"}],\n    \"Lean.Parser.Term.show [{\\\"string\\\": \\\"show\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___show-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.show\",\n       \"forms\":\n       [{\"string\": \"show\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Type-Ascription/\"}],\n    \"Lean.Parser.Term.proj [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\".\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___proj\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.proj\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \".\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Lean.Parser.Term.pipeProj [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"|>.\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___pipeProj-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.pipeProj\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|>.\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"},\n     {\"id\": \"Lean___Parser___Term___pipeProj\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.pipeProj\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|>.\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Lean.Parser.Term.paren [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"[anonymous]\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___paren\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.paren\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"[anonymous]\", \"kind\": \"literalIdent\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.nomatch [{\\\"string\\\": \\\"nomatch\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___nomatch\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.nomatch\",\n       \"forms\":\n       [{\"string\": \"nomatch\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.nofun [{\\\"string\\\": \\\"nofun\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___nofun\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.nofun\",\n       \"forms\": [{\"string\": \"nofun\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.namedPattern [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___namedPattern\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.namedPattern\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"@\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.namedPattern [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___namedPattern-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.namedPattern\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"@\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.matchDiscr [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___matchDiscr\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.matchDiscr\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.matchDiscr [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___matchDiscr-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.matchDiscr\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.match [{\\\"string\\\": \\\"match\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"generalizing\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"motive\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"with\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")|*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___match\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.match\",\n       \"forms\":\n       [{\"string\": \"match\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"generalizing\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"motive\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"with\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")|*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.instBinder [{\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___instBinder-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.instBinder\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.instBinder [{\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___instBinder-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.instBinder\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.instBinder [{\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___instBinder\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.instBinder\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.inaccessible [{\\\"string\\\": \\\".(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___inaccessible\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.inaccessible\",\n       \"forms\":\n       [{\"string\": \".(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.implicitBinder [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___implicitBinder\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.implicitBinder\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.implicitBinder [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___implicitBinder-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.implicitBinder\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.implicitBinder [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___implicitBinder-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.implicitBinder\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.hole [{\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___hole\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.hole\",\n       \"forms\": [{\"string\": \"_\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Holes/\"}],\n    \"Lean.Parser.Term.fun [{\\\"string\\\": \\\"fun\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___fun\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.fun\",\n       \"forms\":\n       [{\"string\": \"fun\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.fun\",\n       \"forms\":\n       [{\"string\": \"fun\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.fun\",\n       \"forms\":\n       [{\"string\": \"fun\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.fun [{\\\"string\\\": \\\"fun\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___fun-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.fun\",\n       \"forms\":\n       [{\"string\": \"fun\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"},\n     {\"id\": \"Lean___Parser___Term___fun-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.fun\",\n       \"forms\":\n       [{\"string\": \"fun\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Functions/\"}],\n    \"Lean.Parser.Term.fun [{\\\"string\\\": \\\"fun\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___fun-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.fun\",\n       \"forms\":\n       [{\"string\": \"fun\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Term.forall [{\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___forall-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.forall\",\n       \"forms\":\n       [{\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Lean.Parser.Term.forall [{\\\"string\\\": \\\"∀\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___forall\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.forall\",\n       \"forms\":\n       [{\"string\": \"∀\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Lean.Parser.Term.forall [{\\\"string\\\": \\\"forall\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___forall-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.forall\",\n       \"forms\":\n       [{\"string\": \"forall\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Lean.Parser.Term.forall [{\\\"string\\\": \\\"forall\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___forall-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.forall\",\n       \"forms\":\n       [{\"string\": \"forall\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Propositions/Quantifiers/\"}],\n    \"Lean.Parser.Term.explicitBinder [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___explicitBinder\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.explicitBinder\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.explicitBinder [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___explicitBinder-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.explicitBinder\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doSeqItem-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"while\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"do\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"while\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"do\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"while\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"do\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"while\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"do\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"unless\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"do\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"unless\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"do\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"return\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\": [{\"string\": \"return\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"return\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"return\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"repeat\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"repeat\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"repeat\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"until\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"repeat\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"until\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"match\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"),*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"with\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"match\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"),*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"with\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"let\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doSeqItem-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"let\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"let\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doSeqItem-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"let\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"let\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"let\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"let\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"mut\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"let\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"mut\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"let\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"mut\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"let\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"mut\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"if\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"then\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"else\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"if\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"then\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"else\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"for\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"in\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"),*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"do\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\":\n       [{\"string\": \"for\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"in\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"),*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"do\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"continue\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\": [{\"string\": \"continue\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doSeqItem [{\\\"string\\\": \\\"break\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doSeqItem\",\n       \"forms\": [{\"string\": \"break\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doReassignArrow [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doReassignArrow\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doReassignArrow\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doReassignArrow [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doReassignArrow-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doReassignArrow\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.doReassign [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___doReassign-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doReassign\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"},\n     {\"id\": \"Lean___Parser___Term___doReassign\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.doReassign\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.do [{\\\"string\\\": \\\"do\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___do\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.do\",\n       \"forms\":\n       [{\"string\": \"do\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Functors___-Monads-and--do--Notation/Syntax/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"⦃\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"⦄\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Term___depArrow-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"⦃\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"⦄\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___depArrow-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___depArrow-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___depArrow-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___depArrow-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"},\n     {\"id\": \"Lean___Parser___Term___depArrow\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___depArrow-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.depArrow [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___depArrow-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.depArrow\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.byTactic [{\\\"string\\\": \\\"by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___byTactic-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.byTactic\",\n       \"forms\":\n       [{\"string\": \"by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Running-Tactics/\"}],\n    \"Lean.Parser.Term.byTactic [{\\\"string\\\": \\\"by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___byTactic-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.byTactic\",\n       \"forms\":\n       [{\"string\": \"by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Running-Tactics/\"}],\n    \"Lean.Parser.Term.borrowed [{\\\"string\\\": \\\"@&\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___borrowed\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.borrowed\",\n       \"forms\":\n       [{\"string\": \"@&\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"Lean.Parser.Term.attributes [{\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___attributes-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.attributes\",\n       \"forms\":\n       [{\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.attrKind [{\\\"string\\\": \\\"scoped\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___attrKind-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.attrKind\",\n       \"forms\": [{\"string\": \"scoped\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.attrKind [{\\\"string\\\": \\\"local\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___attrKind-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.attrKind\",\n       \"forms\": [{\"string\": \"local\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.attrKind []\":\n    [{\"id\": \"Lean___Parser___Term___attrKind\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.attrKind\", \"forms\": [], \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.attrInstance [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___attrInstance-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.attrInstance\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Term.arrow [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___arrow\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.arrow\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Types/\"}],\n    \"Lean.Parser.Term.anonymousCtor [{\\\"string\\\": \\\"⟨\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"⟩\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Term___anonymousCtor\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Term.anonymousCtor\",\n       \"forms\":\n       [{\"string\": \"⟨\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"⟩\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Tactic.simp [{\\\"string\\\": \\\"simp\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"only\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"at\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___simp\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.simp\",\n       \"forms\":\n       [{\"string\": \"simp\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"only\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"at\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Simplifier/Invoking-the-Simplifier/\"}],\n    \"Lean.Parser.Tactic.optConfig [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___optConfig-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.optConfig\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.configItem [{\\\"string\\\": \\\"-\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___configItem-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.configItem\",\n       \"forms\":\n       [{\"string\": \"-\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.configItem [{\\\"string\\\": \\\"+\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___configItem-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.configItem\",\n       \"forms\":\n       [{\"string\": \"+\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.configItem [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___configItem-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.configItem\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.configItem [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"config\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___configItem-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.configItem\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"config\", \"kind\": \"literalIdent\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/The-Tactic-Language/\"}],\n    \"Lean.Parser.Tactic.Conv.enterArg [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___enterArg-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.Conv.enterArg\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"},\n     {\"id\": \"Lean___Parser___Tactic___Conv___enterArg-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.Conv.enterArg\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Tactic.Conv.enterArg [{\\\"string\\\": \\\"@\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Tactic___Conv___enterArg-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Tactic.Conv.enterArg\",\n       \"forms\":\n       [{\"string\": \"@\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Targeted-Rewriting-with--conv/\"}],\n    \"Lean.Parser.Syntax.unary [{\\\"string\\\": \\\"optional\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___unary\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.unary\",\n       \"forms\":\n       [{\"string\": \"optional\", \"kind\": \"literalIdent\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.unary [{\\\"string\\\": \\\"many1\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___unary-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.unary\",\n       \"forms\":\n       [{\"string\": \"many1\", \"kind\": \"literalIdent\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.unary [{\\\"string\\\": \\\"many\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___unary-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.unary\",\n       \"forms\":\n       [{\"string\": \"many\", \"kind\": \"literalIdent\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.subPrio [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"-\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___subPrio\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.subPrio\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"-\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Syntax.subPrec [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"-\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___subPrec\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.subPrec\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"-\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"Lean.Parser.Syntax.sepBy1 [{\\\"string\\\": \\\"sepBy1(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"allowTrailingSep\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy1-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.sepBy1\",\n       \"forms\":\n       [{\"string\": \"sepBy1(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"allowTrailingSep\", \"kind\": \"keyword\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.sepBy1 [{\\\"string\\\": \\\"sepBy1(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy1-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.sepBy1\",\n       \"forms\":\n       [{\"string\": \"sepBy1(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.sepBy1 [{\\\"string\\\": \\\"sepBy1(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy1\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.sepBy1\",\n       \"forms\":\n       [{\"string\": \"sepBy1(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.sepBy [{\\\"string\\\": \\\"sepBy(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"allowTrailingSep\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.sepBy\",\n       \"forms\":\n       [{\"string\": \"sepBy(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"allowTrailingSep\", \"kind\": \"keyword\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.sepBy [{\\\"string\\\": \\\"sepBy(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.sepBy\",\n       \"forms\":\n       [{\"string\": \"sepBy(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.sepBy [{\\\"string\\\": \\\"sepBy(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___sepBy\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.sepBy\",\n       \"forms\":\n       [{\"string\": \"sepBy(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.paren [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___paren\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.paren\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.nonReserved [{\\\"string\\\": \\\"&\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___nonReserved\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.nonReserved\",\n       \"forms\":\n       [{\"string\": \"&\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.cat [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___cat\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.cat\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.binary [{\\\"string\\\": \\\"orelse\\\", \\\"kind\\\": \\\"literalIdent\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___binary\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.binary\",\n       \"forms\":\n       [{\"string\": \"orelse\", \"kind\": \"literalIdent\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.atom [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___atom\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.atom\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Syntax.addPrio [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"+\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___addPrio\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.addPrio\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"+\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Syntax.addPrec [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"+\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Syntax___addPrec\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Syntax.addPrec\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"+\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Precedence/\"}],\n    \"Lean.Parser.Module.prelude [{\\\"string\\\": \\\"prelude\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Module___prelude-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Module.prelude\",\n       \"forms\": [{\"string\": \"prelude\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.module [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Module___module-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Module.module\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.import [{\\\"string\\\": \\\"public\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"meta\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"import\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"all\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Module___import-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Module.import\",\n       \"forms\":\n       [{\"string\": \"public\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"meta\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"import\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"all\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.import [{\\\"string\\\": \\\"import\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Module___import-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Module.import\",\n       \"forms\":\n       [{\"string\": \"import\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.header [{\\\"string\\\": \\\"module\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Module___header-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Module.header\",\n       \"forms\":\n       [{\"string\": \"module\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Module.header [{\\\"string\\\": \\\"module\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"prelude\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Module___header-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Module.header\",\n       \"forms\":\n       [{\"string\": \"module\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"prelude\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Source-Files-and-Modules/\"}],\n    \"Lean.Parser.Command.where [{\\\"string\\\": \\\"#where\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___where\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.where\",\n       \"forms\": [{\"string\": \"#where\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.version [{\\\"string\\\": \\\"#version\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___version\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.version\",\n       \"forms\": [{\"string\": \"#version\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.variable [{\\\"string\\\": \\\"variable\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___variable\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.variable\",\n       \"forms\":\n       [{\"string\": \"variable\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.universe [{\\\"string\\\": \\\"universe\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___universe-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.universe\",\n       \"forms\":\n       [{\"string\": \"universe\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Universes/\"}],\n    \"Lean.Parser.Command.synth [{\\\"string\\\": \\\"#synth\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___synth\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.synth\",\n       \"forms\":\n       [{\"string\": \"#synth\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.syntaxCat [{\\\"string\\\": \\\"declare_syntax_cat\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"behavior\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___syntaxCat\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.syntaxCat\",\n       \"forms\":\n       [{\"string\": \"declare_syntax_cat\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"behavior\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Command.syntax [{\\\"string\\\": \\\"syntax\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"*\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___syntax\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.syntax\",\n       \"forms\":\n       [{\"string\": \"syntax\", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"*\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Defining-New-Syntax/\"}],\n    \"Lean.Parser.Command.sectionHeader [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"expose\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"public\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"noncomputable\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"meta\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___sectionHeader-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.sectionHeader\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"expose\", \"kind\": \"keyword\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"public\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"noncomputable\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"meta\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.section [{\\\"string\\\": \\\"section\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___section\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.section\",\n       \"forms\":\n       [{\"string\": \"section\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.printEqns [{\\\"string\\\": \\\"#print\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"equations\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___printEqns\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.printEqns\",\n       \"forms\":\n       [{\"string\": \"#print\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"equations\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.printEqns [{\\\"string\\\": \\\"#print\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"eqns\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___printEqns-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.printEqns\",\n       \"forms\":\n       [{\"string\": \"#print\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"eqns\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.printAxioms [{\\\"string\\\": \\\"#print\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"axioms\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___printAxioms\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.printAxioms\",\n       \"forms\":\n       [{\"string\": \"#print\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"axioms\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.print [{\\\"string\\\": \\\"#print\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___print-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.print\",\n       \"forms\":\n       [{\"string\": \"#print\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"},\n     {\"id\": \"Lean___Parser___Command___print\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.print\",\n       \"forms\":\n       [{\"string\": \"#print\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.optDeriving [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"deriving\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___optDeriving-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.optDeriving\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"deriving\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"Lean.Parser.Command.optDeclSig [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___optDeclSig\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.optDeclSig\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.openSimple [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___openSimple\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.openSimple\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openScoped [{\\\"string\\\": \\\"scoped\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___openScoped\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.openScoped\",\n       \"forms\":\n       [{\"string\": \"scoped\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openRenaming [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"renaming\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"),*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___openRenaming\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.openRenaming\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"renaming\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"→\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"),*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openOnly [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___openOnly\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.openOnly\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.openHiding [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"hiding\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___openHiding\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.openHiding\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"hiding\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.open [{\\\"string\\\": \\\"open\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___open\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.open\",\n       \"forms\":\n       [{\"string\": \"open\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.notation [{\\\"string\\\": \\\"notation\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___notation\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.notation\",\n       \"forms\":\n       [{\"string\": \"notation\", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"Lean.Parser.Command.namespace [{\\\"string\\\": \\\"namespace\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___namespace\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.namespace\",\n       \"forms\":\n       [{\"string\": \"namespace\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.mutual [{\\\"string\\\": \\\"mutual\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"end\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___mutual\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.mutual\",\n       \"forms\":\n       [{\"string\": \"mutual\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"end\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Command.mixfix [{\\\"string\\\": \\\"prefix\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___mixfix-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.mixfix\",\n       \"forms\":\n       [{\"string\": \"prefix\", \"kind\": \"keyword\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"Lean.Parser.Command.mixfix [{\\\"string\\\": \\\"postfix\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___mixfix-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.mixfix\",\n       \"forms\":\n       [{\"string\": \"postfix\", \"kind\": \"keyword\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"Lean.Parser.Command.mixfix [{\\\"string\\\": \\\"infixr\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___mixfix-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.mixfix\",\n       \"forms\":\n       [{\"string\": \"infixr\", \"kind\": \"keyword\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"Lean.Parser.Command.mixfix [{\\\"string\\\": \\\"infixl\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___mixfix-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.mixfix\",\n       \"forms\":\n       [{\"string\": \"infixl\", \"kind\": \"keyword\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"Lean.Parser.Command.mixfix [{\\\"string\\\": \\\"infix\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___mixfix\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.mixfix\",\n       \"forms\":\n       [{\"string\": \"infix\", \"kind\": \"keyword\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Custom-Operators/\"}],\n    \"Lean.Parser.Command.macro_rules [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"macro_rules\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"kind\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"`(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___macro_rules\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.macro_rules\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"macro_rules\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"kind\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"`(\", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.macroArg [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___macroArg-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.macroArg\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.macroArg [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___macroArg-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.macroArg\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.macro [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"macro\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"name\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___macro\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.macro\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"macro\", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"name\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Command.instance [{\\\"string\\\": \\\"instance\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___instance-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.instance\",\n       \"forms\":\n       [{\"string\": \"instance\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Command.instance [{\\\"string\\\": \\\"instance\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___instance-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.instance\",\n       \"forms\":\n       [{\"string\": \"instance\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Command.instance [{\\\"string\\\": \\\"instance\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"priority\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___instance-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.instance\",\n       \"forms\":\n       [{\"string\": \"instance\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"priority\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Command.initialize [{\\\"string\\\": \\\"initialize\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___initialize\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.initialize\",\n       \"forms\":\n       [{\"string\": \"initialize\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"Lean.Parser.Command.initialize [{\\\"string\\\": \\\"initialize\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___initialize-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.initialize\",\n       \"forms\":\n       [{\"string\": \"initialize\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"Lean.Parser.Command.initialize [{\\\"string\\\": \\\"builtin_initialize\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___initialize-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.initialize\",\n       \"forms\":\n       [{\"string\": \"builtin_initialize\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"Lean.Parser.Command.initialize [{\\\"string\\\": \\\"builtin_initialize\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___initialize-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.initialize\",\n       \"forms\":\n       [{\"string\": \"builtin_initialize\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Elaboration-and-Compilation/\"}],\n    \"Lean.Parser.Command.in [{\\\"string\\\": \\\"in\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___in\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.in\",\n       \"forms\":\n       [{\"string\": \"in\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.identPrec [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___identPrec\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.identPrec\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Notations/\"}],\n    \"Lean.Parser.Command.grindPattern [{\\\"string\\\": \\\"grind_pattern\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___grindPattern\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.grindPattern\",\n       \"forms\":\n       [{\"string\": \"grind_pattern\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Command.export [{\\\"string\\\": \\\"export\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___export\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.export\",\n       \"forms\":\n       [{\"string\": \"export\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.evalBang [{\\\"string\\\": \\\"#eval!\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___evalBang\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.evalBang\",\n       \"forms\":\n       [{\"string\": \"#eval!\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.eval [{\\\"string\\\": \\\"#eval\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___eval\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.eval\",\n       \"forms\":\n       [{\"string\": \"#eval\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.eraseAttr [{\\\"string\\\": \\\"-\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___eraseAttr-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.eraseAttr\",\n       \"forms\":\n       [{\"string\": \"-\", \"kind\": \"keyword\"}, {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Command.end [{\\\"string\\\": \\\"end\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___end\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.end\",\n       \"forms\": [{\"string\": \"end\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.end [{\\\"string\\\": \\\"end\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___end-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.end\",\n       \"forms\":\n       [{\"string\": \"end\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Namespaces-and-Sections/\"}],\n    \"Lean.Parser.Command.elab_rules [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"elab_rules\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"kind\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"<=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"`(\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___elab_rules\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.elab_rules\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"elab_rules\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"(\", \"kind\": \"keyword\"},\n        {\"string\": \"kind\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"<=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"`(\", \"kind\": \"keyword\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"Lean.Parser.Command.docComment [{\\\"string\\\": \\\"/--\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"...\\\\n    -/\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___docComment\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.docComment\",\n       \"forms\":\n       [{\"string\": \"/--\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"...\\n    -/\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"Lean.Parser.Command.deriving [{\\\"string\\\": \\\"deriving\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"instance\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"for\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___deriving-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.deriving\",\n       \"forms\":\n       [{\"string\": \"deriving\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"instance\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"for\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Deriving-Instances/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"theorem\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"theorem\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Theorems/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"theorem\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"theorem\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Theorems/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"theorem\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"theorem\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Theorems/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"opaque\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"opaque\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"opaque\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"opaque\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"example\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"example\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Example-Declarations/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"example\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"example\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Example-Declarations/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"example\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"example\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Example-Declarations/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"def\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declaration-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"def\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"def\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declaration-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"def\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"def\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declaration-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"def\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"class\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"inductive\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"deriving\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"class\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"inductive\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"deriving\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"abbrev\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"abbrev\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"abbrev\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"abbrev\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"abbrev\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"abbrev\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"=>\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")*\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Definitions/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"structure\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"extends\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"::\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"deriving\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declaration-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"structure\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"extends\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"::\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"deriving\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"inductive\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"deriving\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declaration\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"inductive\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"|\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"deriving\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Type-System/Inductive-Types/\"}],\n    \"Lean.Parser.Command.declaration [{\\\"string\\\": \\\"class\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"extends\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"::\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"deriving\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declaration\",\n       \"forms\":\n       [{\"string\": \"class\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"extends\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"::\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"deriving\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Class-Declarations/\"}],\n    \"Lean.Parser.Command.declSig [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declSig\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declSig\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.declModifiers [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"noncomputable\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"unsafe\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"partial\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"nonrec\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declModifiers\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declModifiers\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"noncomputable\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"unsafe\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"partial\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"nonrec\", \"kind\": \"keyword\"},\n        {\"string\": \")\", \"kind\": \"meta\"},\n        {\"string\": \"?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Modifiers/\"}],\n    \"Lean.Parser.Command.declId [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declId\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declId\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.declId [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\".{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\",\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___declId-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.declId\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \".{\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \",\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Headers-and-Signatures/\"}],\n    \"Lean.Parser.Command.check_failure [{\\\"string\\\": \\\"#check_failure\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___check_failure\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.check_failure\",\n       \"forms\":\n       [{\"string\": \"#check_failure\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.check [{\\\"string\\\": \\\"#check\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___check\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.check\",\n       \"forms\":\n       [{\"string\": \"#check\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Interacting-with-Lean/\"}],\n    \"Lean.Parser.Command.axiom [{\\\"string\\\": \\\"axiom\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___axiom-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.axiom\",\n       \"forms\":\n       [{\"string\": \"axiom\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Axioms/\"}],\n    \"Lean.Parser.Command.attribute [{\\\"string\\\": \\\"attribute\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Command___attribute\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Command.attribute\",\n       \"forms\":\n       [{\"string\": \"attribute\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Attributes/\"}],\n    \"Lean.Parser.Attr.wf_preprocess [{\\\"string\\\": \\\"wf_preprocess\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___wf_preprocess\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.wf_preprocess\",\n       \"forms\": [{\"string\": \"wf_preprocess\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Attr.spec [{\\\"string\\\": \\\"spec\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<-\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___spec\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.spec\",\n       \"forms\":\n       [{\"string\": \"spec\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<-\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--mvcgen--tactic/Predicate-Transformers/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"term_elab\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\":\n       [{\"string\": \"term_elab\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"tactic\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\":\n       [{\"string\": \"tactic\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"symm\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"symm\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"semireducible\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"semireducible\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"refl\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"refl\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"reducible\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"reducible\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"pp_nodot\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"pp_nodot\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Function-Application/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"match_pattern\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"match_pattern\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Terms/Pattern-Matching/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"irreducible\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"irreducible\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"induction_eliminator\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"induction_eliminator\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"implemented_by\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simple\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\":\n       [{\"string\": \"implemented_by\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Definitions/Recursive-Definitions/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"delab\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\":\n       [{\"string\": \"delab\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"default_target\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"default_target\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"default_script\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"default_script\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"command_elab\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\":\n       [{\"string\": \"command_elab\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Elaborators/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"cases_eliminator\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\": [{\"string\": \"cases_eliminator\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Tactic-Proofs/Tactic-Reference/\"}],\n    \"Lean.Parser.Attr.simple [{\\\"string\\\": \\\"app_unexpander\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simple\",\n       \"forms\":\n       [{\"string\": \"app_unexpander\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Extending-Lean___s-Output/\"}],\n    \"Lean.Parser.Attr.simp [{\\\"string\\\": \\\"simp\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simp\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simp\",\n       \"forms\": [{\"string\": \"simp\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Parser.Attr.simp [{\\\"string\\\": \\\"simp\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"↓\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<-\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simp-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simp\",\n       \"forms\":\n       [{\"string\": \"simp\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"↓\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<-\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Parser.Attr.simp [{\\\"string\\\": \\\"simp\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"↑\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"|\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"<-\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simp-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simp\",\n       \"forms\":\n       [{\"string\": \"simp\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"↑\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"|\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"<-\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \")\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Parser.Attr.simp [{\\\"string\\\": \\\"simp\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___simp-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.simp\",\n       \"forms\":\n       [{\"string\": \"simp\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The-Simplifier/Simp-sets/\"}],\n    \"Lean.Parser.Attr.macro [{\\\"string\\\": \\\"macro\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___macro\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.macro\",\n       \"forms\":\n       [{\"string\": \"macro\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Notations-and-Macros/Macros/\"}],\n    \"Lean.Parser.Attr.instance [{\\\"string\\\": \\\"instance\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___instance\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.instance\",\n       \"forms\":\n       [{\"string\": \"instance\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"⇒\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"⇒\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"⇐\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"⇐\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"→\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"→\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"←\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"←\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"=\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\":\n       [{\"string\": \"←\", \"kind\": \"keyword\"},\n        {\"string\": \"=\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"·\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grindMod-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"·\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"intro\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"intro\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"inj\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"inj\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"ext\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"ext\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\":\n       [{\"string\": \"_\", \"kind\": \"keyword\"},\n        {\"string\": \"=\", \"kind\": \"keyword\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"=>\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"=>\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"=\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grindMod-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"=\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"=\\\", \\\"kind\\\": \\\"keyword\\\"}, {\\\"string\\\": \\\"_\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\":\n       [{\"string\": \"=\", \"kind\": \"keyword\"},\n        {\"string\": \"_\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\"<=\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\":\n      \"Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \"<=\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grindMod [{\\\"string\\\": \\\".\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grindMod-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grindMod\",\n       \"forms\": [{\"string\": \".\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind? [{\\\"string\\\": \\\"grind?\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grind___-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grind?\",\n       \"forms\":\n       [{\"string\": \"grind?\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind!? [{\\\"string\\\": \\\"grind!?\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grind______\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grind!?\",\n       \"forms\":\n       [{\"string\": \"grind!?\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind! [{\\\"string\\\": \\\"grind!\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grind___\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grind!\",\n       \"forms\":\n       [{\"string\": \"grind!\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind [{\\\"string\\\": \\\"grind\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grind-next-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grind\",\n       \"forms\":\n       [{\"string\": \"grind\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/E___matching/\"}],\n    \"Lean.Parser.Attr.grind [{\\\"string\\\": \\\"grind\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"cases\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grind\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grind\",\n       \"forms\":\n       [{\"string\": \"grind\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"cases\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Lean.Parser.Attr.grind [{\\\"string\\\": \\\"grind\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"cases\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"eager\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___grind-next\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.grind\",\n       \"forms\":\n       [{\"string\": \"grind\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"cases\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"eager\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/The--grind--tactic/Case-Analysis/\"}],\n    \"Lean.Parser.Attr.extern [{\\\"string\\\": \\\"extern\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___extern\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.extern\",\n       \"forms\":\n       [{\"string\": \"extern\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"Lean.Parser.Attr.export [{\\\"string\\\": \\\"export\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___export\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.export\",\n       \"forms\":\n       [{\"string\": \"export\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Run-Time-Code/Foreign-Function-Interface/\"}],\n    \"Lean.Parser.Attr.default_instance [{\\\"string\\\": \\\"default_instance\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lean___Parser___Attr___default_instance\",\n      \"data\":\n      {\"kind\": \"Lean.Parser.Attr.default_instance\",\n       \"forms\":\n       [{\"string\": \"default_instance\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Type-Classes/Instance-Declarations/\"}],\n    \"Lean.Attr.coe [{\\\"string\\\": \\\"coe\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lean___Attr___coe\",\n      \"data\":\n      {\"kind\": \"Lean.Attr.coe\",\n       \"forms\": [{\"string\": \"coe\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Coercions/Coercing-Between-Types/\"}],\n    \"Lake.DSL.targetCommand [{\\\"string\\\": \\\"target\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___targetCommand\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.targetCommand\",\n       \"forms\":\n       [{\"string\": \"target\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.scriptDecl [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"script\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___scriptDecl\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.scriptDecl\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"script\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.runIO [{\\\"string\\\": \\\"run_io\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___runIO\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.runIO\",\n       \"forms\":\n       [{\"string\": \"run_io\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.requireDecl [{\\\"string\\\": \\\"require\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"git\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"with\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___requireDecl\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.requireDecl\",\n       \"forms\":\n       [{\"string\": \"require\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"git\", \"kind\": \"keyword\"},\n        {\"string\": \"?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"with\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.postUpdateDecl [{\\\"string\\\": \\\"post_update\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___postUpdateDecl\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.postUpdateDecl\",\n       \"forms\":\n       [{\"string\": \"post_update\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.packageFacetDecl [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"package_facet\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___packageFacetDecl\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.packageFacetDecl\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"package_facet\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.packageCommand [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"package\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\";*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\";*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___packageCommand-next-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.packageCommand\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"package\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \";*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \";*\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.packageCommand [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"package\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___packageCommand-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.packageCommand\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"package\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.packageCommand [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"package\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___packageCommand\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.packageCommand\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"package\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.moduleFacetDecl [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"module_facet\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___moduleFacetDecl\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.moduleFacetDecl\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"module_facet\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.metaIf [{\\\"string\\\": \\\"meta\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"if\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"then\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"else\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___metaIf\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.metaIf\",\n       \"forms\":\n       [{\"string\": \"meta\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"if\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"then\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"else\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.libraryFacetDecl [{\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"library_facet\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___libraryFacetDecl\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.libraryFacetDecl\",\n       \"forms\":\n       [{\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"library_facet\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanLibCommand [{\\\"string\\\": \\\"lean_lib\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___leanLibCommand\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.leanLibCommand\",\n       \"forms\":\n       [{\"string\": \"lean_lib\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanLibCommand [{\\\"string\\\": \\\"lean_lib\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\";*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\";*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___leanLibCommand-next-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.leanLibCommand\",\n       \"forms\":\n       [{\"string\": \"lean_lib\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \";*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \";*\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanLibCommand [{\\\"string\\\": \\\"lean_lib\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___leanLibCommand-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.leanLibCommand\",\n       \"forms\":\n       [{\"string\": \"lean_lib\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanExeCommand [{\\\"string\\\": \\\"lean_exe\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___leanExeCommand\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.leanExeCommand\",\n       \"forms\":\n       [{\"string\": \"lean_exe\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanExeCommand [{\\\"string\\\": \\\"lean_exe\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"{\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\";*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"}\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\";*\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___leanExeCommand-next-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.leanExeCommand\",\n       \"forms\":\n       [{\"string\": \"lean_exe\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"{\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \";*\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"}\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \";*\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.leanExeCommand [{\\\"string\\\": \\\"lean_exe\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___leanExeCommand-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.leanExeCommand\",\n       \"forms\":\n       [{\"string\": \"lean_exe\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.getConfig [{\\\"string\\\": \\\"get_config?\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___getConfig\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.getConfig\",\n       \"forms\":\n       [{\"string\": \"get_config?\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.fromClause [{\\\"string\\\": \\\"from\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___fromClause\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.fromClause\",\n       \"forms\":\n       [{\"string\": \"from\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.fromClause [{\\\"string\\\": \\\"from\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"git\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"@\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"/\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___fromClause-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.fromClause\",\n       \"forms\":\n       [{\"string\": \"from\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"git\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"@\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"/\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.externLibCommand [{\\\"string\\\": \\\"extern_lib\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"(\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"where\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\")?\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___externLibCommand\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.externLibCommand\",\n       \"forms\":\n       [{\"string\": \"extern_lib\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"(\", \"kind\": \"meta\"},\n        {\"string\": \"where\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \")?\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.dirConst [{\\\"string\\\": \\\"__dir__\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Lake___DSL___dirConst\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.dirConst\",\n       \"forms\": [{\"string\": \"__dir__\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.declField [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":=\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___declField-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.declField\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":=\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.cmdDo [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___cmdDo\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.cmdDo\",\n       \"forms\": [{\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Lake.DSL.cmdDo [{\\\"string\\\": \\\"do\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Lake___DSL___cmdDo-next\",\n      \"data\":\n      {\"kind\": \"Lake.DSL.cmdDo\",\n       \"forms\":\n       [{\"string\": \"do\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Build-Tools-and-Distribution/Lake/\"}],\n    \"Int.«term-[_+1]» [{\\\"string\\\": \\\"-[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"+1]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Int____FLQQ_term-_LSQ_____1_RSQ__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Int.«term-[_+1]»\",\n       \"forms\":\n       [{\"string\": \"-[\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"+1]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Integers/\"}],\n    \"Bool.«term_^^_» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"^^\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"Bool____FLQQ_term_________FLQQ_\",\n      \"data\":\n      {\"kind\": \"Bool.«term_^^_»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"^^\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Booleans/\"}],\n    \"BitVec.«term__#__» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"#\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"BitVec____FLQQ_term________FLQQ_\",\n      \"data\":\n      {\"kind\": \"BitVec.«term__#__»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"#\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"BitVec.«term__#'__» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"#'\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"}]\":\n    [{\"id\": \"BitVec____FLQQ_term___________FLQQ_\",\n      \"data\":\n      {\"kind\": \"BitVec.«term__#'__»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"#'\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Bitvectors/\"}],\n    \"Array.«term__[_:_]» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Array____FLQQ_term___LSQ_______RSQ__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Array.«term__[_:_]»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Arrays/\"}],\n    \"Array.«term__[_:]» [{\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\"[\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"…\\\", \\\"kind\\\": \\\"meta\\\"},\\n {\\\"string\\\": \\\" \\\", \\\"kind\\\": \\\"ws\\\"},\\n {\\\"string\\\": \\\":\\\", \\\"kind\\\": \\\"keyword\\\"},\\n {\\\"string\\\": \\\"]\\\", \\\"kind\\\": \\\"keyword\\\"}]\":\n    [{\"id\": \"Array____FLQQ_term___LSQ______RSQ__FLQQ_\",\n      \"data\":\n      {\"kind\": \"Array.«term__[_:]»\",\n       \"forms\":\n       [{\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \"[\", \"kind\": \"keyword\"},\n        {\"string\": \"…\", \"kind\": \"meta\"},\n        {\"string\": \" \", \"kind\": \"ws\"},\n        {\"string\": \":\", \"kind\": \"keyword\"},\n        {\"string\": \"]\", \"kind\": \"keyword\"}],\n       \"category\": null},\n      \"address\": \"/Basic-Types/Arrays/\"}]}}}}"
  },
  {
    "path": "book/Main.lean",
    "content": "import VersoManual\nimport TPiL\n\nopen Verso.Genre Manual\nopen Verso Code External\n\nopen Verso.Output.Html in\ndef plausible := {{\n    <script defer=\"defer\" data-domain=\"lean-lang.org\" src=\"https://plausible.io/js/script.outbound-links.js\"></script>\n  }}\n\ndef config : Config where\n  emitTeX := false\n  emitHtmlSingle := false\n  emitHtmlMulti := true\n  htmlDepth := 1\n  extraFiles := [(\"static\", \"static\")]\n  extraCss := Std.HashSet.ofList [\n    \"/static/theme.css\",\n    \"/static/fonts/source-serif/source-serif-text.css\",\n    \"/static/fonts/source-code-pro/source-code-pro.css\",\n    \"/static/fonts/source-sans/source-sans-3.css\",\n    \"/static/fonts/noto-sans-mono/noto-sans-mono.css\"\n  ]\n  extraHead := #[plausible]\n  logo := some \"/static/lean_logo.svg\"\n  sourceLink := some \"https://github.com/leanprover/theorem_proving_in_lean4\"\n  issueLink := some \"https://github.com/leanprover/theorem_proving_in_lean4/issues\"\n  linkTargets := fun st => st.localTargets ++ st.remoteTargets\n\ndef main := manualMain (%doc TPiL) (config := config)\n"
  },
  {
    "path": "book/TPiL/AxiomsComputation.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre Manual\nopen TPiL\n\n#doc (Manual) \"Axioms and Computation\" =>\n%%%\ntag := \"axioms-and-computation\"\n%%%\n\nWe have seen that the version of the Calculus of Constructions that\nhas been implemented in Lean includes dependent function types,\ninductive types, and a hierarchy of universes that starts with an\n{tech}[impredicative], {tech (key := \"proof irrelevance\")}[proof-irrelevant] {lean}`Prop` at the bottom. In this\nchapter, we consider ways of extending the CIC with additional axioms\nand rules. Extending a foundational system in such a way is often\nconvenient; it can make it possible to prove more theorems, as well as\nmake it easier to prove theorems that could have been proved\notherwise. But there can be negative consequences of adding additional\naxioms, consequences which may go beyond concerns about their\ncorrectness. In particular, the use of axioms bears on the\ncomputational content of definitions and theorems, in ways we will\nexplore here.\n\nLean is designed to support both computational and classical\nreasoning. Users that are so inclined can stick to a “computationally\npure” fragment, which guarantees that closed expressions in the system\nevaluate to canonical normal forms. In particular, any closed\ncomputationally pure expression of type {lean}`Nat`, for example, will\nreduce to a numeral.\n\nLean's standard library defines an additional axiom, propositional\nextensionality, and a quotient construction which in turn implies the\nprinciple of function extensionality. These extensions are used, for\nexample, to develop theories of sets and finite sets. We will see\nbelow that using these theorems can block evaluation in Lean's kernel,\nso that closed terms of type {lean}`Nat` no longer evaluate to numerals. But\nLean erases types and propositional information when compiling\ndefinitions to executable code, and since\nthese axioms only add new propositions, they are compatible with that\ncomputational interpretation. Even computationally inclined users may\nwish to use the classical law of the excluded middle to reason about\ncomputation. This also blocks evaluation in the kernel, but it is\ncompatible with compiled code.\n\nThe standard library also defines a choice principle that is entirely\nantithetical to a computational interpretation, since it magically\nproduces “data” from a proposition asserting its existence. Its use is\nessential to some classical constructions, and users can import it\nwhen needed. But expressions that use this construction to produce\ndata do not have computational content, and in Lean we are required to\nmark such definitions as {kw}`noncomputable` to flag that fact.\n\nUsing a clever trick (known as Diaconescu's theorem), one can use\npropositional extensionality, function extensionality, and choice to\nderive the law of the excluded middle. As noted above, however, use of\nthe law of the excluded middle is still compatible with\ncompilation, as are other classical principles, as\nlong as they are not used to manufacture data.\n\nTo summarize, then, on top of the underlying framework of universes,\ndependent function types, and inductive types, the standard library\nadds three additional components:\n\n- the axiom of propositional extensionality\n- a quotient construction, which implies function extensionality\n- a choice principle, which produces data from an existential proposition.\n\nThe first two of these block normalization within Lean, but are\ncompatible with code generation, whereas the third is not amenable\nto computational interpretation. We will spell out the details more\nprecisely below.\n\n# Historical and Philosophical Context\n%%%\ntag := \"historical-and-philosophical-context\"\n%%%\n\n:::setup\n```\nvariable (x : α) (y : β)\n```\n\nFor most of its history, mathematics was essentially computational:\ngeometry dealt with constructions of geometric objects, algebra was\nconcerned with algorithmic solutions to systems of equations, and\nanalysis provided means to compute the future behavior of systems\nevolving over time. From the proof of a theorem to the effect that\n“for every {lean}`x`, there is a {lean}`y` such that ...”, it was generally\nstraightforward to extract an algorithm to compute such a {lean}`y` given\n{lean}`x`.\n:::\n\nIn the nineteenth century, however, increases in the complexity of\nmathematical arguments pushed mathematicians to develop new styles of\nreasoning that suppress algorithmic information and invoke\ndescriptions of mathematical objects that abstract away the details of\nhow those objects are represented. The goal was to obtain a powerful\n“conceptual” understanding without getting bogged down in\ncomputational details, but this had the effect of admitting\nmathematical theorems that are simply _false_ on a direct\ncomputational reading.\n\nThere is still fairly uniform agreement today that computation is\nimportant to mathematics. But there are different views as to how best\nto address computational concerns. From a _constructive_ point of\nview, it is a mistake to separate mathematics from its computational\nroots; every meaningful mathematical theorem should have a direct\ncomputational interpretation. From a _classical_ point of view, it is\nmore fruitful to maintain a separation of concerns: we can use one\nlanguage and body of methods to write computer programs, while\nmaintaining the freedom to use nonconstructive theories and methods\nto reason about them. Lean is designed to support both of these\napproaches. Core parts of the library are developed constructively,\nbut the system also provides support for carrying out classical\nmathematical reasoning.\n\n:::setup\n```\nopen Nat\nnotation \"… \" e \"…\" => e\n```\n\nComputationally, the purest part of dependent type theory avoids the\nuse of {lean}`Prop` entirely. Inductive types and dependent function types\ncan be viewed as data types, and terms of these types can be\n“evaluated” by applying reduction rules until no more rules can be\napplied. In principle, any closed term (that is, term with no free\nvariables) of type {lean}`Nat` should evaluate to a numeral, {lean}`succ (… (succ zero)…)`.\n:::\n\n:::setup\n```\nvariable (p : Prop) (s t : α) (prf : p)\nnotation x \" = \" y \" : \" α => @Eq α x y\n```\n\nIntroducing a proof-irrelevant {lean}`Prop` and marking theorems\nirreducible represents a first step towards separation of\nconcerns. The intention is that elements of a type {lean}`p : Prop` should\nplay no role in computation, and so the particular construction of a\nterm {lean}`prf : p` is “irrelevant” in that sense. One can still define\ncomputational objects that incorporate elements of type {lean}`Prop`; the\npoint is that these elements can help us reason about the effects of\nthe computation, but can be ignored when we extract “code” from the\nterm. Elements of type {lean}`Prop` are not entirely innocuous,\nhowever. They include equations {lean}`s = t : α` for any type {lean}`α`, and\nsuch equations can be used as casts, to type check terms. Below, we\nwill see examples of how such casts can block computation in the\nsystem. However, computation is still possible under an evaluation\nscheme that erases propositional content, ignores intermediate typing\nconstraints, and reduces terms until they reach a normal form. This is\nprecisely what Lean's virtual machine does.\n\nHaving adopted a proof-irrelevant {lean}`Prop`, one might consider it\nlegitimate to use, for example, the law of the excluded middle,\n{lean}`p ∨ ¬p`, where {lean}`p` is any proposition. Of course, this, too, can block\ncomputation according to the rules of CIC, but it does not prevent the generation\nof executable code, as described above. It is only the choice\nprinciples discussed in {ref \"choice\"}[the section on choice] that completely erase the\ndistinction between the proof-irrelevant and data-relevant parts of\nthe theory.\n\n:::\n\n# Propositional Extensionality\n%%%\ntag := \"propositional-extensionality\"\n%%%\n\nPropositional extensionality is the following axiom:\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\n------\naxiom propext {a b : Prop} : (a ↔ b) → a = b\n------\nend Hidden\n```\n\n:::setup\n```\nvariable (a : Prop)\n```\nIt asserts that when two propositions imply one another, they are\nactually equal. This is consistent with set-theoretic interpretations\nin which any element {lean}`a : Prop` is either empty or the singleton set\n$`\\{\\ast\\}`, for some distinguished element $`\\ast`. The axiom has the\neffect that equivalent propositions can be substituted for one another\nin any context:\n:::\n\n```lean\nvariable (a b c d e : Prop)\n\ntheorem thm₁ (h : a ↔ b) : (c ∧ a ∧ d → e) ↔ (c ∧ b ∧ d → e) :=\n  propext h ▸ Iff.refl _\n\ntheorem thm₂ (p : Prop → Prop) (h : a ↔ b) (h₁ : p a) : p b :=\n  propext h ▸ h₁\n```\n\n:::comment\n```\n<!--\nThe first example could be proved more laboriously without `propext`\nusing the fact that the propositional connectives respect\npropositional equivalence. The second example represents a more\nessential use of `propext`. In fact, it is equivalent to `propext`\nitself, a fact which we encourage you to prove.\n\nGiven any definition or theorem in Lean, you can use the ``#print\naxioms`` command to display the axioms it depends on.\n\n.. code-block:: lean\n\n    variables a b c d e : Prop\n    variable p : Prop → Prop\n\n    theorem thm₁ (h : a ↔ b) : (c ∧ a ∧ d → e) ↔ (c ∧ b ∧ d → e) :=\n    propext h ▸ iff.refl _\n\n    theorem thm₂ (h : a ↔ b) (h₁ : p a) : p b :=\n    propext h ▸ h₁\n\n    -- BEGIN\n    #print axioms thm₁  -- propext\n    #print axioms thm₂  -- propext\n    -- END\n-->\n```\n:::\n\n# Function Extensionality\n%%%\ntag := \"function-extensionality\"\n%%%\n\n:::leanFirst\nSimilar to propositional extensionality, function extensionality\nasserts that any two functions of type {leanRef}`(x : α) → β x` that agree on\nall their inputs are equal:\n\n```signature\nfunext.{u, v}\n  {α : Sort u} {β : α → Sort v}\n  {f g : (x : α) → β x}\n  (h : ∀ (x : α), f x = g x) :\n  f = g\n```\n:::\n\nFrom a classical, set-theoretic perspective, this is exactly what it\nmeans for two functions to be equal. This is known as an “extensional”\nview of functions. From a constructive perspective, however, it is\nsometimes more natural to think of functions as algorithms, or\ncomputer programs, that are presented in some explicit way. It is\ncertainly the case that two computer programs can compute the same\nanswer for every input despite the fact that they are syntactically\nquite different. In much the same way, you might want to maintain a\nview of functions that does not force you to identify two functions\nthat have the same input / output behavior. This is known as an\n“intensional” view of functions.\n\nIn fact, function extensionality follows from the existence of\nquotients, which we describe in the next section. In the Lean standard\nlibrary, therefore, {leanRef}`funext` is thus\n[proved from the quotient construction](https://github.com/leanprover/lean4/blob/master/src/Init/Core.lean).\n\n:::leanFirst\nSuppose that for {leanRef}`α : Type u` we define the {leanRef}`Set `{leanRef (in := \"(α : Type u)\")}`α`{leanRef}` := α → Prop` to\ndenote the type of subsets of {leanRef (in := \"(α : Type u)\")}`α`, essentially identifying subsets\nwith predicates. By combining {leanRef}`funext` and {leanRef}`propext`, we obtain an\nextensional theory of such sets:\n\n```lean\ndef Set (α : Type u) := α → Prop\n\nnamespace Set\n\ndef mem (x : α) (a : Set α) := a x\n\ninfix:50 (priority := high) \"∈\" => mem\n\ntheorem setext {a b : Set α} (h : ∀ x, x ∈ a ↔ x ∈ b) : a = b :=\n  funext (fun x => propext (h x))\n\nend Set\n```\n:::\n\nWe can then proceed to define the empty set and set intersection, for\nexample, and prove set identities:\n\n```lean\ndef Set (α : Type u) := α → Prop\nnamespace Set\ndef mem (x : α) (a : Set α) := a x\ninfix:50 (priority := high) \"∈\" => mem\ntheorem setext {a b : Set α} (h : ∀ x, x ∈ a ↔ x ∈ b) : a = b :=\n  funext (fun x => propext (h x))\n------\ndef empty : Set α := fun _ => False\n\nnotation (priority := high) \"∅\" => empty\n\ndef inter (a b : Set α) : Set α :=\n  fun x => x ∈ a ∧ x ∈ b\n\ninfix:70 \" ∩ \" => inter\n\ntheorem inter_self (a : Set α) : a ∩ a = a :=\n  setext fun x => Iff.intro\n    (fun ⟨h, _⟩ => h)\n    (fun h => ⟨h, h⟩)\n\ntheorem inter_empty (a : Set α) : a ∩ ∅ = ∅ :=\n  setext fun _ => Iff.intro\n    (fun ⟨_, h⟩ => h)\n    (fun h => False.elim h)\n\ntheorem empty_inter (a : Set α) : ∅ ∩ a = ∅ :=\n  setext fun _ => Iff.intro\n    (fun ⟨h, _⟩ => h)\n    (fun h => False.elim h)\n\ntheorem inter.comm (a b : Set α) : a ∩ b = b ∩ a :=\n  setext fun _ => Iff.intro\n    (fun ⟨h₁, h₂⟩ => ⟨h₂, h₁⟩)\n    (fun ⟨h₁, h₂⟩ => ⟨h₂, h₁⟩)\n-----\nend Set\n```\n\nThe following is an example of how function extensionality blocks\ncomputation inside the Lean kernel:\n\n```lean\ndef f (x : Nat) := x\ndef g (x : Nat) := 0 + x\n\ntheorem f_eq_g : f = g :=\n  funext fun x => (Nat.zero_add x).symm\n\ndef val : Nat :=\n  Eq.recOn (motive := fun _ _ => Nat) f_eq_g 0\n\n-- does not reduce to 0\n#reduce val\n\n-- evaluates to 0\n#eval val\n```\n\nFirst, we show that the two functions {leanRef}`f` and {leanRef}`g` are equal using\nfunction extensionality, and then we cast {leanRef}`0` of type {lean}`Nat` by\nreplacing {leanRef}`f` by {leanRef}`g` in the type. Of course, the cast is\nvacuous, because {lean}`Nat` does not depend on {leanRef}`f`. But that is enough\nto do the damage: under the computational rules of the system, we now\nhave a closed term of {lean}`Nat` that does not reduce to a numeral. In this\ncase, we may be tempted to reduce the expression to {lean}`0`. But in\nnontrivial examples, eliminating cast changes the type of the term,\nwhich might make an ambient expression type incorrect. The virtual\nmachine, however, has no trouble evaluating the expression to\n{lean}`0`. Here is a similarly contrived example that shows how\n{lean}`propext` can get in the way:\n\n```lean\ntheorem tteq : (True ∧ True) = True :=\n  propext (Iff.intro (fun ⟨h, _⟩ => h) (fun h => ⟨h, h⟩))\n\ndef val : Nat :=\n  Eq.recOn (motive := fun _ _ => Nat) tteq 0\n\n-- does not reduce to 0\n#reduce val\n\n-- evaluates to 0\n#eval val\n```\n\nCurrent research programs, including work on _observational type\ntheory_ and _cubical type theory_, aim to extend type theory in ways\nthat permit reductions for casts involving function extensionality,\nquotients, and more. But the solutions are not so clear-cut, and the\nrules of Lean's underlying calculus do not sanction such reductions.\n\nIn a sense, however, a cast does not change the meaning of an\nexpression. Rather, it is a mechanism to reason about the expression's\ntype. Given an appropriate semantics, it then makes sense to reduce\nterms in ways that preserve their meaning, ignoring the intermediate\nbookkeeping needed to make the reductions type-correct. In that case,\nadding new axioms in {lean}`Prop` does not matter; by {tech}[proof irrelevance],\nan expression in {lean}`Prop` carries no information, and can be safely\nignored by the reduction procedures.\n\n# Quotients\n%%%\ntag := \"quotients\"\n%%%\n\n:::setup\n```\nvariable (α : Sort u) (r : α → α → Prop) (f : α → β) (x y : α) (f' : Quot r → β)\nnotation α \" / \" r:max => Quot (α := α) r\nnotation \"⟦\" x \"⟧\" => Quot.mk _ x\n\n```\nLet {lean}`α` be any type, and let {lean}`r` be an equivalence relation on\n{lean}`α`. It is mathematically common to form the “quotient” {lean}`α / r`,\nthat is, the type of elements of {lean}`α` “modulo” {lean}`r`. Set\ntheoretically, one can view {lean}`α / r` as the set of equivalence\nclasses of {lean}`α` modulo {lean}`r`. If {lean}`f : α → β` is any function that\nrespects the equivalence relation in the sense that for every\n{lean}`x y : α`, {lean}`r x y` implies {lean}`f x = f y`, then {lean}`f` “lifts” to a function\n{lean}`f' : α / r → β` defined on each equivalence class {lean (type := \"Quot r\")}`⟦x⟧` by\n{lean}`f' ⟦x⟧ = f x`. Lean's standard library extends the Calculus of\nConstructions with additional constants that perform exactly these\nconstructions, and installs this last equation as a definitional\nreduction rule.\n\nIn its most basic form, the quotient construction does not even\nrequire {lean}`r` to be an equivalence relation. The following constants\nare built into Lean:\n:::\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\n------\nuniverse u v\n\naxiom Quot : {α : Sort u} → (α → α → Prop) → Sort u\n\naxiom Quot.mk : {α : Sort u} → (r : α → α → Prop) → α → Quot r\n\naxiom Quot.ind :\n    ∀ {α : Sort u} {r : α → α → Prop} {β : Quot r → Prop},\n      (∀ a, β (Quot.mk r a)) → (q : Quot r) → β q\n\naxiom Quot.lift :\n    {α : Sort u} → {r : α → α → Prop} → {β : Sort u} → (f : α → β)\n    → (∀ a b, r a b → f a = f b) → Quot r → β\n------\nend Hidden\n```\n:::setup\n```\nvariable (α : Type u) (r : α → α → Prop) (a : α) (f : α → β) (h : ∀ a b, r a b → f a = f b)\n```\nThe first one forms a type {lean}`Quot r` given a type {lean}`α` by any binary\nrelation {lean}`r` on {lean}`α`. The second maps {lean}`α` to {lit}`Quot α`, so that\nif {lean}`r : α → α → Prop` and {lit}`a : α`, then {lean}`Quot.mk r a` is an\nelement of {lean}`Quot r`. The third principle, {lean}`Quot.ind`, says that\nevery element of {lean}`Quot.mk r a` is of this form.  As for\n{lean}`Quot.lift`, given a function {lean}`f : α → β`, if {lean}`h` is a proof\nthat {lean}`f` respects the relation {lean}`r`, then {lean}`Quot.lift f h` is the\ncorresponding function on {lean}`Quot r`. The idea is that for each\nelement {lean}`a` in {lean}`α`, the function {lean}`Quot.lift f h` maps\n{lean}`Quot.mk r a` (the {lean}`r`-class containing {lean}`a`) to {lean}`f a`, wherein {lean}`h`\nshows that this function is well defined. In fact, the computation\nprinciple is declared as a reduction rule, as the proof below makes\nclear.\n\n\n```lean\ndef mod7Rel (x y : Nat) : Prop :=\n  x % 7 = y % 7\n\n-- the quotient type\n#check (Quot mod7Rel : Type)\n\n-- the class of numbers equivalent to 4\n#check (Quot.mk mod7Rel 4 : Quot mod7Rel)\n\ndef f (x : Nat) : Bool :=\n  x % 7 = 0\n\ntheorem f_respects (a b : Nat) (h : mod7Rel a b) : f a = f b := by\n  simp [mod7Rel, f] at *\n  rw [h]\n\n#check (Quot.lift f f_respects : Quot mod7Rel → Bool)\n\n-- the computation principle\nexample (a : Nat) : Quot.lift f f_respects (Quot.mk mod7Rel a) = f a :=\n  rfl\n```\n\n\nThe four constants, {lean}`Quot`, {lean}`Quot.mk`, {lean}`Quot.ind`, and\n{lean}`Quot.lift` in and of themselves are not very strong. You can check\nthat the {lean}`Quot.ind` is satisfied if we take {lean}`Quot r` to be simply\n{lean}`α`, and take {lean}`Quot.lift` to be the identity function (ignoring\n{lean}`h`). For that reason, these four constants are not viewed as\nadditional axioms.\n:::\n\n:::comment\n```\n<!--\n    variables α β : Type\n    variable  r : α → α → Prop\n    variable  a : α\n    variable  f : α → β\n    variable   h : ∀ a₁ a₂, r a₁ a₂ → f a₁ = f a₂\n    theorem thm : quot.lift f h (quot.mk r a) = f a := rfl\n    -- BEGIN\n    #print axioms thm   -- no axioms\n    -- END\n-->\n```\n:::\n\nThey are, like inductively defined types and the associated\nconstructors and recursors, viewed as part of the logical framework.\n\nWhat makes the {lean}`Quot` construction into a bona fide quotient is the\nfollowing additional axiom:\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\nuniverse u v\n------\naxiom Quot.sound :\n      ∀ {α : Type u} {r : α → α → Prop} {a b : α},\n        r a b → Quot.mk r a = Quot.mk r b\n```\n\nThis is the axiom that asserts that any two elements of {leanRef}`α` that are\nrelated by {leanRef}`r` become identified in the quotient. If a theorem or\ndefinition makes use of {leanRef}`Quot.sound`, it will show up in the\n{kw}`#print axioms` command.\n\n:::setup\n```\nvariable (α : Type u) (r : α → α → Prop)  (r' r'': α → α → Prop) (a b : α)\n```\n\nOf course, the quotient construction is most commonly used in\nsituations when {lean}`r` is an equivalence relation. Given {lean}`r` as\nabove, if we define {lean}`r'` according to the rule {lean}`r' a b` iff\n{lean}`Quot.mk r a = Quot.mk r b`, then it's clear that {lean}`r'` is an\nequivalence relation. Indeed, {lean}`r'` is the _kernel_ of the function\n{lean}`fun a => Quot.mk r a`.  The axiom {lean}`Quot.sound` says that {lean}`r a b`\nimplies {lean}`r' a b`. Using {lean}`Quot.lift` and {lean}`Quot.ind`, we can show\nthat {lean}`r'` is the smallest equivalence relation containing {lean}`r`, in\nthe sense that if {lean}`r''` is any equivalence relation containing\n{lean}`r`, then {lean}`r' a b` implies {lean}`r'' a b`. In particular, if {lean}`r`\nwas an equivalence relation to start with, then for all {lean}`a` and\n{lean}`b` we have {lean}`r a b` iff {lean}`r' a b`.\n:::\n\nTo support this common use case, the standard library defines the\nnotion of a _setoid_, which is simply a type with an associated\nequivalence relation:\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\n------\nclass Setoid (α : Sort u) where\n  r : α → α → Prop\n  iseqv : Equivalence r\n\ninstance {α : Sort u} [Setoid α] : HasEquiv α :=\n  ⟨Setoid.r⟩\n\nnamespace Setoid\n\nvariable {α : Sort u} [Setoid α]\n\ntheorem refl (a : α) : a ≈ a :=\n  iseqv.refl a\n\ntheorem symm {a b : α} (hab : a ≈ b) : b ≈ a :=\n  iseqv.symm hab\n\ntheorem trans {a b c : α} (hab : a ≈ b) (hbc : b ≈ c) : a ≈ c :=\n  iseqv.trans hab hbc\n\nend Setoid\n------\nend Hidden\n```\n\nGiven a type {leanRef (in := \"Setoid (α\")}`α`, a relation {leanRef (in := \"Equivalence r\")}`r`\non {leanRef (in := \"Setoid (α\")}`α`, and a proof {leanRef}`iseqv`\nthat {leanRef (in := \"Equivalence r\")}`r` is an equivalence relation, we can define an\ninstance of the {leanRef (in := \"class Setoid\")}`Setoid` class.\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\n------\ndef Quotient {α : Sort u} (s : Setoid α) :=\n  @Quot α Setoid.r\n------\nend Hidden\n```\n\n:::setup\n```\nvariable (α : Type u) [Setoid α] (a b : α)\n```\n\n\nThe constants {lean}`Quotient.mk`, {lean}`Quotient.ind`, {lean}`Quotient.lift`,\nand {lean}`Quotient.sound` are nothing more than the specializations of\nthe corresponding elements of {lean}`Quot`. The fact that type class\ninference can find the setoid associated to a type {lean}`α` brings a\nnumber of benefits. First, we can use the notation {lean}`a ≈ b` (entered\nwith {kbd}`\\approx`) for {lean}`Setoid.r a b`, where the instance of\n{lean}`Setoid` is implicit in the notation {lean}`Setoid.r`. We can use the\ngeneric theorems {lean}`Setoid.refl`, {lean}`Setoid.symm`, {lean}`Setoid.trans` to\nreason about the relation. Specifically with quotients we can use the\ntheorem {lean}`Quotient.exact`:\n\n```signature\nQuotient.exact {α : Sort u} {s : Setoid α} {a b : α} :\n  Quotient.mk s a = Quotient.mk s b →\n  a ≈ b\n```\n\nTogether with {lean}`Quotient.sound`, this implies that the elements of\nthe quotient correspond exactly to the equivalence classes of elements\nin {lean}`α`.\n\n:::\n\n:::setup\n```\nvariable (α : Type u) (β : Type v)\n```\n\nRecall that in the standard library, {lean}`α × β` represents the\nCartesian product of the types {lean}`α` and {lean}`β`. To illustrate the use\nof quotients, let us define the type of _unordered_ pairs of elements\nof a type {lean}`α` as a quotient of the type {lean}`α × α`. First, we define\nthe relevant equivalence relation:\n:::\n```lean\nprivate def eqv (p₁ p₂ : α × α) : Prop :=\n  (p₁.1 = p₂.1 ∧ p₁.2 = p₂.2) ∨ (p₁.1 = p₂.2 ∧ p₁.2 = p₂.1)\n\ninfix:50 \" ~ \" => eqv\n```\n\nThe next step is to prove that {leanRef}`eqv` is in fact an equivalence\nrelation, which is to say, it is reflexive, symmetric and\ntransitive. We can prove these three facts in a convenient and\nreadable way by using dependent pattern matching to perform\ncase-analysis and break the hypotheses into pieces that are then\nreassembled to produce the conclusion.\n\n```lean\nprivate def eqv (p₁ p₂ : α × α) : Prop :=\n  (p₁.1 = p₂.1 ∧ p₁.2 = p₂.2) ∨ (p₁.1 = p₂.2 ∧ p₁.2 = p₂.1)\ninfix:50 \" ~ \" => eqv\n------\nprivate theorem eqv.refl (p : α × α) : p ~ p :=\n  Or.inl ⟨rfl, rfl⟩\n\nprivate theorem eqv.symm : ∀ {p₁ p₂ : α × α}, p₁ ~ p₂ → p₂ ~ p₁\n  | (a₁, a₂), (b₁, b₂), (Or.inl ⟨a₁b₁, a₂b₂⟩) =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (Or.inr ⟨a₁b₂, a₂b₁⟩) =>\n    Or.inr (by simp_all)\n\nprivate theorem eqv.trans : ∀ {p₁ p₂ p₃ : α × α}, p₁ ~ p₂ → p₂ ~ p₃ → p₁ ~ p₃\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inl (by simp_all)\n\nprivate theorem is_equivalence : Equivalence (@eqv α) :=\n  { refl := eqv.refl, symm := eqv.symm, trans := eqv.trans }\n```\n\n:::leanFirst\nNow that we have proved that {leanRef}`eqv` is an equivalence relation, we\ncan construct a {leanRef}`Setoid (α × α)`, and use it to define the type\n{leanRef}`UProd α` of unordered pairs.\n\n```lean\nprivate def eqv (p₁ p₂ : α × α) : Prop :=\n  (p₁.1 = p₂.1 ∧ p₁.2 = p₂.2) ∨ (p₁.1 = p₂.2 ∧ p₁.2 = p₂.1)\ninfix:50 \" ~ \" => eqv\nprivate theorem eqv.refl (p : α × α) : p ~ p :=\n  Or.inl ⟨rfl, rfl⟩\nprivate theorem eqv.symm : ∀ {p₁ p₂ : α × α}, p₁ ~ p₂ → p₂ ~ p₁\n  | (a₁, a₂), (b₁, b₂), (Or.inl ⟨a₁b₁, a₂b₂⟩) =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (Or.inr ⟨a₁b₂, a₂b₁⟩) =>\n    Or.inr (by simp_all)\nprivate theorem eqv.trans : ∀ {p₁ p₂ p₃ : α × α}, p₁ ~ p₂ → p₂ ~ p₃ → p₁ ~ p₃\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inl (by simp_all)\nprivate theorem is_equivalence : Equivalence (@eqv α) :=\n  { refl := eqv.refl, symm := eqv.symm, trans := eqv.trans }\n------\ninstance uprodSetoid (α : Type u) : Setoid (α × α) where\n  r     := eqv\n  iseqv := is_equivalence\n\ndef UProd (α : Type u) : Type u :=\n  Quotient (uprodSetoid α)\n\nnamespace UProd\n\ndef mk {α : Type} (a₁ a₂ : α) : UProd α :=\n  Quotient.mk' (a₁, a₂)\n\nnotation \"{ \" a₁ \", \" a₂ \" }\" => mk a₁ a₂\n\nend UProd\n```\n:::\n\n:::setup\n```\nprivate def eqv (p₁ p₂ : α × α) : Prop :=\n  (p₁.1 = p₂.1 ∧ p₁.2 = p₂.2) ∨ (p₁.1 = p₂.2 ∧ p₁.2 = p₂.1)\ninfix:50 \" ~ \" => eqv\nprivate theorem eqv.refl (p : α × α) : p ~ p :=\n  Or.inl ⟨rfl, rfl⟩\nprivate theorem eqv.symm : ∀ {p₁ p₂ : α × α}, p₁ ~ p₂ → p₂ ~ p₁\n  | (a₁, a₂), (b₁, b₂), (Or.inl ⟨a₁b₁, a₂b₂⟩) =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (Or.inr ⟨a₁b₂, a₂b₁⟩) =>\n    Or.inr (by simp_all)\nprivate theorem eqv.trans : ∀ {p₁ p₂ p₃ : α × α}, p₁ ~ p₂ → p₂ ~ p₃ → p₁ ~ p₃\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inl (by simp_all)\nprivate theorem is_equivalence : Equivalence (@eqv α) :=\n  { refl := eqv.refl, symm := eqv.symm, trans := eqv.trans }\n\ninstance uprodSetoid (α : Type u) : Setoid (α × α) where\n  r     := eqv\n  iseqv := is_equivalence\n\ndef UProd (α : Type u) : Type u :=\n  Quotient (uprodSetoid α)\n\nnamespace UProd\n\ndef mk {α : Type} (a₁ a₂ : α) : UProd α :=\n  Quotient.mk' (a₁, a₂)\n\n\nnotation \"{ \" a₁ \", \" a₂ \" }\" => mk a₁ a₂\n\nend UProd\n\nvariable (a₁ a₂ : α)\n```\n\nNotice that we locally define the notation {lean}`{a₁, a₂}` for unordered\npairs as {lean}`Quotient.mk' (a₁, a₂)`. This is useful for illustrative\npurposes, but it is not a good idea in general, since the notation\nwill shadow other uses of curly brackets, such as for records and\nsets.\n\nWe can easily prove that {lean}`{a₁, a₂} = {a₂, a₁}` using {lean}`Quot.sound`,\nsince we have {lean}`(a₁, a₂) ~ (a₂, a₁)`.\n:::\n\n```lean\nprivate def eqv (p₁ p₂ : α × α) : Prop :=\n  (p₁.1 = p₂.1 ∧ p₁.2 = p₂.2) ∨ (p₁.1 = p₂.2 ∧ p₁.2 = p₂.1)\ninfix:50 \" ~ \" => eqv\nprivate theorem eqv.refl (p : α × α) : p ~ p :=\n  Or.inl ⟨rfl, rfl⟩\nprivate theorem eqv.symm : ∀ {p₁ p₂ : α × α}, p₁ ~ p₂ → p₂ ~ p₁\n  | (a₁, a₂), (b₁, b₂), (Or.inl ⟨a₁b₁, a₂b₂⟩) =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (Or.inr ⟨a₁b₂, a₂b₁⟩) =>\n    Or.inr (by simp_all)\nprivate theorem eqv.trans : ∀ {p₁ p₂ p₃ : α × α}, p₁ ~ p₂ → p₂ ~ p₃ → p₁ ~ p₃\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inl (by simp_all)\nprivate theorem is_equivalence : Equivalence (@eqv α) :=\n  { refl := eqv.refl, symm := eqv.symm, trans := eqv.trans }\ninstance uprodSetoid (α : Type u) : Setoid (α × α) where\n  r     := eqv\n  iseqv := is_equivalence\ndef UProd (α : Type u) : Type u :=\n  Quotient (uprodSetoid α)\nnamespace UProd\ndef mk {α : Type} (a₁ a₂ : α) : UProd α :=\n  Quotient.mk' (a₁, a₂)\nnotation \"{ \" a₁ \", \" a₂ \" }\" => mk a₁ a₂\n------\ntheorem mk_eq_mk (a₁ a₂ : α) : {a₁, a₂} = {a₂, a₁} :=\n  Quot.sound (Or.inr ⟨rfl, rfl⟩)\n------\nend UProd\n```\n\n:::leanFirst\nTo complete the example, given {leanRef}`a : α` and {leanRef}`u : UProd α`, we\ndefine the proposition {leanRef (in := \"mem (a : α) (u : UProd α)\")}`a`{lit}`  ∈  `{leanRef (in := \"mem (a : α) (u : UProd α)\")}`u` which should hold if {leanRef (in := \"mem (a : α) (u : UProd α)\")}`a` is one of\nthe elements of the unordered pair {leanRef (in := \"mem (a : α) (u : UProd α)\")}`u`. First, we define a similar\nproposition {leanRef}`mem_fn`{leanRef (in := \"mem (a : α) (u : UProd α)\")}` a`{leanRef (in := \"mem (a : α) (u : UProd α)\")}` u` on (ordered) pairs; then we show that\n{leanRef}`mem_fn` respects the equivalence relation {leanRef}`eqv` with the lemma\n{leanRef}`mem_respects`. This is an idiom that is used extensively in the\nLean standard library.\n\n```lean\nset_option linter.unusedVariables false\nprivate def eqv (p₁ p₂ : α × α) : Prop :=\n  (p₁.1 = p₂.1 ∧ p₁.2 = p₂.2) ∨ (p₁.1 = p₂.2 ∧ p₁.2 = p₂.1)\ninfix:50 \" ~ \" => eqv\nprivate theorem eqv.refl (p : α × α) : p ~ p :=\n  Or.inl ⟨rfl, rfl⟩\nprivate theorem eqv.symm : ∀ {p₁ p₂ : α × α}, p₁ ~ p₂ → p₂ ~ p₁\n  | (a₁, a₂), (b₁, b₂), (Or.inl ⟨a₁b₁, a₂b₂⟩) =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (Or.inr ⟨a₁b₂, a₂b₁⟩) =>\n    Or.inr (by simp_all)\nprivate theorem eqv.trans : ∀ {p₁ p₂ p₃ : α × α}, p₁ ~ p₂ → p₂ ~ p₃ → p₁ ~ p₃\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inl (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inl ⟨a₁b₁, a₂b₂⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inl ⟨b₁c₁, b₂c₂⟩ =>\n    Or.inr (by simp_all)\n  | (a₁, a₂), (b₁, b₂), (c₁, c₂), Or.inr ⟨a₁b₂, a₂b₁⟩, Or.inr ⟨b₁c₂, b₂c₁⟩ =>\n    Or.inl (by simp_all)\nprivate theorem is_equivalence : Equivalence (@eqv α) :=\n  { refl := eqv.refl, symm := eqv.symm, trans := eqv.trans }\ninstance uprodSetoid (α : Type u) : Setoid (α × α) where\n  r     := eqv\n  iseqv := is_equivalence\ndef UProd (α : Type u) : Type u :=\n  Quotient (uprodSetoid α)\nnamespace UProd\ndef mk {α : Type} (a₁ a₂ : α) : UProd α :=\n  Quotient.mk' (a₁, a₂)\nnotation \"{ \" a₁ \", \" a₂ \" }\" => mk a₁ a₂\ntheorem mk_eq_mk (a₁ a₂ : α) : {a₁, a₂} = {a₂, a₁} :=\n  Quot.sound (Or.inr ⟨rfl, rfl⟩)\n------\nprivate def mem_fn (a : α) : α × α → Prop\n  | (a₁, a₂) => a = a₁ ∨ a = a₂\n\n-- auxiliary lemma for proving mem_respects\nprivate theorem mem_swap {a : α} :\n      ∀ {p : α × α}, mem_fn a p = mem_fn a (⟨p.2, p.1⟩)\n  | (a₁, a₂) => by\n    apply propext\n    apply Iff.intro\n    . intro\n      | Or.inl h => exact Or.inr h\n      | Or.inr h => exact Or.inl h\n    . intro\n      | Or.inl h => exact Or.inr h\n      | Or.inr h => exact Or.inl h\n\nprivate theorem mem_respects : {p₁ p₂ : α × α} → (a : α) → p₁ ~ p₂ → mem_fn a p₁ = mem_fn a p₂\n  | (a₁, a₂), (b₁, b₂), a, Or.inl ⟨a₁b₁, a₂b₂⟩ => by\n    simp_all\n  | (a₁, a₂), (b₁, b₂), a, Or.inr ⟨a₁b₂, a₂b₁⟩ => by\n    simp_all only\n    apply mem_swap\n\ndef mem (a : α) (u : UProd α) : Prop :=\n  Quot.liftOn u (fun p => mem_fn a p) (fun p₁ p₂ e => mem_respects a e)\n\ninfix:50 (priority := high) \" ∈ \" => mem\n\ntheorem mem_mk_left (a b : α) : a ∈ {a, b} :=\n  Or.inl rfl\n\ntheorem mem_mk_right (a b : α) : b ∈ {a, b} :=\n  Or.inr rfl\n\ntheorem mem_or_mem_of_mem_mk {a b c : α} : c ∈ {a, b} → c = a ∨ c = b :=\n  fun h => h\n---------\nend UProd\n```\n:::\n\nFor convenience, the standard library also defines {lean}`Quotient.lift₂`\nfor lifting binary functions, and {lit}`Quotient.ind₂` for induction on\ntwo variables.\n\n:::setup\n```\nvariable (α : Sort u) (β : α → Sort v) (f₁ f₂ f : (x : α) → β x) (a : α)\n\ndef extfun (α : Sort u) (β : α → Sort v) := Quot (fun (f g : (x : α) → β x) => ∀ x, f x = g x)\n\ndef extfun_app {α β} : extfun α β → (x : α) → β x := fun f x =>\n  Quot.lift (· x) (by intros; simp [*]) f\n\n```\n\nWe close this section with some hints as to why the quotient\nconstruction implies function extensionality. It is not hard to show\nthat extensional equality on the {lean}`(x : α) → β x` is an equivalence\nrelation, and so we can consider the type {lean}`extfun α β` of functions\n“up to equivalence.” Of course, application respects that equivalence\nin the sense that if {lean}`f₁` is equivalent to {lean}`f₂`, then {lean}`f₁ a` is\nequal to {lean}`f₂ a`. Thus application gives rise to a function\n{lean}`extfun_app : extfun α β → (x : α) → β x`. But for every {lean}`f`,\n{lean}`extfun_app (.mk _ f)` is definitionally equal to {lean}`fun x => f x`, which is\nin turn definitionally equal to {lean}`f`. So, when {lean}`f₁` and {lean}`f₂` are\nextensionally equal, we have the following chain of equalities:\n\n```lean\nvariable {α : Sort u} {β : α → Sort v}\n\ndef extfun (α : Sort u) (β : α → Sort v) := Quot (fun (f g : (x : α) → β x) => ∀ x, f x = g x)\n\ndef extfun_app {α β} (f : extfun α β) (x : α) : β x :=\n  Quot.lift (· x) (by intros; simp [*]) f\n----------\nexample (f₁ f₂ : (x : α) → β x) (h : ∀ x, f₁ x = f₂ x) :=\n  calc f₁\n    _ = extfun_app (.mk _ f₁) := rfl\n    _ = extfun_app (.mk _ f₂) := by rw [Quot.sound]; trivial\n    _ = f₂ := rfl\n\n```\n\nAs a result, {leanRef}`f₁` is equal to {leanRef}`f₂`.\n\n:::\n\n# Choice\n%%%\ntag := \"choice\"\n%%%\n\n:::leanFirst\nTo state the final axiom defined in the standard library, we need the\n{leanRef}`Nonempty` type, which is defined as follows:\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\n------\nclass inductive Nonempty (α : Sort u) : Prop where\n  | intro (val : α) : Nonempty α\n------\nend Hidden\n```\n:::\n\n:::setup\n```\nvariable {α : Sort u}\n```\n\nBecause {lean}`Nonempty α` has type {lean}`Prop` and its constructor contains data, it can only eliminate to {lean}`Prop`.\nIn fact, {lean}`Nonempty α` is equivalent to {lean}`∃ x : α, True`:\n:::\n\n```lean\nexample (α : Type u) : Nonempty α ↔ ∃ x : α, True :=\n  Iff.intro (fun ⟨a⟩ => ⟨a, trivial⟩) (fun ⟨a, h⟩ => ⟨a⟩)\n```\n\nOur axiom of choice is now expressed simply as follows:\n\n```lean  (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\nuniverse u\n------\naxiom choice {α : Sort u} : Nonempty α → α\n------\nend Hidden\n```\n\n:::setup\n```\nvariable {α : Sort u} {h : Nonempty α}\nopen Classical\n```\n\nGiven only the assertion {lean}`h` that {lean}`α` is nonempty, {lean}`choice h`\nmagically produces an element of {lean}`α`. Of course, this blocks any\nmeaningful computation: by the interpretation of {lean}`Prop`, {lean}`h`\ncontains no information at all as to how to find such an element.\n\n:::\n\nThis is found in the {lit}`Classical` namespace, so the full name of the\ntheorem is {lean}`Classical.choice`. The choice principle is equivalent to\nthe principle of *indefinite description*, which can be expressed with\nsubtypes as follows:\n\n```lean  (suppressNamespaces := \"Hidden\") (allowVisible := false)\nnamespace Hidden\nuniverse u\naxiom choice {α : Sort u} : Nonempty α → α\n------\nnoncomputable def indefiniteDescription {α : Sort u}\n    (p : α → Prop) (h : ∃ x, p x) : {x // p x} :=\n  choice <| let ⟨x, px⟩ := h; ⟨⟨x, px⟩⟩\n------\nend Hidden\n```\n\n:::setup\n```\nvariable {α : Sort u} {h : Nonempty α}\nopen Classical\n```\nBecause it depends on {lean}`choice`, Lean cannot generate executable code for\n{lean}`indefiniteDescription`, and so requires us to mark the definition\nas {kw}`noncomputable`. Also in the {lit}`Classical` namespace, the\nfunction {lean}`choose` and the property {lean}`choose_spec` decompose the two\nparts of the output of {lean}`indefiniteDescription`:\n\n\n\n```lean  (suppressNamespaces := \"Hidden\") (allowVisible := false)\nopen Classical\nnamespace Hidden\n------\nvariable {α : Sort u} {p : α → Prop}\n\nnoncomputable def choose (h : ∃ x, p x) : α :=\n  (indefiniteDescription p h).val\n\ntheorem choose_spec (h : ∃ x, p x) : p (choose h) :=\n  (indefiniteDescription p h).property\n------\nend Hidden\n```\n\nThe {lean}`choice` principle also erases the distinction between the\nproperty of being {lean}`Nonempty` and the more constructive property of\nbeing {lean}`Inhabited`:\n\n```lean\nopen Classical\n------\nnoncomputable def inhabited_of_nonempty (h : Nonempty α) : Inhabited α :=\n  choice (let ⟨a⟩ := h; ⟨⟨a⟩⟩)\n```\n:::\n\nIn the next section, we will see that {lean}`propext`, {lean}`funext`, and\n{leanRef}`choice`, taken together, imply the law of the excluded middle and\nthe decidability of all propositions. Using those, one can strengthen\nthe principle of indefinite description as follows:\n\n::::setup\n```\nopen Classical\n```\n\n```signature\nstrongIndefiniteDescription {α : Sort u} (p : α → Prop)\n  (h : Nonempty α) :\n  {x // (∃ (y : α), p y) → p x}\n```\n\n\nAssuming the ambient type {leanRef}`α` is nonempty,\n{leanRef}`strongIndefiniteDescription`{lit}` `{leanRef}`p` produces an element of {leanRef}`α`\nsatisfying {leanRef}`p` if there is one. The data component of this\ndefinition is conventionally known as *Hilbert's epsilon function*:\n\n```signature\nepsilon {α : Sort u} [h : Nonempty α] (p : α → Prop) : α\n```\n\n```signature\nepsilon_spec {α : Sort u} {p : α → Prop}\n  (hex : ∃ (y : α), p y) :\n  p (@epsilon _ (nonempty_of_exists hex) p)\n```\n\n\n::::\n\n# The Law of the Excluded Middle\n%%%\ntag := \"the-law-of-the-excluded-middle\"\n%%%\n\nThe law of the excluded middle is the following:\n\n```signature\nClassical.em : ∀ (p : Prop), p ∨ ¬p\n```\n\n\n[Diaconescu's theorem](https://en.wikipedia.org/wiki/Diaconescu%27s_theorem) states\nthat the axiom of choice is sufficient to derive the law of excluded\nmiddle. More precisely, it shows that the law of the excluded middle\nfollows from {lean}`Classical.choice`, {lean}`propext`, and {lean}`funext`. We\nsketch the proof that is found in the standard library.\n\n```save emProof\n-- ANCHOR: emSetup\nopen Classical\ntheorem em (p : Prop) : p ∨ ¬p := by\n  let U (x : Prop) : Prop := x = True ∨ p\n  let V (x : Prop) : Prop := x = False ∨ p\n  have exU : ∃ x, U x := ⟨True, Or.inl rfl⟩\n  have exV : ∃ x, V x := ⟨False, Or.inl rfl⟩\n  -- ^ PROOF_STATE: em1\n-- ANCHOR_END: emSetup\n-- ANCHOR: emChoose\n  let u : Prop := choose exU\n  let v : Prop := choose exV\n  have u_def : U u := choose_spec exU\n  have v_def : V v := choose_spec exV\n  -- ^ PROOF_STATE: em2\n-- ANCHOR_END: emChoose\n-- ANCHOR: emCases\n  have not_uv_or_p : u ≠ v ∨ p := by\n    match u_def, v_def with\n    | Or.inr h, _ => exact Or.inr h\n    | _, Or.inr h => exact Or.inr h\n    | Or.inl hut, Or.inl hvf =>\n      apply Or.inl\n      simp [hvf, hut, true_ne_false]\n-- ANCHOR_END: emCases\n-- ANCHOR: emNext\n  have p_implies_uv : p → u = v :=\n    fun hp =>\n    have hpred : U = V :=\n      funext fun x =>\n        have hl : (x = True ∨ p) → (x = False ∨ p) :=\n          fun _ => Or.inr hp\n        have hr : (x = False ∨ p) → (x = True ∨ p) :=\n          fun _ => Or.inr hp\n        show (x = True ∨ p) = (x = False ∨ p) from\n          propext (Iff.intro hl hr)\n    have h₀ : ∀ exU exV, @choose _ U exU = @choose _ V exV := by\n      rw [hpred]; intros; rfl\n    show u = v from h₀ _ _\n-- ANCHOR_END: emNext\n-- ANCHOR: emDone\n  match not_uv_or_p with\n  | Or.inl hne =>\n    exact Or.inr (mt p_implies_uv hne)\n  | Or.inr h   =>\n    exact Or.inl h\n-- ANCHOR_END: emDone\n```\n\n:::leanFirst\nFirst, we import the necessary axioms, and define two predicates {leanRef}`U` and {leanRef}`V`:\n\n```savedAnchor emSetup\nopen Classical\ntheorem em (p : Prop) : p ∨ ¬p := by\n  let U (x : Prop) : Prop := x = True ∨ p\n  let V (x : Prop) : Prop := x = False ∨ p\n  have exU : ∃ x, U x := ⟨True, Or.inl rfl⟩\n  have exV : ∃ x, V x := ⟨False, Or.inl rfl⟩\n```\n\n:::\n\nIf {leanRef}`p` is true, then every element of {lean}`Prop` is in both {leanRef}`U` and {leanRef}`V`.\nIf {leanRef}`p` is false, then {leanRef}`U` is the singleton {leanRef}`True`, and {leanRef}`V` is the singleton {leanRef}`False`.\n\n:::leanFirst\nNext, we use {leanRef}`choose` to choose an element from each of {leanRef}`U` and {leanRef}`V`:\n\n```savedAnchor emChoose\n  let u : Prop := choose exU\n  let v : Prop := choose exV\n  have u_def : U u := choose_spec exU\n  have v_def : V v := choose_spec exV\n```\n:::\n\n:::leanFirst\nEach of {leanRef}`U` and {leanRef}`V` is a disjunction, so {leanRef}`u_def` and {leanRef}`v_def`\nrepresent four cases. In one of these cases, {leanRef}`u = True` and\n{leanRef}`v = False`, and in all the other cases, {leanRef}`p` is true. Thus we have:\n\n```savedAnchor emCases\n  have not_uv_or_p : u ≠ v ∨ p := by\n    match u_def, v_def with\n    | Or.inr h, _ => exact Or.inr h\n    | _, Or.inr h => exact Or.inr h\n    | Or.inl hut, Or.inl hvf =>\n      apply Or.inl\n      simp [hvf, hut, true_ne_false]\n```\n:::\n\nOn the other hand, if {leanRef}`p` is true, then, by function extensionality\nand propositional extensionality, {leanRef}`U` and {leanRef}`V` are equal. By the\ndefinition of {leanRef}`u` and {leanRef}`v`, this implies that they are equal as well.\n\n```savedAnchor emNext\n  have p_implies_uv : p → u = v :=\n    fun hp =>\n    have hpred : U = V :=\n      funext fun x =>\n        have hl : (x = True ∨ p) → (x = False ∨ p) :=\n          fun _ => Or.inr hp\n        have hr : (x = False ∨ p) → (x = True ∨ p) :=\n          fun _ => Or.inr hp\n        show (x = True ∨ p) = (x = False ∨ p) from\n          propext (Iff.intro hl hr)\n    have h₀ : ∀ exU exV, @choose _ U exU = @choose _ V exV := by\n      rw [hpred]; intros; rfl\n    show u = v from h₀ _ _\n```\n\n\nPutting these last two facts together yields the desired conclusion:\n\n```savedAnchor emDone\n  match not_uv_or_p with\n  | Or.inl hne =>\n    exact Or.inr (mt p_implies_uv hne)\n  | Or.inr h   =>\n    exact Or.inl h\n```\n\n\nConsequences of excluded middle include double-negation elimination,\nproof by cases, and proof by contradiction, all of which are described\nin the section on {ref \"classical-logic\"}[classical logic].\nThe law of the excluded middle and propositional extensionality imply propositional completeness:\n\n```lean (suppressNamespaces := \"Hidden\") (allowVisible := false)\nopen Classical\ntheorem propComplete (a : Prop) : a = True ∨ a = False :=\n  match em a with\n  | Or.inl ha =>\n    Or.inl (propext (Iff.intro (fun _ => True.intro) (fun _ => ha)))\n  | Or.inr hn =>\n    Or.inr (propext (Iff.intro (fun h => hn h) (fun h => False.elim h)))\n```\n\nTogether with choice, we also get the stronger principle that every\nproposition is decidable. Recall that the class of {lean}`Decidable`\npropositions is defined as follows:\n\n```lean\nnamespace Hidden\n------\nclass inductive Decidable (p : Prop) where\n  | isFalse (h : ¬p) : Decidable p\n  | isTrue  (h : p)  : Decidable p\n------\nend Hidden\n```\n\n::::setup\n```\nvariable {p : Prop} {f : α → β} {c : Prop} [Decidable c] {t e : α}\nopen Classical (choose propDecidable)\n```\n:::leanFirst\nIn contrast to {lean}`p ∨ ¬ p`, which can only eliminate to {lean}`Prop`, the\ntype {lean}`Decidable p` is equivalent to the sum type {lit}`Sum p (¬ p)`, which\ncan eliminate to any type. It is this data that is needed to write an\nif-then-else expression.\n\nAs an example of classical reasoning, we use {lean}`choose` to show that if\n{lean}`f : α → β` is injective and {lean}`α` is inhabited, then {lean}`f` has a\nleft inverse. To define the left inverse {leanRef}`linv`, we use a dependent\nif-then-else expression. Recall that {lean}`if h : c then t else e` is\nnotation for {lean}`dite c (fun h : c => t) (fun h : ¬ c => e)`. In the definition\nof {leanRef}`linv`, choice is used twice: first, to show that\n{leanRef}`(∃ a : α, f a = b)` is “decidable,” and then to choose an {leanRef}`a` such that\n{leanRef}`f a = b`. Notice that {lean}`propDecidable` is a scoped instance and is activated\nby the {leanRef}`open Classical` command. We use this instance to justify\nthe {kw}`if`-{kw}`then`-{kw}`else` expression. (See also the discussion in\n{ref \"decidable-propositions\"}[Decidable Propositions]).\n\n\n```lean\nopen Classical\n\nnoncomputable def linv [Inhabited α] (f : α → β) : β → α :=\n  fun b : β => if ex : (∃ a : α, f a = b) then choose ex else default\n\ntheorem linv_comp_self {f : α → β} [Inhabited α]\n                       (inj : ∀ {a b}, f a = f b → a = b)\n                       : linv f ∘ f = id :=\n  funext fun a =>\n    have ex  : ∃ a₁ : α, f a₁ = f a := ⟨a, rfl⟩\n    have feq : f (choose ex) = f a  := choose_spec ex\n    calc linv f (f a)\n      _ = choose ex := rfl\n      _ = a         := inj feq\n```\n\nFrom a classical point of view, {leanRef}`linv` is a function. From a\nconstructive point of view, it is unacceptable; because there is no\nway to implement such a function in general, the construction is not\ninformative.\n:::\n::::\n"
  },
  {
    "path": "book/TPiL/Conv.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre\nopen Verso.Genre.Manual hiding tactic\nopen TPiL\n\n#doc (Manual) \"The Conversion Tactic Mode\" =>\n%%%\ntag := \"conv\"\n%%%\n\nInside a tactic block, one can use the keyword {tactic}`conv` to enter\n_conversion mode_. This mode allows to travel inside assumptions and\ngoals, even inside function abstractions and dependent arrows, to apply rewriting or\nsimplifying steps.\n\n# Basic navigation and rewriting\n%%%\ntag := \"basic-navigation-and-rewriting\"\n%%%\n\n:::leanFirst\nAs a first example, let us prove example\n{leanRef}`(a b c : Nat) : a * (b * c) = a * (c * b)`\n(examples in this file are somewhat artificial since\nother tactics could finish them immediately). The naive\nfirst attempt is to enter tactic mode and try {leanRef}`rw [Nat.mul_comm]`. But this\ntransforms the goal into {leanRef}`b * c * a = a * (c * b)`, after commuting the\nvery first multiplication appearing in the term. There are several\nways to fix this issue, and one way is to use a more precise tool:\nthe conversion mode. The following code block shows the current target\nafter each line.\n\n```lean (showProofStates := \"oops conv1 conv2 conv3 conv4\")\n#guard_msgs (drop all) in\nexample (a b c : Nat) : a * (b * c) = a * (c * b) := by\n  rw [Nat.mul_comm]\n  -- ^ PROOF_STATE: oops\n\nexample (a b c : Nat) : a * (b * c) = a * (c * b) := by\n  conv =>\n--  ^ PROOF_STATE: conv1\n    lhs\n--  ^ PROOF_STATE: conv2\n    congr\n--  ^ PROOF_STATE: conv3\n    rfl\n--  ^ PROOF_STATE: conv4\n    rw [Nat.mul_comm]\n```\n\n:::\n\nThe above snippet shows three navigation commands:\n\n- {leanRef}`lhs` navigates to the left-hand side of a relation (equality, in this case).\n   There is also a {tactic}`rhs` to navigate to the right-hand side.\n- {leanRef}`congr` creates as many targets as there are (nondependent and explicit) arguments to the current head function\n  (here the head function is multiplication).\n- {leanRef}`rfl` closes target using reflexivity.\n\nOnce arrived at the relevant target, we can use {leanRef}`rw` as in normal\ntactic mode.\n\n:::leanFirst\nThe second main reason to use conversion mode is to rewrite under\nbinders. Suppose we want to prove example\n{leanRef}`(fun x : Nat => 0 + x) = (fun x => x)`.\nThe naive first attempt is to enter tactic mode and try\n{leanRef}`rw [Nat.zero_add]`. But this fails with a frustrating\n\n```\nerror: tactic 'rewrite' failed, did not find instance of the pattern\n       in the target expression\n  0 + ?n\n⊢ (fun x => 0 + x) = fun x => x\n```\n\nThe solution is:\n\n```lean\nexample : (fun x : Nat => 0 + x) = (fun x => x) :=  by\n  conv =>\n    lhs\n    intro x\n    rw [Nat.zero_add]\n```\n:::\n\nwhere {leanRef}`intro x` is the navigation command entering inside the {kw}`fun` binder.\nNote that this example is somewhat artificial, one could also do:\n\n```lean\nexample : (fun x : Nat => 0 + x) = (fun x => x) := by\n  funext x; rw [Nat.zero_add]\n```\n\nor just\n\n```lean\nexample : (fun x : Nat => 0 + x) = (fun x => x) := by\n  simp\n```\n\n{leanRef}`conv` can also rewrite a hypothesis {lit}`h` from the local context, using {kw}`conv at`{lit}` h`.\n\n# Pattern matching\n%%%\ntag := \"pattern-matching-conv\"\n%%%\n\nNavigation using the above commands can be tedious. One can shortcut it using pattern matching as follows:\n\n```lean\nexample (a b c : Nat) : a * (b * c) = a * (c * b) := by\n  conv in b * c =>\n    rw [Nat.mul_comm]\n```\n\nwhich is just syntax sugar for\n\n```lean\nexample (a b c : Nat) : a * (b * c) = a * (c * b) := by\n  conv =>\n    pattern b * c\n    rw [Nat.mul_comm]\n```\n\nOf course, wildcards are allowed:\n\n```lean\nexample (a b c : Nat) : a * (b * c) = a * (c * b) := by\n  conv in _ * c => rw [Nat.mul_comm]\n```\n\n# Structuring conversion tactics\n%%%\ntag := \"structuring-conversion-tactics\"\n%%%\n\nCurly brackets and {lit}`.` can also be used in {leanRef}`conv` mode to structure tactics:\n\n```lean\nexample (a b c : Nat) : (0 + a) * (b * c) = a * (c * b) := by\n  conv =>\n    lhs\n    congr\n    . rw [Nat.zero_add]\n    . rw [Nat.mul_comm]\n```\n\n# Other tactics inside conversion mode\n%%%\ntag := \"other-tactics-inside-conversion-mode\"\n%%%\n\n- :::leanFirst\n  {leanRef}`arg`{lit}` i` enter the {lit}`i`-th nondependent explicit argument of an application.\n\n  ```lean (showProofStates := \"arg2 arg3\")\n  example (a b c : Nat) : a * (b * c) = a * (c * b) := by\n    conv =>\n    -- ^ PROOF_STATE: arg1\n      lhs\n    -- ^ PROOF_STATE: arg2\n      arg 2\n    -- ^ PROOF_STATE: arg3\n      rw [Nat.mul_comm]\n  ```\n  :::\n\n- {tactic}`args` is an alternative name for {leanRef}`congr`.\n\n-   {leanRef}`simp` applies the simplifier to the current goal. It supports the same options available in regular tactic mode.\n\n    ```lean\n    def f (x : Nat) :=\n      if x > 0 then x + 1 else x + 2\n\n    example (g : Nat → Nat)\n        (h₁ : g x = x + 1) (h₂ : x > 0) :\n        g x = f x := by\n      conv =>\n        rhs\n        simp [f, h₂]\n      exact h₁\n    ```\n\n- {kw}`enter`{lit}` [1, x, 2, y]` iterate {leanRef}`arg` and {leanRef}`intro` with the given arguments.\n\n- {tactic}`done` fail if there are unsolved goals.\n\n- {tactic}`trace_state` display the current tactic state.\n\n- {tactic}`whnf` put term in weak head normal form.\n\n- {kw}`tactic`{lit}` => <tactic sequence>` go back to regular tactic mode. This\n  is useful for discharging goals not supported by {leanRef}`conv` mode, and\n  applying custom congruence and extensionality lemmas.\n\n  ```lean (showProofStates := \"convTac1 convTac2 convTac4\")\n  example (g : Nat → Nat → Nat)\n          (h₁ : ∀ x, x ≠ 0 → g x x = 1)\n          (h₂ : x ≠ 0)\n          : g x x + x = 1 + x := by\n    conv =>\n      lhs\n  --  ^    PROOF_STATE: convTac1\n      arg 1\n  --  ^    PROOF_STATE: convTac2\n      rw [h₁]\n      . skip\n      . tactic =>\n    --  ^    PROOF_STATE: convTac4\n         exact h₂\n  ```\n\n- {kw}`apply`{lit}` <term>` is syntax sugar for {kw}`tactic`{lit}` => apply <term>`.\n\n  ```lean\n  example (g : Nat → Nat → Nat)\n          (h₁ : ∀ x, x ≠ 0 → g x x = 1)\n          (h₂ : x ≠ 0)\n          : g x x + x = 1 + x := by\n    conv =>\n      lhs\n      arg 1\n      rw [h₁]\n      . skip\n      . apply h₂\n  ```\n"
  },
  {
    "path": "book/TPiL/DependentTypeTheory.lean",
    "content": "import VersoManual\n\nimport TPiL.Examples\n\nopen TPiL\n\nopen Verso.Genre Manual\n\n#doc (Manual) \"Dependent Type Theory\" =>\n%%%\ntag := \"dependent-type-theory\"\nhtmlSplit := .never\n%%%\n\nDependent type theory is a powerful and expressive language, allowing\nyou to express complex mathematical assertions, write complex hardware\nand software specifications, and reason about both of these in a\nnatural and uniform way. Lean is based on a version of dependent type\ntheory known as the _Calculus of Constructions_, with a countable\nhierarchy of non-cumulative universes and inductive types. By the end\nof this chapter, you will understand much of what this means.\n\n# Simple Type Theory\n%%%\ntag := \"simple-type-theory\"\n%%%\n\n“Type theory” gets its name from the fact that every expression has an\nassociated _type_. For example, in a given context, {lit}`x + 0` may\ndenote a natural number and {lit}`f` may denote a function on the natural\nnumbers. For those who like precise definitions, a Lean natural number\nis an arbitrary-precision unsigned integer.\n\nHere are some examples of how you can declare objects in Lean and\ncheck their types.\n\n```lean\n/- Define some constants. -/\n\ndef m : Nat := 1       -- m is a natural number\ndef n : Nat := 0\ndef b1 : Bool := true  -- b1 is a Boolean\ndef b2 : Bool := false\n\n/- Check their types. -/\n\n#check m            -- m : Nat\n#check n\n#check n + 0        -- n + 0 : Nat\n#check m * (n + 0)  -- m * (n + 0) : Nat\n#check b1           -- b1 : Bool\n-- \"&&\" is the Boolean and\n#check b1 && b2     -- b1 && b2 : Bool\n-- Boolean or\n#check b1 || b2     -- b1 || b2 : Bool\n-- Boolean \"true\"\n#check true         -- Bool.true : Bool\n\n/- Evaluate -/\n\n#eval 5 * 4         -- 20\n#eval m + 2         -- 3\n#eval b1 && b2      -- false\n```\n\nAny text between {lit}`/-` and {lit}`-/` constitutes a comment block that is\nignored by Lean. Similarly, two dashes {lean}`--` indicate that the rest of\nthe line contains a comment that is also ignored. Comment blocks can\nbe nested, making it possible to “comment out” chunks of code, just as\nin many programming languages.\n\nThe {kw}`def` keyword declares new constant symbols into the\nworking environment. In the example above, {leanRef}`def m : Nat := 1`\ndefines a new constant {leanRef}`m` of type {lean}`Nat` whose value is {leanRef}`1`.\nThe {kw}`#check` command asks Lean to report their\ntypes; in Lean, auxiliary commands that query the system for\ninformation typically begin with the hash (#) symbol.\nThe {kw}`#eval` command asks Lean to evaluate the given expression.\nYou should try\ndeclaring some constants and type checking some expressions on your\nown. Declaring new objects in this manner is a good way to experiment\nwith the system.\n\n:::setup\n```\nvariable (a b : Type)\n```\nWhat makes simple type theory powerful is that you can build new types\nout of others. For example, if {lean}`a` and {lean}`b` are types, {lean}`a -> b`\ndenotes the type of functions from {lean}`a` to {lean}`b`, and {lean}`a × b`\ndenotes the type of pairs consisting of an element of {lean}`a` paired\nwith an element of {lean}`b`, also known as the _Cartesian product_. Note\nthat {lit}`×` is a Unicode symbol. The judicious use of Unicode improves\nlegibility, and all modern editors have great support for it. In the\nLean standard library, you often see Greek letters to denote types,\nand the Unicode symbol {lit}`→` as a more compact version of {lit}`->`.\n:::\n\n```lean (check := false)\n#check Nat → Nat      -- type the arrow as “\\to” or \"\\r\"\n#check Nat -> Nat     -- alternative ASCII notation\n\n#check Nat × Nat      -- type the product as \"\\times\"\n#check Prod Nat Nat   -- alternative notation\n\n#check Nat → Nat → Nat\n#check Nat → (Nat → Nat)  --  same type as above\n\n#check Nat × Nat → Nat\n#check (Nat → Nat) → Nat -- a \"functional\"\n```\n```lean\n#check Nat.succ     -- Nat.succ (n : Nat) : Nat\n#check (0, 1)       -- (0, 1) : Nat × Nat\n#check Nat.add      -- Nat.add : Nat → Nat → Nat\n\n#check Nat.succ 2   -- Nat.succ 2 : Nat\n#check Nat.add 3    -- Nat.add 3 : Nat → Nat\n#check Nat.add 5 2  -- Nat.add 5 2 : Nat\n#check (5, 9).1     -- (5, 9).fst : Nat\n#check (5, 9).2     -- (5, 9).snd : Nat\n\n#eval Nat.succ 2   -- 3\n#eval Nat.add 5 2  -- 7\n#eval (5, 9).1     -- 5\n#eval (5, 9).2     -- 9\n```\n\nOnce again, you should try some examples on your own.\n\nLet's take a look at some basic syntax. You can enter the Unicode\narrow {lit}`→` by typing {kbd}`\\to` or {kbd}`\\r` or {kbd}`\\->`. You can also use the\nASCII alternative {lit}`->`, so the expressions {lean}`Nat -> Nat` and {lean}`Nat → Nat`\nmean the same thing. Both expressions denote the type of\nfunctions that take a natural number as input and return a natural\nnumber as output. The Unicode symbol {lit}`×` for the Cartesian product\nis entered as {kbd}`\\times`. You will generally use lower-case Greek\nletters like {lit}`α`, {lit}`β`, and {lit}`γ` to range over types. You can\nenter these particular ones with {kbd}`\\a`, {kbd}`\\b`, and {kbd}`\\g`.\n\n::::setup\n```\nvariable (α β : Type) (f : α → β) (x : α) (m n : Nat) (p : Nat × Nat)\n```\nThere are a few more things to notice here. First, the application of\na function {lean}`f` to a value {lean}`x` is denoted {lean}`f x` (e.g., {lean}`Nat.succ 2`).\nSecond, when writing type expressions, arrows associate to the _right_; for\nexample, the type of {lean}`Nat.add` is {lean}`Nat → Nat → Nat` which is equivalent\nto {lean}`Nat → (Nat → Nat)`. Thus you can\nview {lean}`Nat.add` as a function that takes a natural number and returns\nanother function that takes a natural number and returns a natural\nnumber. In type theory, this is generally more convenient than\nwriting {lean}`Nat.add` as a function that takes a pair of natural numbers as\ninput and returns a natural number as output. For example, it allows\nyou to “partially apply” the function {lean}`Nat.add`.  The example above shows\nthat {lean}`Nat.add 3` has type {lean}`Nat → Nat`, that is, {lean}`Nat.add 3` returns a\nfunction that “waits” for a second argument, {lean}`n`, which is then\nequivalent to writing {lean}`Nat.add 3 n`.\n:::comment\n```\n<!-- Taking a function ``h`` of type ``Nat\n× Nat → Nat`` and “redefining” it to look like ``g`` is a process\nknown as _currying_. -->\n```\n:::\n\n\nYou have seen that if you have {lean}`m : Nat` and {lean}`n : Nat`, then\n{lean}`(m, n)` denotes the ordered pair of {lean}`m` and {lean}`n` which is of\ntype {lean}`Nat × Nat`. This gives you a way of creating pairs of natural\nnumbers. Conversely, if you have {lean}`p : Nat × Nat`, then you can write\n{lean}`p.1 : Nat` and {lean}`p.2 : Nat`. This gives you a way of extracting\nits two components.\n::::\n\n# Types as objects\n%%%\ntag := \"types-as-objects\"\n%%%\n\nOne way in which Lean's dependent type theory extends simple type\ntheory is that types themselves—entities like {lean}`Nat` and {lean}`Bool`—are first-class citizens, which is to say that they themselves are\nobjects. For that to be the case, each of them also has to have a\ntype.\n\n```lean\n#check Nat\n#check Bool\n#check Nat → Bool\n#check Nat × Bool\n#check Nat → Nat\n#check Nat × Nat → Nat\n#check Nat → Nat → Nat\n#check Nat → (Nat → Nat)\n#check Nat → Nat → Bool\n#check (Nat → Nat) → Nat\n```\n\nYou can see that each one of the expressions above is an object of\ntype {lean}`Type`. You can also declare new constants for types:\n\n```lean\ndef α : Type := Nat\ndef β : Type := Bool\ndef F : Type → Type := List\ndef G : Type → Type → Type := Prod\n\n#check α        -- α : Type\n#check F α      -- F α : Type\n#check F Nat    -- F Nat : Type\n#check G α      -- G α : Type → Type\n#check G α β    -- G α β : Type\n#check G α Nat  -- G α Nat : Type\n```\n\nAs the example above suggests, you have already seen an example of a function of type\n{lean}`Type → Type → Type`, namely, the Cartesian product {lean}`Prod`:\n\n```lean\ndef α : Type := Nat\ndef β : Type := Bool\n\n#check Prod α β       -- α × β : Type\n#check α × β          -- α × β : Type\n\n#check Prod Nat Nat   -- Nat × Nat : Type\n#check Nat × Nat      -- Nat × Nat : Type\n```\n\n:::leanFirst\nHere is another example: given any type {leanRef}`α`, the type {leanRef}`List α`\ndenotes the type of lists of elements of type {leanRef}`α`.\n\n```lean\ndef α : Type := Nat\n\n#check List α    -- List α : Type\n#check List Nat  -- List Nat : Type\n```\n:::\n\nGiven that every expression in Lean has a type, it is natural to ask:\nwhat type does {lean}`Type` itself have?\n\n```lean\n#check Type      -- Type : Type 1\n```\n\nYou have actually come up against one of the most subtle aspects of\nLean's typing system. Lean's underlying foundation has an infinite\nhierarchy of types:\n\n```lean\n#check Type     -- Type : Type 1\n#check Type 1   -- Type 1 : Type 2\n#check Type 2   -- Type 2 : Type 3\n#check Type 3   -- Type 3 : Type 4\n#check Type 4   -- Type 4 : Type 5\n```\n\n:::setup\n```\nuniverse n\nvariable (n : Nat)\n```\nThink of {lean}`Type 0` as a universe of “small” or “ordinary” types.\n{lean}`Type 1` is then a larger universe of types, which contains {lean}`Type 0`\nas an element, and {lean}`Type 2` is an even larger universe of types,\nwhich contains {lean}`Type 1` as an element. The list is infinite:\nthere is a {lean}`Type n` for every natural number {lean}`n`. {lean}`Type` is\nan abbreviation for {lean}`Type 0`:\n:::\n\n```lean\n#check Type\n#check Type 0\n```\n\n\nThe following table may help concretize the relationships being discussed.\nMovement along the x-axis represents a change in the universe, while movement\nalong the y-axis represents a change in what is sometimes referred to as\n“degree”.\n\n:::table\n\n*\n * sort\n * {lean}`Prop` ({lean}`Sort 0`)\n * {lean}`Type` ({lean}`Sort 1`)\n * {lean}`Type 1` ({lean}`Sort 2`)\n * {lean}`Type 2` ({lean}`Sort 3`)\n * ...\n\n*\n * type\n * {lean}`True`\n * {lean}`Bool`\n * {lean}`Nat -> Type`\n * {lean}`Type -> Type 1`\n * ...\n\n*\n * term\n * {lean}`True.intro`\n * {lean}`true`\n * {lean}`fun n => Fin n`\n * {lean}`fun (_ : Type) => Type`\n * ...\n\n:::\n\n:::setup\n\n```\nuniverse u\nvariable (α : Type u)\n```\n\nSome operations, however, need to be _polymorphic_ over type\nuniverses. For example, {lean}`List α` should make sense for any type\n{lean}`α`, no matter which type universe {lean}`α` lives in. This explains the\ntype signature of the function {lean}`List`:\n\n\n```lean\n#check List    -- List.{u} (α : Type u) : Type u\n```\n\nHere {lit}`u` is a variable ranging over type levels. The output of the\n{kw}`#check` command means that whenever {lean}`α` has type {lean}`Type u`,\n{lean}`List α` also has type {lean}`Type u`. The function {lean}`Prod` is\nsimilarly polymorphic:\n:::\n\n```lean\n#check Prod    -- Prod.{u, v} (α : Type u) (β : Type v) : Type (max u v)\n```\n\nTo define polymorphic constants, Lean allows you to\ndeclare universe variables explicitly using the {kw}`universe` command:\n\n```lean\nuniverse u\n\ndef F (α : Type u) : Type u := Prod α α\n\n#check F    -- F.{u} (α : Type u) : Type u\n```\n\n:::leanFirst\nYou can avoid the {kw}`universe` command by providing the universe parameters when defining {leanRef}`F`:\n\n```lean\ndef F.{u} (α : Type u) : Type u := Prod α α\n\n#check F    -- F.{u} (α : Type u) : Type u\n```\n:::\n\n# Function Abstraction and Evaluation\n%%%\ntag := \"function-abstraction-and-evaluation\"\n%%%\n\nLean provides a {kw}`fun` (or {kw}`λ`) keyword to create a function\nfrom an expression as follows:\n\n```lean\n#check fun (x : Nat) => x + 5   -- fun x => x + 5 : Nat → Nat\n-- λ and fun mean the same thing\n#check λ (x : Nat) => x + 5     -- fun x => x + 5 : Nat → Nat\n```\n\nThe type {lean}`Nat` can be inferred in this example:\n```lean\n#check fun x => x + 5   -- fun x => x + 5 : Nat → Nat\n#check λ x => x + 5     -- fun x => x + 5 : Nat → Nat\n```\n\nYou can evaluate a lambda function by passing the required parameters:\n\n```lean\n#eval (λ x : Nat => x + 5) 10    -- 15\n```\n\n:::setup\n```\nvariable {x : α} {t : β}\n```\n\nCreating a function from another expression is a process known as\n_lambda abstraction_. Suppose you have the variable {lean}`x : α` and you can\nconstruct an expression {lean}`t : β`, then the expression {lean}`fun (x : α) => t`,\nor, equivalently, {lean}`λ (x : α) => t`, is an object of type {lean}`α → β`. Think of\nthis as the function from {lean}`α` to {lean}`β` which maps\nany value {leanRef}`x` to the value {leanRef}`t`.\n:::\n\nHere are some more examples\n\n```lean\n#check fun x : Nat => fun y : Bool => if not y then x + 1 else x + 2\n#check fun (x : Nat) (y : Bool) => if not y then x + 1 else x + 2\n#check fun x y => if not y then x + 1 else x + 2   -- fun x y => if (!y) = true then x + 1 else x + 2 : Nat → Bool → Nat\n```\n\nLean interprets the final three examples as the same expression; in\nthe last expression, Lean infers the type of {leanRef}`x` and {leanRef}`y` from the\nexpression {leanRef}`if not y then x + 1 else x + 2`.\n\nSome mathematically common examples of operations of functions can be\ndescribed in terms of lambda abstraction:\n\n```lean\ndef f (n : Nat) : String := toString n\ndef g (s : String) : Bool := s.length > 0\n\n#check fun x : Nat => x        -- fun x => x : Nat → Nat\n#check fun x : Nat => true     -- fun x => true : Nat → Bool\n#check fun x : Nat => g (f x)  -- fun x => g (f x) : Nat → Bool\n#check fun x => g (f x)        -- fun x => g (f x) : Nat → Bool\n```\n\nThink about what these expressions mean. The expression\n{lean}`fun x : Nat => x` denotes the identity function on {lean}`Nat`, the\nexpression {lean}`fun x : Nat => true` denotes the constant function that\nalways returns {lean}`true`, and {leanRef}`fun x : Nat => g (f x)` denotes the\ncomposition of {leanRef}`f` and {leanRef}`g`.  You can, in general, leave off the\ntype annotation and let Lean infer it for you.  So, for example, you\ncan write {leanRef}`fun x => g (f x)` instead of {leanRef}`fun x : Nat => g (f x)`.\n\n:::leanFirst\nYou can pass functions as parameters and by giving them names {leanRef}`f`\nand {leanRef}`g` you can then use those functions in the implementation:\n\n```lean\n#check fun (g : String → Bool) (f : Nat → String) (x : Nat) => g (f x)\n```\n:::\n\nYou can also pass types as parameters:\n\n```lean\n#check fun (α β γ : Type) (g : β → γ) (f : α → β) (x : α) => g (f x)\n```\nThe last expression, for example, denotes the function that takes\nthree types, {leanRef}`α`, {leanRef}`β`, and {leanRef}`γ`, and two functions, {leanRef}`g : β → γ`\nand {leanRef}`f : α → β`, and returns the composition of {leanRef}`g` and {leanRef}`f`.\n(Making sense of the type of this function requires an understanding\nof _dependent products_, which will be explained below.)\n\n:::setup\n```\nvariable (α : Type) (t : β)\n-- Avoid warnings\naxiom whatever : α\ndef b : γ := whatever\n```\n\nThe general form of a lambda expression is {lean}`fun (x : α) => t`, where\nthe variable {leanRef}`x` is a “bound variable”: it is really a placeholder,\nwhose “scope” does not extend beyond the expression {leanRef}`t`.  For\nexample, the variable {lit}`b` in the expression {lean}`fun (b : β) (x : α) => b`\nhas nothing to do with the constant {lean}`b` declared earlier.  In fact,\nthe expression denotes the same function as {lean}`fun (u : β) (z : α) => u`.\n\n\nFormally, expressions that are the same up to a renaming of bound\nvariables are called _alpha equivalent_, and are considered “the\nsame.” Lean recognizes this equivalence.\n:::\n\n:::setup\n```\nvariable (t : α → β) (s : α)\n```\nNotice that applying a term {lean}`t : α → β` to a term {lean}`s : α` yields\nan expression {lean}`t s : β`. Returning to the previous example and\nrenaming bound variables for clarity, notice the types of the\nfollowing expressions:\n:::\n\n```lean\n#check (fun x : Nat => x) 1     -- (fun x => x) 1 : Nat\n#check (fun x : Nat => true) 1  -- (fun x => true) 1 : Bool\n\ndef f (n : Nat) : String := toString n\ndef g (s : String) : Bool := s.length > 0\n\n#check\n  (fun (α β γ : Type) (u : β → γ) (v : α → β) (x : α) => u (v x)) Nat String Bool g f 0\n```\n\nAs expected, the expression {lean}`(fun x : Nat =>  x) 1` has type {lean}`Nat`.\nIn fact, more should be true: applying the expression {lean}`(fun x : Nat => x)` to\n{lean}`1` should “return” the value {lean}`1`. And, indeed, it does:\n\n```lean\n#eval (fun x : Nat => x) 1     -- 1\n#eval (fun x : Nat => true) 1  -- true\n```\n\nYou will see later how these terms are evaluated. For now, notice that\nthis is an important feature of dependent type theory: every term has\na computational behavior, and supports a notion of _normalization_. In\nprinciple, two terms that reduce to the same value are called\n_definitionally equal_. They are considered “the same” by Lean's type\nchecker, and Lean does its best to recognize and support these\nidentifications.\n\nLean is a complete programming language. It has a compiler that\ngenerates a binary executable and an interactive interpreter. You can\nuse the command {kw}`#eval` to execute expressions, and it is the\npreferred way of testing your functions.\n\n:::comment\n```\n<!--\nNote that `#eval` and\n`#reduce` are _not_ equivalent. The command `#eval` first compiles\nLean expressions into an intermediate representation (IR) and then\nuses an interpreter to execute the generated IR. Some builtin types\n(e.g., `Nat`, `String`, `Array`) have a more efficient representation\nin the IR. The IR has support for using foreign functions that are\nopaque to Lean.\n\nIn contrast, the ``#reduce`` command relies on a reduction engine\nsimilar to the one used in Lean's trusted kernel, the part of Lean\nthat is responsible for checking and verifying the correctness of\nexpressions and proofs. It is less efficient than ``#eval``, and\ntreats all foreign functions as opaque constants. You will learn later\nthat there are some other differences between the two commands.\n-->\n```\n:::\n\n# Definitions\n%%%\ntag := \"definitions\"\n%%%\n\nRecall that the {kw}`def` keyword provides one important way of declaring new named\nobjects.\n\n```lean\ndef double (x : Nat) : Nat :=\n  x + x\n```\n\nThis might look more familiar to you if you know how functions work in\nother programming languages. The name {leanRef}`double` is defined as a\nfunction that takes an input parameter {leanRef}`x` of type {lean}`Nat`, where the\nresult of the call is {leanRef}`x + x`, so it is returning type {lean}`Nat`. You\ncan then invoke this function using:\n\n```lean\ndef double (x : Nat) : Nat :=\n x + x\n-----\n#eval double 3    -- 6\n```\n\nIn this case you can think of {kw}`def` as a kind of named {kw}`fun`.\nThe following yields the same result:\n\n```lean\ndef double : Nat → Nat :=\n  fun x => x + x\n\n#eval double 3    -- 6\n```\n\nYou can omit the type declarations when Lean has enough information to\ninfer it.  Type inference is an important part of Lean:\n\n```lean\ndef double :=\n  fun (x : Nat) => x + x\n```\n\nThe general form of a definition is {lit}`def foo : α := bar` where\n{lit}`α` is the type returned from the expression {lit}`bar`.  Lean can\nusually infer the type {lit}`α`, but it is often a good idea to write it\nexplicitly.  This clarifies your intention, and Lean will flag an\nerror if the right-hand side of the definition does not have a matching\ntype.\n\nThe right hand side {lit}`bar` can be any expression, not just a lambda.\nSo {kw}`def` can also be used to simply name a value like this:\n\n```lean\ndef pi := 3.141592654\n```\n\n{kw}`def` can take multiple input parameters.  Let's create one\nthat adds two natural numbers:\n\n```lean\ndef add (x y : Nat) :=\n  x + y\n\n#eval add 3 2               -- 5\n```\n\nThe parameter list can be separated like this:\n\n```lean\ndef double (x : Nat) : Nat :=\n  x + x\n-----\ndef add (x : Nat) (y : Nat) :=\n  x + y\n\n#eval add (double 3) (7 + 9)  -- 22\n```\n\nNotice here we called the {leanRef}`double` function to create the first\nparameter to {leanRef}`add`.\n\nYou can use other more interesting expressions inside a {kw}`def`:\n\n```lean\ndef greater (x y : Nat) :=\n  if x > y then x\n  else y\n```\n\nYou can probably guess what this one will do.\n\nYou can also define a function that takes another function as input.\nThe following calls a given function twice passing the output of the\nfirst invocation to the second:\n\n```lean\ndef double (x : Nat) : Nat :=\n x + x\n-----\ndef doTwice (f : Nat → Nat) (x : Nat) : Nat :=\n  f (f x)\n\n#eval doTwice double 2   -- 8\n```\n\nNow to get a bit more abstract, you can also specify arguments that\nare like type parameters:\n\n```lean\ndef compose (α β γ : Type) (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n```\n\nThis means {leanRef}`compose` is a function that takes any two functions as input\narguments, so long as those functions each take only one input.\nThe type algebra {leanRef}`β → γ` and {leanRef}`α → β` means it is a requirement\nthat the type of the output of the second function must match the\ntype of the input to the first function—which makes sense, otherwise\nthe two functions would not be composable.\n\n{leanRef}`compose` also takes a 3rd argument of type {leanRef}`α` which\nit uses to invoke the second function (locally named {leanRef}`f`) and it\npasses the result of that function (which is type {leanRef}`β`) as input to the\nfirst function (locally named {leanRef}`g`).  The first function returns a type\n{leanRef}`γ` so that is also the return type of the {leanRef}`compose` function.\n\n{leanRef}`compose` is also very general in that it works over any type\n{leanRef}`α β γ`.  This means {leanRef}`compose` can compose just about any 2 functions\nso long as they each take one parameter, and so long as the type of\noutput of the second matches the input of the first.  For example:\n\n```lean\ndef compose (α β γ : Type) (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\ndef double (x : Nat) : Nat :=\n  x + x\n-----\ndef square (x : Nat) : Nat :=\n  x * x\n\n#eval compose Nat Nat Nat double square 3  -- 18\n```\n\n# Local Definitions\n%%%\ntag := \"local-definitions\"\n%%%\n\n:::setup\n```\nvariable (t1 : α) (t2 : β)\n```\n\nLean also allows you to introduce “local” definitions using the\n{kw}`let` keyword. The expression {lean}`let a := t1; t2` is\ndefinitionally equal to the result of replacing every occurrence of\n{leanRef}`a` in {leanRef}`t2` by {leanRef}`t1`.\n:::\n\n```lean\n#check let y := 2 + 2; y * y   -- let y := 2 + 2; y * y : Nat\n#eval  let y := 2 + 2; y * y   -- 16\n\ndef twice_double (x : Nat) : Nat :=\n  let y := x + x; y * y\n\n#eval twice_double 2   -- 16\n```\n\n:::setup\n```\ndef twice_double (x : Nat) : Nat :=\n  let y := x + x; y * y\n\nvariable (x : Nat)\n```\n\nHere, {lean}`twice_double x` is definitionally equal to the term {lean}`(x + x) * (x + x)`.\n\n:::\n\nYou can combine multiple assignments by chaining {kw}`let` statements:\n\n```lean\n#check let y := 2 + 2; let z := y + y; z * z\n#eval  let y := 2 + 2; let z := y + y; z * z   -- 64\n```\n\nThe {lit}`;` can be omitted when a line break is used.\n```lean\ndef t (x : Nat) : Nat :=\n  let y := x + x\n  y * y\n```\n\n::::leanFirst\n:::setup\n```\nvariable (t1 : α) (t2 : β)\n```\n\nNotice that the meaning of the expression {lean}`let a := t1; t2` is very\nsimilar to the meaning of {lean}`(fun a => t2) t1`, but the two are not\nthe same. In the first expression, you should think of every instance\nof {leanRef (in:=\"let a := t1; t2\")}`a` in {leanRef (in:=\"let a := t1; t2\")}`t2` as a syntactic abbreviation for {leanRef (in:=\"let a := t1; t2\")}`t1`. In the\nsecond expression, {leanRef (in:=\"(fun a => t2) t1\")}`a` is a variable, and the expression\n{leanRef (in:=\"(fun a => t2) t1\")}`fun a => t2` has to make sense independently of the value of {leanRef (in:=\"(fun a => t2) t1\")}`a`.\nThe {kw}`let` construct is a stronger means of abbreviation, and there\nare expressions of the form {lean}`let a := t1; t2` that cannot be\nexpressed as {lean}`(fun a => t2) t1`. As an exercise, try to understand\nwhy the definition of {leanRef}`foo` below type checks, but the definition of\n{lit}`bar` does not.\n:::\n\n```lean\ndef foo := let a := Nat; fun x : a => x + 2\n/-\n  def bar := (fun a => fun x : a => x + 2) Nat\n-/\n```\n::::\n\n# Variables and Sections\n%%%\ntag := \"variables-and-sections\"\n%%%\n\nConsider the following three function definitions:\n```lean\ndef compose (α β γ : Type) (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n\ndef doTwice (α : Type) (h : α → α) (x : α) : α :=\n  h (h x)\n\ndef doThrice (α : Type) (h : α → α) (x : α) : α :=\n  h (h (h x))\n```\n\nLean provides you with the {kw}`variable` command to make such\ndeclarations look more compact:\n\n```lean\nvariable (α β γ : Type)\n\ndef compose (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n\ndef doTwice (h : α → α) (x : α) : α :=\n  h (h x)\n\ndef doThrice (h : α → α) (x : α) : α :=\n  h (h (h x))\n```\nYou can declare variables of any type, not just {lean}`Type` itself:\n```lean\nvariable (α β γ : Type)\nvariable (g : β → γ) (f : α → β) (h : α → α)\nvariable (x : α)\n\ndef compose := g (f x)\ndef doTwice := h (h x)\ndef doThrice := h (h (h x))\n\n#print compose\n#print doTwice\n#print doThrice\n```\nPrinting them out shows that all three groups of definitions have\nexactly the same effect.\n\nThe {kw}`variable` command instructs Lean to insert the declared\nvariables as bound variables in definitions that refer to them by\nname. Lean is smart enough to figure out which variables are used\nexplicitly or implicitly in a definition. You can therefore proceed as\nthough {leanRef}`α`, {leanRef}`β`, {leanRef}`γ`, {leanRef}`g`, {leanRef}`f`, {leanRef}`h`, and {leanRef}`x` are fixed\nobjects when you write your definitions, and let Lean abstract the\ndefinitions for you automatically.\n\nWhen declared in this way, a variable stays in scope until the end of\nthe file you are working on. Sometimes, however, it is useful to limit\nthe scope of a variable. For that purpose, Lean provides the notion of\na {kw}`section`:\n\n```lean\nsection useful\n  variable (α β γ : Type)\n  variable (g : β → γ) (f : α → β) (h : α → α)\n  variable (x : α)\n\n  def compose := g (f x)\n  def doTwice := h (h x)\n  def doThrice := h (h (h x))\nend useful\n```\n\nWhen the section is closed, the variables go out of scope, and cannot\nbe referenced any more.\n\nYou do not have to indent the lines within a section. Nor do you have\nto name a section, which is to say, you can use an anonymous\n{kw}`section` / {kw}`end` pair. If you do name a section, however, you\nhave to close it using the same name. Sections can also be nested,\nwhich allows you to declare new variables incrementally.\n\n# Namespaces\n%%%\ntag := \"namespaces\"\n%%%\n\nLean provides you with the ability to group definitions into nested,\nhierarchical _namespaces_:\n\n```lean\nnamespace Foo\n  def a : Nat := 5\n  def f (x : Nat) : Nat := x + 7\n\n  def fa : Nat := f a\n  def ffa : Nat := f (f a)\n\n  #check a\n  #check f\n  #check fa\n  #check ffa\n  #check Foo.fa\nend Foo\n\n-- #check a  -- error\n-- #check f  -- error\n#check Foo.a\n#check Foo.f\n#check Foo.fa\n#check Foo.ffa\n\nopen Foo\n\n#check a\n#check f\n#check fa\n#check Foo.fa\n```\n\nWhen you declare that you are working in the namespace {leanRef}`Foo`, every\nidentifier you declare has a full name with prefix “{lit}`Foo.`”. Within\nthe namespace, you can refer to identifiers by their shorter names,\nbut once you end the namespace, you have to use the longer names.\nUnlike {kw}`section`, namespaces require a name. There is only one\nanonymous namespace at the root level.\n\nThe {leanRef}`open` command brings the shorter names into the current\ncontext. Often, when you import a module, you will want to open one or\nmore of the namespaces it contains, to have access to the short\nidentifiers. But sometimes you will want to leave this information\nprotected by a fully qualified name, for example, when they conflict\nwith identifiers in another namespace you want to use. Thus namespaces\ngive you a way to manage names in your working environment.\n\nFor example, Lean groups definitions and theorems involving lists into\na namespace {lit}`List`.\n```lean\n#check List.nil\n#check List.cons\n#check List.map\n```\n:::leanFirst\nThe command {leanRef}`open List` allows you to use the shorter names:\n```lean\nopen List\n\n#check nil\n#check cons\n#check map\n```\n:::\nLike sections, namespaces can be nested:\n```lean\nnamespace Foo\n  def a : Nat := 5\n  def f (x : Nat) : Nat := x + 7\n\n  def fa : Nat := f a\n\n  namespace Bar\n    def ffa : Nat := f (f a)\n\n    #check fa\n    #check ffa\n  end Bar\n\n  #check fa\n  #check Bar.ffa\nend Foo\n\n#check Foo.fa\n#check Foo.Bar.ffa\n\nopen Foo\n\n#check fa\n#check Bar.ffa\n```\nNamespaces that have been closed can later be reopened, even in another file:\n\n```lean\nnamespace Foo\n  def a : Nat := 5\n  def f (x : Nat) : Nat := x + 7\n\n  def fa : Nat := f a\nend Foo\n\n#check Foo.a\n#check Foo.f\n\nnamespace Foo\n  def ffa : Nat := f (f a)\nend Foo\n```\n\nLike sections, nested namespaces have to be closed in the order they\nare opened. Namespaces and sections serve different purposes:\nnamespaces organize data and sections declare variables for insertion\nin definitions. Sections are also useful for delimiting the scope of\ncommands such as {kw}`set_option` and {kw}`open`.\n\nIn many respects, however, a {kw}`namespace`{lit}`  ...  `{kw}`end` block behaves the\nsame as a {kw}`section`{lit}`  ...  `{kw}`end` block. In particular, if you use the\n{kw}`variable` command within a namespace, its scope is limited to the\nnamespace. Similarly, if you use an {kw}`open` command within a\nnamespace, its effects disappear when the namespace is closed.\n\n# What makes dependent type theory dependent?\n%%%\ntag := \"what-makes-dependent-type-theory-dependent\"\n%%%\n\n:::setup\n```\nvariable (α : Type) (n : Nat)\n```\n\nThe short explanation is that types can depend on parameters. You\nhave already seen a nice example of this: the type {lean}`List α` depends\non the argument {lean}`α`, and this dependence is what distinguishes\n{lean}`List Nat` and {lean}`List Bool`. For another example, consider the\ntype {lean}`Vector α n`, the type of vectors of elements of {lean}`α` of\nlength {lean}`n`.  This type depends on _two_ parameters: the type of the\nelements in the vector ({lean}`α : Type`) and the length of the vector\n{lean}`n : Nat`.\n:::\n\n::::setup\n```\ndef cons (α : Type) (a : α) (as : List α) : List α :=\n  List.cons a as\nvariable (α : Type) (a : α) (as : List α)\n```\n:::leanFirst\n\nSuppose you wish to write a function {leanRef}`cons` which inserts a new\nelement at the head of a list. What type should {leanRef}`cons` have? Such a\nfunction is _polymorphic_: you expect the {leanRef}`cons` function for\n{lean}`Nat`, {lean}`Bool`, or an arbitrary type {leanRef}`α` to behave the same way.\nSo it makes sense to take the type to be the first argument to\n{leanRef}`cons`, so that for any type, {lean}`α`, {lean}`cons α` is the insertion\nfunction for lists of type {lean}`α`. In other words, for every {lean}`α`,\n{lean}`cons α` is the function that takes an element {lean}`a : α` and a list\n{lean}`as : List α`, and returns a new list, so you have {lean}`cons α a as : List α`.\n\nIt is clear that {lean}`cons α` should have type {lean}`α → List α → List α`.\nBut what type should {leanRef}`cons` have?  A first guess might be\n{lean}`Type → α → List α → List α`, but, on reflection, this does not make\nsense: the {leanRef}`α` in this expression does not refer to anything,\nwhereas it should refer to the argument of type {lean}`Type`.  In other\nwords, _assuming_ {lean}`α : Type` is the first argument to the function,\nthe type of the next two elements are {lean}`α` and {lean}`List α`. These\ntypes vary depending on the first argument, {leanRef}`α`.\n\n```lean\ndef cons (α : Type) (a : α) (as : List α) : List α :=\n  List.cons a as\n\n#check cons Nat        -- cons Nat : Nat → List Nat → List Nat\n#check cons Bool       -- cons Bool : Bool → List Bool → List Bool\n#check cons            -- cons (α : Type) (a : α) (as : List α) : List α\n```\n:::\n::::\n\n:::setup\n```\nvariable (α : Type) (β : α → Type) (a : α) (f : (a : α) → β a)\n```\n\nThis is an instance of a _dependent function type_, or *dependent\narrow type*. Given {lean}`α : Type` and {lean}`β : α → Type`, think of {lean}`β`\nas a family of types over {lean}`α`, that is, a type {lean}`β a` for each\n{lean}`a : α`. In that case, the type {lean}`(a : α) → β a` denotes the type\nof functions {lean}`f` with the property that, for each {lean}`a : α`, {lean}`f a`\nis an element of {lean}`β a`. In other words, the type of the value\nreturned by {lean}`f` depends on its input.\n:::\n\n:::setup\n```\nvariable (α : Type) (β : Type) (a : α) (f : (a : α) → β a)\n```\nNotice that {lean}`(a : α) → β` makes sense for any expression {lean}`β : Type`.\nWhen the value of {lean}`β` depends on {leanRef}`a` (as does, for\nexample, the expression {leanRef}`β a` in the previous paragraph),\n{leanRef}`(a : α) → β` denotes a dependent function type. When {lean}`β` doesn't\ndepend on {leanRef}`a`, {leanRef}`(a : α) → β` is no different from the type\n{lean}`α → β`.  Indeed, in dependent type theory (and in Lean), {lean}`α → β`\nis just notation for {lean}`(a : α) → β` when {lean}`β` does not depend on {leanRef (in := \"a : α\")}`a`.\n:::\n\nReturning to the example of lists, you can use the command {kw}`#check` to\ninspect the type of the following {lean}`List` functions.  The {lit}`@` symbol\nand the difference between the round and curly braces will be\nexplained momentarily.\n\n```lean\n#check @List.cons    -- @List.cons : {α : Type u_1} → α → List α → List α\n#check @List.nil     -- @List.nil : {α : Type u_1} → List α\n#check @List.length  -- @List.length : {α : Type u_1} → List α → Nat\n#check @List.append  -- @List.append : {α : Type u_1} → List α → List α → List α\n```\n\n:::setup\n```\nvariable (α : Type) (β : α → Type) (a : α) (b : β a)\n```\nJust as dependent function types {lean}`(a : α) → β a` generalize the\nnotion of a function type {leanRef}`α → β` by allowing {leanRef (in := \"α → β\")}`β` to depend on\n{lean}`a`, dependent Cartesian product types {lean}`(a : α) × β a` generalize\nthe Cartesian product {lit}`α × β` in the same way. Dependent products\nare also called _sigma_ types, and you can also write them as\n{lean}`Σ a : α, β a`. You can use {lean (type := \"(a : α) × β a\")}`⟨a, b⟩` or {lean}`Sigma.mk a b` to create a\ndependent pair.  The {lit}`⟨` and {lit}`⟩` characters may be typed with\n{kbd}`\\langle` and {kbd}`\\rangle` or {kbd}`\\<` and {kbd}`\\>`, respectively.\n:::\n\n```lean\nuniverse u v\n\ndef f (α : Type u) (β : α → Type v) (a : α) (b : β a) : (a : α) × β a :=\n  ⟨a, b⟩\n\ndef g (α : Type u) (β : α → Type v) (a : α) (b : β a) : Σ a : α, β a :=\n  Sigma.mk a b\n\ndef h1 (x : Nat) : Nat :=\n  (f Type (fun α => α) Nat x).2\n\n#eval h1 5 -- 5\n\ndef h2 (x : Nat) : Nat :=\n  (g Type (fun α => α) Nat x).2\n\n#eval h2 5 -- 5\n```\nThe functions {leanRef}`f` and {leanRef}`g` above denote the same function.\n\n\n# Implicit Arguments\n%%%\ntag := \"implicit-arguments\"\n%%%\n\nSuppose we have an implementation of lists as:\n\n```lean\nuniverse u\ndef Lst (α : Type u) : Type u := List α\ndef Lst.cons (α : Type u) (a : α) (as : Lst α) : Lst α := List.cons a as\ndef Lst.nil (α : Type u) : Lst α := List.nil\ndef Lst.append (α : Type u) (as bs : Lst α) : Lst α := List.append as bs\n-----\n#check Lst          -- Lst.{u} (α : Type u) : Type u\n#check Lst.cons     -- Lst.cons.{u} (α : Type u) (a : α) (as : Lst α) : Lst α\n#check Lst.nil      -- Lst.nil.{u} (α : Type u) : Lst α\n#check Lst.append   -- Lst.append.{u} (α : Type u) (as bs : Lst α) : Lst α\n```\n\nThen, you can construct lists of {lean}`Nat` as follows:\n\n```lean\nuniverse u\ndef Lst (α : Type u) : Type u := List α\ndef Lst.cons (α : Type u) (a : α) (as : Lst α) : Lst α := List.cons a as\ndef Lst.nil (α : Type u) : Lst α := List.nil\ndef Lst.append (α : Type u) (as bs : Lst α) : Lst α := List.append as bs\n-----\n#check Lst.cons Nat 0 (Lst.nil Nat)\n\ndef as : Lst Nat := Lst.nil Nat\ndef bs : Lst Nat := Lst.cons Nat 5 (Lst.nil Nat)\n\n#check Lst.append Nat as bs\n```\n:::setup\n```\ndef Lst (α : Type u) : Type u := List α\nvariable (α : Type)\n```\nBecause the constructors are polymorphic over types, we have to insert\nthe type {lean}`Nat` as an argument repeatedly. But this information is\nredundant: one can infer the argument {leanRef}`α` in\n{leanRef}`Lst.cons Nat 5 (Lst.nil Nat)` from the fact that the second argument, {leanRef}`5`, has\ntype {lean}`Nat`. One can similarly infer the argument in {leanRef}`Lst.nil Nat`, not\nfrom anything else in that expression, but from the fact that it is\nsent as an argument to the function {leanRef}`Lst.cons`, which expects an element\nof type {lean}`Lst α` in that position.\n:::\n\nThis is a central feature of dependent type theory: terms carry a lot\nof information, and often some of that information can be inferred\nfrom the context. In Lean, one uses an underscore, {lit}`_`, to specify\nthat the system should fill in the information automatically. This is\nknown as an “implicit argument.”\n\n```lean\nuniverse u\ndef Lst (α : Type u) : Type u := List α\ndef Lst.cons (α : Type u) (a : α) (as : Lst α) : Lst α := List.cons a as\ndef Lst.nil (α : Type u) : Lst α := List.nil\ndef Lst.append (α : Type u) (as bs : Lst α) : Lst α := List.append as bs\n#check Lst\n#check Lst.cons\n#check Lst.nil\n#check Lst.append\n-----\n#check Lst.cons _ 0 (Lst.nil _)\n\ndef as : Lst Nat := Lst.nil _\ndef bs : Lst Nat := Lst.cons _ 5 (Lst.nil _)\n\n#check Lst.append _ as bs -- Lst.append Nat as bs : Lst Nat\n```\n\nIt is still tedious, however, to type all these underscores. When a\nfunction takes an argument that can generally be inferred from\ncontext, Lean allows you to specify that this argument should, by\ndefault, be left implicit. This is done by putting the arguments in\ncurly braces, as follows:\n\n```lean\nuniverse u\ndef Lst (α : Type u) : Type u := List α\n\ndef Lst.cons {α : Type u} (a : α) (as : Lst α) : Lst α := List.cons a as\ndef Lst.nil {α : Type u} : Lst α := List.nil\ndef Lst.append {α : Type u} (as bs : Lst α) : Lst α := List.append as bs\n\n#check Lst.cons 0 Lst.nil\n\ndef as : Lst Nat := Lst.nil\ndef bs : Lst Nat := Lst.cons 5 Lst.nil\n\n#check Lst.append as bs\n```\n\nAll that has changed are the braces around {leanRef}`α : Type u` in the\ndeclaration of the variables. We can also use this device in function\ndefinitions:\n\n```lean\nuniverse u\ndef ident {α : Type u} (x : α) := x\n```\n\nChecking the type of {leanRef}`ident` requires wrapping it in parentheses to avoid having its signature shown:\n```lean\nuniverse u\ndef ident {α : Type u} (x : α) := x\n---------\n#check (ident)       -- ident : ?m.22 → ?m.22\n#check ident 1       -- ident 1 : Nat\n#check ident \"hello\" -- ident \"hello\" : String\n#check @ident        -- @ident : {α : Type u_1} → α → α\n```\n\nThe makes the first argument to {leanRef}`ident` implicit. Notationally,\nthis hides the specification of the type, making it look as though\n{leanRef}`ident` simply takes an argument of any type. In fact, the function\n{lean}`id` is defined in the standard library in exactly this way. We have\nchosen a nontraditional name here only to avoid a clash of names.\n\nVariables can also be specified as implicit when they are declared with\nthe {kw}`variable` command:\n\n```lean\nuniverse u\n\nsection\n  variable {α : Type u}\n  variable (x : α)\n  def ident := x\nend\n\n#check ident\n#check ident 4\n#check ident \"hello\"\n```\n\nThis definition of {leanRef}`ident` here has the same effect as the one\nabove.\n\nLean has very complex mechanisms for instantiating implicit arguments,\nand we will see that they can be used to infer function types,\npredicates, and even proofs. The process of instantiating these\n“holes,” or “placeholders,” in a term is often known as\n_elaboration_. The presence of implicit arguments means that at times\nthere may be insufficient information to fix the meaning of an\nexpression precisely. An expression like {lean}`id` or {lean}`List.nil` is\nsaid to be _polymorphic_, because it can take on different meanings in\ndifferent contexts.\n\n:::setup\n```\nvariable (T : Type) (e : T)\n```\n\nOne can always specify the type {lean}`T` of an expression {lean}`e` by\nwriting {lean}`(e : T)`. This instructs Lean's elaborator to use the value\n{lean}`T` as the type of {lean}`e` when trying to resolve implicit\narguments. In the second pair of examples below, this mechanism is\nused to specify the desired types of the expressions {lean}`id` and\n{lean}`List.nil`:\n:::\n\n```lean\n#check (List.nil)             -- [] : List ?m.2\n#check (id)                   -- id : ?m.1 → ?m.1\n\n#check (List.nil : List Nat)  -- [] : List Nat\n#check (id : Nat → Nat)       -- id : Nat → Nat\n```\n\nNumerals are overloaded in Lean, but when the type of a numeral cannot\nbe inferred, Lean assumes, by default, that it is a natural number. So\nthe expressions in the first two {kw}`#check` commands below are\nelaborated in the same way, whereas the third {kw}`#check` command\ninterprets {lean (type := \"Int\")}`2` as an integer.\n\n```lean\n#check 2            -- 2 : Nat\n#check (2 : Nat)    -- 2 : Nat\n#check (2 : Int)    -- 2 : Int\n```\n\n:::setup\n```\nvariable (foo : {α : Type} → α → β)\n```\n\nSometimes, however, we may find ourselves in a situation where we have\ndeclared an argument to a function to be implicit, but now want to\nprovide the argument explicitly. If {lean}`foo` is such a function, the\nnotation {lean}`@foo` denotes the same function with all the arguments\nmade explicit.\n:::\n\n```lean\n#check @id        -- @id : {α : Sort u_1} → α → α\n#check @id Nat    -- id : Nat → Nat\n#check @id Bool   -- id : Bool → Bool\n\n#check @id Nat 1     -- id 1 : Nat\n#check @id Bool true -- id true : Bool\n```\n\nNotice that now the first {kw}`#check` command gives the type of the\nidentifier, {leanRef}`id`, without inserting any placeholders. Moreover, the\noutput indicates that the first argument is implicit.\n"
  },
  {
    "path": "book/TPiL/Examples.lean",
    "content": "import SubVerso.Examples\nimport Lean.Data.NameMap\nimport Lean.DocString.Syntax\nimport VersoManual\nimport Verso.Code.HighlightedToTex\n\nopen Lean (NameMap MessageSeverity)\nopen Lean.Doc.Syntax\n\nnamespace TPiL\n\nopen Verso Doc Elab Genre.Manual ArgParse Code Highlighted WebAssets Output Html Log Code External\nopen SubVerso.Highlighting\nopen SubVerso.Examples.Messages\nopen Lean\nopen Std\n\nexport Verso.Code.External (lit)\n\nprivate def projectDir : System.FilePath := \"../examples/\"\n\ndef alphabet := \"abcdefghijklmnopqrstuvwxyz0123456789\"\n\ndef hashString (n : UInt64) : String := Id.run do\n  let mut n : Nat := n.toNat\n  let mut out : String := \"Example\" -- always start with a letter\n  while n > 0 do\n    out := out.push ({ byteIdx := n % 36 : String.Pos.Raw} |>.get! alphabet )\n    n := n / 36\n  return out\n\nsection\nopen System\nopen SubVerso.Module\n\nvariable [Monad m] [MonadError m] [MonadLiftT BaseIO m] [MonadLiftT IO m] [MonadFinally m]\nvariable [MonadTrace m] [AddMessageContext m] [MonadOptions m] [MonadAlwaysExcept ε m]\n\ndef extractFile (contents : String) (suppressNamespaces : Option String) : m (Array ModuleItem) := do\n  let codeHash := hash contents\n  let modBase := hashString codeHash\n  let filename := modBase ++ \".lean\"\n  let mod := \"Examples.\" ++ modBase\n  let jsonFile := s!\"{modBase}.json\"\n\n  let jsonPath := (projectDir / \"Examples\" / jsonFile)\n  let jsonExists : Bool ←\n    if (← jsonPath.pathExists) then (IO.FS.readFile jsonPath) <&> (!·.isEmpty)\n    else pure false\n\n  unless jsonExists do\n    IO.FS.writeFile (projectDir / \"Examples\" / filename) contents\n\n    -- Validate that the path is really a Lean project\n    let lakefile := projectDir / \"lakefile.lean\"\n    let lakefile' := projectDir / \"lakefile.toml\"\n    if !(← lakefile.pathExists) && !(← lakefile'.pathExists) then\n      throwError m!\"Neither {lakefile} nor {lakefile'} exist, couldn't load project\"\n    let toolchainfile := projectDir / \"lean-toolchain\"\n    let toolchain ← do\n        if !(← toolchainfile.pathExists) then\n          throwError m!\"File {toolchainfile} doesn't exist, couldn't load project\"\n        pure (← IO.FS.readFile toolchainfile).trimAscii.copy\n\n    -- Kludge: remove variables introduced by Lake. Clearing out DYLD_LIBRARY_PATH and\n    -- LD_LIBRARY_PATH is useful so the version selected by Elan doesn't get the wrong shared\n    -- libraries.\n    let lakeVars :=\n      #[\"LAKE\", \"LAKE_HOME\", \"LAKE_PKG_URL_MAP\",\n        \"LEAN_SYSROOT\", \"LEAN_AR\", \"LEAN_PATH\", \"LEAN_SRC_PATH\",\n        \"LEAN\", \"ELAN\", \"ELAN_HOME\", \"LEAN_GITHASH\",\n        \"ELAN_TOOLCHAIN\", \"DYLD_LIBRARY_PATH\", \"LD_LIBRARY_PATH\"]\n\n\n    let toolchainFile ← IO.FS.Handle.mk toolchainfile .read\n    toolchainFile.lock (exclusive := true)\n    try\n      let cmd := \"elan\"\n\n      let runCmd' (args : Array String) : m Unit := do\n          let res ← IO.Process.output {\n            cmd, args, cwd := projectDir\n            -- Unset Lake's environment variables\n            env := lakeVars.map (·, none)\n          }\n          if res.exitCode != 0 then reportFail projectDir cmd args res\n\n      let runCmd (trace : MessageData) (args : Array String) : m Unit :=\n        withTraceNode `Elab.Verso.Code.External.loadModule (fun _ => pure trace) (runCmd' args)\n\n      runCmd m!\"loadModuleContent': building subverso\" #[\"run\", \"--install\", toolchain, \"lake\", \"build\", \"subverso-extract-mod\"]\n\n      runCmd m!\"loadModuleContent': building example project's module\" #[\"run\", \"--install\", toolchain, \"lake\", \"build\", \"+\" ++ mod]\n\n      let suppressArgs :=\n        if let some nss := suppressNamespaces then\n          nss |>.splitToList (· == ' ') |>.filter (!String.isEmpty ·) |>.map (#[\"--suppress-namespace\", ·]) |>.toArray |>.flatten\n        else #[]\n\n      withTraceNode `Elab.Verso.Code.External.loadModule (fun _ => pure m!\"loadModuleContent': extracting '{mod}'\") do\n          let args :=\n            #[\"run\", \"--install\", toolchain, \"lake\", \"exe\", \"subverso-extract-mod\"] ++\n            suppressArgs ++\n            #[mod, \"Examples/\" ++ jsonFile]\n          runCmd' args\n    finally\n      toolchainFile.unlock\n\n  let jsonString ← IO.FS.readFile (projectDir / \"Examples\" / jsonFile)\n\n  let .ok json := Json.parse jsonString\n    | if jsonString.isEmpty then\n        throwError s!\"Expected JSON in {projectDir / \"Examples\" / jsonFile}, got empty output\"\n      else\n        throwError s!\"Expected JSON in {projectDir / \"Examples\" / jsonFile}, got {jsonString}\"\n  match Module.fromJson? json with\n  | .error err =>\n    throwError s!\"Couldn't parse JSON from output file: {err}\\nIn:\\n{json}\"\n  | .ok m => pure m.items\n\nwhere\n  decorateOut (name : String) (out : String) : String :=\n    if out.isEmpty then \"\" else s!\"\\n{name}:\\n{out}\\n\"\n  reportFail {α} (projectDir : FilePath) (cmd : String) (args : Array String) (res : IO.Process.Output) : m α := do\n    throwError (\"Build process failed.\" ++\n      \"\\nCWD: \" ++ projectDir.toString ++\n      \"\\nCommand: \" ++ cmd ++\n      \"\\nArgs: \" ++ repr args ++\n      \"\\nExit code: \" ++ toString res.exitCode ++\n      \"\\nstdout: \" ++ res.stdout ++\n      \"\\nstderr: \" ++ res.stderr)\n\nend\n\nopen Std.Iterators in\nprivate def hasAtLeastM [Monad m] [Iterator α m β] [Productive α m] (it : IterM (α := α) m β) : Nat → m Bool\n  | 0 => pure true\n  | n + 1 => do\n    match (← it.step).inflate with\n    | .done .. => pure false\n    | .skip it' .. => hasAtLeastM it' (n + 1)\n    | .yield it' .. => hasAtLeastM it' n\ntermination_by n => (n, it.finitelyManySkips)\n\nopen Std.Iterators in\nprivate def hasAtLeast [Iterator α Id β] [Productive α Id] (it : Iter (α := α) β) (n : Nat) : Bool :=\n  hasAtLeastM it.toIterM n\n\ndef splitExample (code : Highlighted) : Option Highlighted × Highlighted := Id.run do\n  let lines := code.lines\n  let mut out := .empty\n  for h : i in [0:lines.size] do\n    let line := lines[i]\n    if isSplit line then\n      return (some out, lines.extract (i+1) lines.size |>.foldl (init := .empty) (· ++ ·))\n    out := out ++ line\n  return (none, out)\nwhere\n  isSplit (line : Highlighted) : Bool :=\n    let trimmed := line.toString.trimAscii\n    hasAtLeast trimmed.positions 4 && trimmed.all (· == '-')\n\npartial def hlIsWs (hl : Highlighted) : Bool :=\n  match hl with\n  | .text s | .unparsed s => s.all Char.isWhitespace\n  | .seq xs => xs.all hlIsWs\n  | .span _ x | .tactics _ _ _ x => hlIsWs x\n  | .point .. => true\n  | .token .. => false\n\n\nsection\n\nopen SubVerso.Module\n\nprivate inductive LineType where\n  | whitespace\n  | split\n  | other\n\nprivate def lineType (line : Highlighted) : LineType :=\n  let trimmed := line.toString.trimAscii\n  if trimmed.isEmpty then .whitespace\n  else if hasAtLeast trimmed.positions 4 && trimmed.all (· == '-') then .split\n  else .other\n\n\ndef detachPrefix (code : Array ModuleItem) : Option (Array ModuleItem) × Array ModuleItem := Id.run do\n  let mut out : Array ModuleItem := #[]\n  for h : i in [0:code.size] do\n    let lines := code[i].code.lines\n    -- Check for pre-split\n    for h : j in [0:lines.size] do\n      match lineType lines[j] with\n      | .whitespace => continue\n      | .other => break -- not a pre-split\n      | .split =>\n        let leadingWs := lines.extract 0 j\n        let pre := out.modify (out.size - 1) (fun c => {c with code := c.code ++ .seq leadingWs})\n        return (pre, #[{code[i] with code := .seq <| lines.extract (j+1)}] ++ code.extract (i + 1) code.size)\n    -- Check for post-split\n    for h : j in [0:lines.size] do\n      let j' := lines.size - (j + 1)\n      have : j' < lines.size := by\n        have : j < lines.size := by get_elem_tactic\n        omega\n      match lineType lines[j'] with\n      | .whitespace => continue\n      | .other => break -- not a post-split\n      | .split =>\n        let trailingWs := lines.extract (j' + 1) lines.size\n        let thisItem := { code[i] with code := lines.extract 0 j' |>.foldl (init := .empty) (· ++ ·) }\n        let nextItem? := code[i + 1]? |>.map (fun c => {c with code := Highlighted.seq trailingWs ++ c.code})\n        return (out.push thisItem, nextItem?.toArray ++ code.extract (i + 2) code.size)\n    -- No split here\n    out := out.push code[i]\n  -- No split anywhere\n  return (none, out)\n\ndef detachSuffix (code : Array ModuleItem) : Array ModuleItem × Option (Array ModuleItem) := Id.run do\n  let mut out : Array ModuleItem := #[]\n  for h : i in [0:code.size] do\n    let i := code.size - (i + 1)\n    have : i < code.size := by\n      rename_i i' _ _\n      have : i' < code.size := by get_elem_tactic\n      omega\n    let lines := code[i].code.lines\n    -- Check for post-split\n    for h : j in [0:lines.size] do\n      let j' := lines.size - (j + 1)\n      have : j' < lines.size := by\n        have : j < lines.size := by get_elem_tactic\n        omega\n      match lineType lines[j'] with\n      | .whitespace => continue\n      | .other => break -- not a post-split\n      | .split =>\n        let trailingWs := lines.extract (j' + 1) lines.size\n        let thisItem := { code[i] with code := lines.extract 0 j' |>.foldl (init := .empty) (· ++ ·) }\n        let nextItem? := if i > 0 then some {code[i - 1] with code := Highlighted.seq trailingWs ++ code[i-1].code} else none\n        return (nextItem?.toArray ++ code.extract (i + 2) code.size, out.push thisItem |>.reverse)\n    -- Check for pre-split\n    for h : j in [0:lines.size] do\n      match lineType lines[j] with\n      | .whitespace => continue\n      | .other => break -- not a pre-split\n      | .split =>\n        let leadingWs := lines.extract 0 j\n        return (code.extract 0 i |>.modify (i-1) (fun c => {c with code := c.code ++ .seq leadingWs}), some (out.push {code[i] with code := .seq (lines.extract (j+1))} |>.reverse))\n    -- No split here\n    out := out.push code[i]\n  -- No split anywhere\n  return (out.reverse, none)\n\ndef splitExample' (code : Array ModuleItem) : Option (Array ModuleItem) × Array ModuleItem × Option (Array ModuleItem) :=\n  let (pre, code) := detachPrefix code\n  let (code, suffix) := detachSuffix code\n  (pre, code, suffix)\n\nend\n\ndef copyButtonCss : String :=\nr#\"\n\n.tpil-code-container {\n    position: relative;\n    margin: 20px 0;\n}\n\n.copy-btn,\n.toggle-btn {\n    position: absolute;\n    top: 0px;\n    background: inherit;\n    color: black;\n    border: none;\n    border-radius: 4px;\n    cursor: pointer;\n    font-size: 12px;\n    display: flex;\n    align-items: center;\n    opacity: 0.7;\n    transition: opacity 0.2s;\n    padding: 8px;\n}\n\n.copy-btn:hover,\n.toggle-btn:hover {\n    opacity: 1;\n    background: #555;\n}\n\n.copy-btn {\n    right: 10px;\n    gap: 5px;\n}\n\n.toggle-btn {\n    right: 45px; /* Position to the left of copy button */\n}\n\n.copy-btn.copied {\n    background: #28a745;\n}\n\n.copy-icon,\n.toggle-icon {\n    width: 14px;\n    height: 14px;\n}\n\n.hidden {\n  display: grid;\n  grid-template-rows: 1fr;\n  transition: grid-template-rows 0.3s ease-out, opacity 0.2s ease-out, margin 0.3s ease-out;\n  opacity: 0.8;\n}\n\n.tpil-hide-prefix .hidden {\n  grid-template-rows: 0fr;\n  opacity: 0;\n  margin: 0;\n}\n\n.hidden > .hl.lean {\n  overflow: hidden;\n  margin-bottom: 0;\n}\n\"#\n\ndef copyButtonJs : String :=\nr#\"\nfunction addToggleButtonToElement(elementId, className = 'tpil-hide-prefix') {\n    const element = document.getElementById(elementId);\n    if (!element) {\n        console.error(`Element with ID '${elementId}' not found`);\n        return false;\n    }\n\n    // Create container wrapper if it doesn't exist\n    let container = element.parentElement;\n    if (!container.classList.contains('code-container')) {\n        container = document.createElement('div');\n        container.className = 'code-container';\n        container.classList.toggle(className);\n\n        // Insert container before element\n        element.parentNode.insertBefore(container, element);\n\n        // Move element into container\n        container.appendChild(element);\n    }\n\n    // Remove existing toggle button if present\n    const existingBtn = container.querySelector('.toggle-btn');\n    if (existingBtn) {\n        existingBtn.remove();\n    }\n\n    // Create toggle button\n    const toggleBtn = document.createElement('button');\n    toggleBtn.className = 'toggle-btn';\n    toggleBtn.title = 'Show hidden lines';\n    toggleBtn.innerHTML = `\n        <svg class=\"toggle-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n            <path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"/>\n        </svg>\n    `;\n\n    // Add click event listener\n    toggleBtn.addEventListener('click', () => {\n        container.classList.toggle(className);\n\n        // Update icon based on state\n        const isHidden = container.classList.contains(className);\n        toggleBtn.innerHTML = !isHidden ? `\n            <svg class=\"toggle-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                <path d=\"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"/>\n            </svg>\n        ` : `\n            <svg class=\"toggle-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                <path d=\"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"/>\n            </svg>\n        `;\n        toggleBtn.title = isHidden ? 'Show hidden lines' : 'Hide lines';\n    });\n\n    // Position toggle button to the left of copy button if it exists\n    const copyBtn = container.querySelector('.copy-btn');\n    if (copyBtn) {\n        container.insertBefore(toggleBtn, copyBtn);\n    } else {\n        container.appendChild(toggleBtn);\n    }\n\n    return true;\n}\n\nfunction addCopyButtonToElement(elementId, codeText) {\n    const element = document.getElementById(elementId);\n    if (!element) {\n        console.error(`Element with ID '${elementId}' not found`);\n        return false;\n    }\n\n    // Create container wrapper if it doesn't exist\n    let container = element.parentElement;\n    if (!container.classList.contains('code-container')) {\n        container = document.createElement('div');\n        container.className = 'tpil-code-container';\n\n        // Insert container before element\n        element.parentNode.insertBefore(container, element);\n\n        // Move element into container\n        container.appendChild(element);\n    }\n\n    // Remove existing copy button if present\n    const existingBtn = container.querySelector('.copy-btn');\n    if (existingBtn) {\n        existingBtn.remove();\n    }\n\n    // Create copy button\n    const copyBtn = document.createElement('button');\n    copyBtn.className = 'copy-btn';\n    copyBtn.title = 'Copy to clipboard';\n    copyBtn.innerHTML = `\n        <svg class=\"copy-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n            <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"/>\n        </svg>\n    `;\n\n    // Add click event listener\n    copyBtn.addEventListener('click', async () => {\n        try {\n            // Copy the provided code text to clipboard\n            await navigator.clipboard.writeText(codeText);\n\n            // Show success feedback\n            const originalText = copyBtn.innerHTML;\n            copyBtn.innerHTML = `\n                <svg class=\"copy-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                    <path d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"/>\n                </svg>\n                Copied!\n            `;\n            copyBtn.classList.add('copied');\n\n            // Reset after 2 seconds\n            setTimeout(() => {\n                copyBtn.innerHTML = originalText;\n                copyBtn.classList.remove('copied');\n            }, 2000);\n\n        } catch (err) {\n            // Fallback for older browsers\n            fallbackCopyTextToClipboard(codeText);\n\n            // Show feedback\n            copyBtn.textContent = 'Copied!';\n            setTimeout(() => {\n                copyBtn.innerHTML = `\n                    <svg class=\"copy-icon\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n                        <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"/>\n                    </svg>\n                `;\n            }, 2000);\n        }\n    });\n\n    // Add button to container\n    container.appendChild(copyBtn);\n    return true;\n}\n\n// Fallback function for older browsers\nfunction fallbackCopyTextToClipboard(text) {\n    const textArea = document.createElement('textarea');\n    textArea.value = text;\n    textArea.style.position = 'fixed';\n    textArea.style.left = '-999999px';\n    textArea.style.top = '-999999px';\n    document.body.appendChild(textArea);\n    textArea.focus();\n    textArea.select();\n\n    try {\n        document.execCommand('copy');\n    } catch (err) {\n        console.error('Fallback: Oops, unable to copy', err);\n    }\n\n    document.body.removeChild(textArea);\n}\n\n// Expose API function globally\nwindow.addCopyButtonToElement = addCopyButtonToElement;\nwindow.addToggleButtonToElement = addToggleButtonToElement;\n\"#\n\ndef examplesCss := r#\"\n.example {\n  margin-left: 0.75em;\n}\n.example .hl.lean.block {\n  margin: 0;\n}\n.example .information pre {\n  margin: 0 0 0.25em 0;\n}\n\"#\n\ndef tpilBlock (block : BlockDescr) : BlockDescr :=\n  { block with\n    extraJsFiles :=\n      block.extraJsFiles\n        |>.insert { filename := \"copybutton.js\", contents := copyButtonJs, sourceMap? := none }\n    extraCssFiles :=\n      block.extraCssFiles\n        |>.insert { filename := \"copybutton.css\", contents := copyButtonCss }\n        |>.insert { filename := \"examples.css\", contents := examplesCss }\n\n    }\n\ndef tpilInline (inline : InlineDescr) : InlineDescr :=\n  { inline with\n    extraJsFiles :=\n      inline.extraJsFiles\n        |>.insert {filename := \"copybutton.js\", contents := copyButtonJs, sourceMap? := none}\n    extraCssFiles :=\n      inline.extraCssFiles\n        |>.insert { filename := \"copybutton.css\", contents := copyButtonCss }\n        |>.insert { filename := \"examples.css\", contents := examplesCss }\n    }\n\nstructure ExampleItem where\n  code : Highlighted\n  output : Option Highlighted.Message\n  trailing : String\nderiving ToJson, FromJson, Repr, Quote\n\ndef verbatimBlock (cmd : Highlighted) : TeX :=\n  let contents := cmd.trimOneTrailingNl.trimOneLeadingNl.toVerbatimTeX\n  .seq #[.raw s!\"\\\\begin\\{LeanVerbatim}[vspace=0pt]\\n\", contents, .raw \"\\n\\\\end{LeanVerbatim}\\n\"]\n\nblock_extension Block.lean\n    (allowToggle : Bool)\n    (pre : Option Highlighted)\n    (code : Array ExampleItem)\n    (post : Option Highlighted)\n    (goalVisibility : HighlightHtmlM.VisibleProofStates := .none)\n    via withHighlighting, tpilBlock where\n  data :=\n    let defined : Array (Name × String) := code.flatMap (definedNames ·.code)\n    .arr #[.bool allowToggle, toJson pre, toJson code, toJson post, toJson goalVisibility, toJson defined]\n  traverse id data _ := do\n    let .arr #[_allowToggle, _pre, _code, _post, _visibility, definesJson] := data\n      | logError s!\"Expected array for Lean block, got {data.compress}\"; return none\n    match FromJson.fromJson? definesJson with\n    | .error err =>\n      logError <| \"Failed to deserialize code config during traversal:\" ++ err\n      return none\n    | .ok (defines : Array (Name × String)) =>\n      for (d, s) in defines do\n        if d.isAnonymous then continue\n        let d := d.toString\n        let path ← (·.path) <$> read\n        let _ ← externalTag id path d\n        let context := (← read).headers.map (·.titleString)\n        modify (·.saveDomainObject exampleDomain d id)\n        if let some link := (← get).externalTags[id]? then\n          modify (·.modifyDomainObjectData exampleDomain d fun v =>\n            let v := if let .obj _ := v then v else .obj {}\n            v.setObjVal! link.link (json%{\"context\": $context, \"display\": $s}))\n    pure none\n  toTeX :=\n    open Verso.Output.TeX in\n    open Verso.Doc.TeX in\n    some <| fun _ _ _ data _ => do\n      let .arr #[.bool _allowToggle, hlPreJson, hlJson, hlPostJson, goalVisibilityJson, _defs] := data\n        | logError \"Expected five-element JSON for Lean code\"\n          pure .empty\n      let pre ←\n        match FromJson.fromJson? (α := Option Highlighted) hlPreJson with\n        | .error err =>\n          logError <| \"Couldn't deserialize Lean code intro block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let code ←\n        match FromJson.fromJson? (α := Array ExampleItem) hlJson with\n        | .error err =>\n          logError <| \"Couldn't deserialize Lean code block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let _post ←\n        match FromJson.fromJson? (α := Option Highlighted) hlPostJson with\n        | .error err =>\n          logError <| \"Couldn't deserialize Lean code outro block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let _visibility ←\n        match FromJson.fromJson? (α := HighlightHtmlM.VisibleProofStates) goalVisibilityJson with\n        | .error err =>\n          logError <| \"Couldn't deserialize Lean code outro block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let codeIndent := code.foldl (init := pre.map (·.indentation)) (fun i? y => i?.map (min · y.1.indentation)) |>.getD 0\n      let mut codeTeX : TeX := .empty\n\n      for ⟨cmd, out?, ws⟩ in code do\n        let cmd := cmd.deIndent codeIndent\n        codeTeX := codeTeX ++ verbatimBlock cmd\n        if let some msg := out? then\n          codeTeX := codeTeX ++ (← msg.toTeX)\n        unless ws.isEmpty do\n          codeTeX := codeTeX ++ (← (Highlighted.text ws).toTeX)\n\n      pure codeTeX\n\n  extraJsFiles := .ofList [{ filename := \"copybutton.js\", contents := copyButtonJs, sourceMap? := none }]\n  extraCssFiles := .ofList [\n    { filename := \"copybutton.css\", contents := copyButtonCss },\n    { filename := \"examples.css\", contents := examplesCss }\n  ]\n  toHtml :=\n    open Verso.Output.Html in\n    some <| fun _ _ _ data _ => do\n      let .arr #[.bool allowToggle, hlPreJson, hlJson, hlPostJson, goalVisibilityJson, _defs] := data\n        | HtmlT.logError \"Expected five-element JSON for Lean code\"\n          pure .empty\n      let pre ←\n        match FromJson.fromJson? (α := Option Highlighted) hlPreJson with\n        | .error err =>\n          HtmlT.logError <| \"Couldn't deserialize Lean code intro block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let code ←\n        match FromJson.fromJson? (α := Array ExampleItem) hlJson with\n        | .error err =>\n          HtmlT.logError <| \"Couldn't deserialize Lean code block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let post ←\n        match FromJson.fromJson? (α := Option Highlighted) hlPostJson with\n        | .error err =>\n          HtmlT.logError <| \"Couldn't deserialize Lean code outro block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let visibility ←\n        match FromJson.fromJson? (α := HighlightHtmlM.VisibleProofStates) goalVisibilityJson with\n        | .error err =>\n          HtmlT.logError <| \"Couldn't deserialize Lean code outro block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n\n      let codeIndent := code.foldl (init := pre.map (·.indentation)) (fun i? y => i?.map (min · y.1.indentation)) |>.getD 0\n\n      let mut codeHtml : Html := .empty\n      let mut codeString := \"\"\n\n      if allowToggle then\n        if let some p := pre then\n          let p := p.deIndent codeIndent\n          let inner ←\n            withDefinitionsAsTargets false <|\n            withVisibleProofStates visibility <|\n            p.trimOneLeadingNl |>.blockHtml \"examples\" (trim := false) (g := Verso.Genre.Manual)\n          codeHtml := codeHtml ++ {{ <div class=\"hidden\">{{ inner }}</div> }}\n          codeString := codeString ++ p.toString\n\n      for ⟨cmd, out?, ws⟩ in code do\n        let cmd := cmd.deIndent codeIndent\n        let moreCode ←\n          withDefinitionsAsTargets true <|\n          withVisibleProofStates visibility <|\n          cmd.trimOneLeadingNl |>.blockHtml \"examples\" (trim := false) (g := Verso.Genre.Manual)\n        codeHtml := codeHtml ++ moreCode\n        codeString := codeString ++ cmd.toString\n        if let some msg := out? then\n          let msgHtml ← msg.toHtml (g := Verso.Genre.Manual) []\n          codeHtml := codeHtml ++ {{<pre class=s!\"hl lean lean-output {msg.severity.class}\">{{msgHtml}}</pre>}}\n        unless ws.isEmpty do\n          codeHtml := codeHtml ++ (← (Highlighted.text ws).blockHtml \"examples\" (trim := false) (g := Verso.Genre.Manual))\n\n      if allowToggle then\n        if let some p := post then\n          let p := p.deIndent codeIndent\n          let inner ←\n            withDefinitionsAsTargets false <|\n            withVisibleProofStates visibility <|\n            p.trimOneLeadingNl |>.blockHtml \"examples\" (trim := false) (g := Verso.Genre.Manual)\n          codeHtml := codeHtml ++ {{ <div class=\"hidden\">{{ inner }}</div> }}\n          codeString := codeString ++ p.toString\n\n      let i ← uniqueId (g := Verso.Genre.Manual)\n      let toCopy := (pre.map (·.toString)).getD \"\" ++ codeString\n      let mut script := s!\"addCopyButtonToElement({i.quote}, {toCopy.quote});\"\n      if allowToggle && (pre.isSome || post.isSome) then\n        script := script ++ s!\"\\naddToggleButtonToElement({i.quote});\"\n\n      return {{\n        <div class=\"example\" id={{i}}>{{codeHtml}}</div>\n        <script>\n        {{Html.text false script}}\n        </script>\n      }}\n\nblock_extension Block.leanAnchor (code : Highlighted) (completeCode : String)\n    via withHighlighting, tpilBlock where\n  data := .arr #[toJson code, toJson completeCode]\n  traverse _ _ _ := pure none\n  toTeX :=\n    open Verso.Output.TeX in\n    open Verso.Doc.TeX in\n    some <| fun _ _ _ data _ => do\n      let .arr #[hlJson, completeCodeJson] := data\n        | logError \"Expected two-element JSON for Lean code\"\n          pure .empty\n      let code ←\n        match FromJson.fromJson? (α := Highlighted) hlJson with\n        | .error err =>\n          logError <| \"Couldn't deserialize Lean code block while rendering TeX: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let _completeCode ←\n        match FromJson.fromJson? (α := String) completeCodeJson with\n        | .error err =>\n          logError <| \"Couldn't deserialize Lean code string while rendering TeX: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n\n      let code := code.deIndent code.indentation\n      pure (verbatimBlock code)\n\n  toHtml :=\n    open Verso.Output.Html in\n    some <| fun _ _ _ data _ => do\n      let .arr #[hlJson, completeCodeJson] := data\n        | HtmlT.logError \"Expected two-element JSON for Lean code\"\n          pure .empty\n      let code ←\n        match FromJson.fromJson? (α := Highlighted) hlJson with\n        | .error err =>\n          HtmlT.logError <| \"Couldn't deserialize Lean code block while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n      let completeCode ←\n        match FromJson.fromJson? (α := String) completeCodeJson with\n        | .error err =>\n          HtmlT.logError <| \"Couldn't deserialize Lean code string while rendering HTML: \" ++ err\n          return .empty\n        | .ok hl => pure hl\n\n      let code := code.deIndent code.indentation\n\n      let codeHtml : Html := (← code.blockHtml \"examples\" (trim := false) (g := Verso.Genre.Manual))\n\n      let i ← uniqueId (g := Verso.Genre.Manual)\n      let mut script := s!\"addCopyButtonToElement({i.quote}, {completeCode.quote});\"\n\n      return {{\n        <div class=\"example\" id={{i}}>{{codeHtml}}</div>\n        <script>\n        {{Html.text false script}}\n        </script>\n      }}\n\ndef proofStateStyle := r#\"\n.hl.lean.proof-state-view {\n  white-space: collapse;\n  margin-left: 0.75em;\n}\n.hl.lean.proof-state-view .hypothesis {\n  display: table !important;\n  border-spacing: 0 0.2rem;\n  border-collapse: separate;\n}\n.hl.lean.proof-state-view .tactic-state {\n  display: block;\n  left: 0;\n  padding: 0;\n  border: none;\n}\n\n.hl.lean.proof-state-view .tactic-state:has(.goal + .goal) {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 2rem;\n  justify-content: space-evenly;\n  width: 100%;\n}\n.hl.lean.proof-state-view .tactic-state .goal {\n  margin: 0 !important;\n  align-self: flex-start;\n  width: fit-content;\n}\n\"#\n\nblock_extension Block.goals (goals : Array (Highlighted.Goal Highlighted))\n    via withHighlighting, tpilBlock where\n  data := toJson goals\n  traverse _ _ _ := pure none\n  toTeX :=\n    open Verso.Output.TeX in\n    open Verso.Doc.TeX in\n    some <| fun _ _ _ data _ => do\n      let goals ←\n        match fromJson? (α := Array (Highlighted.Goal Highlighted)) data with\n        | .ok v => pure v\n        | .error e =>\n          logError <| \"Failed to deserialize proof state: \" ++ e\n          return .empty\n      -- TODO: lay these out side-by-side\n      pure <| .seq (← goals.mapM (·.toTeX))\n  extraCssFiles := .ofList [{ filename := \"proof-state.css\", contents := proofStateStyle }]\n  toHtml :=\n    open Verso.Output.Html in\n    some <| fun _ _ _ data _ => do\n      let goals ←\n        match fromJson? (α := Array (Highlighted.Goal Highlighted)) data with\n        | .ok v => pure v\n        | .error e =>\n          HtmlT.logError <| \"Failed to deserialize proof state: \" ++ e\n          return .empty\n      pure {{\n        <div class=\"hl lean proof-state-view\" data-lean-context=\"examples\">\n          <span class=\"tactic-state\">\n            {{← if goals.isEmpty then\n                pure {{\"All goals completed! 🐙\"}}\n              else\n                withCollapsedSubgoals (g := Verso.Genre.Manual) .never <|\n                  .seq <$> (goals.mapIdxM (fun i x => x.toHtml (·.toHtml) i))}}\n          </span>\n        </div>\n      }}\n\ninline_extension Inline.goal (goal : Highlighted.Goal Highlighted)\n    via withHighlighting, tpilInline where\n  data := toJson goal\n  traverse _ _ _ := pure none\n  toTeX :=\n    open Verso.Doc.TeX in\n    open Verso.Output.TeX in\n    some <| fun _ _ data _ => do\n      let goal ←\n        match fromJson? (α := Highlighted.Goal Highlighted) data with\n        | .ok v => pure v\n        | .error e =>\n          logError <| \"Failed to deserialize proof goal: \" ++ e\n          return .empty\n      verbatimInline (goal.name.getD \"<anonymous>\")\n\n  toHtml :=\n    open Verso.Output.Html in\n    some <| fun _ _ data _ => do\n      let goal ←\n        match fromJson? (α := Highlighted.Goal Highlighted) data with\n        | .ok v => pure v\n        | .error e =>\n          HtmlT.logError <| \"Failed to deserialize proof goal: \" ++ e\n          return .empty\n      pure {{\n        <code class=\"proof-goal-ref hl lean\">\n          <span class=\"tactic\">\n            {{goal.name |>.getD \"<anonymous>\"}}\n            <span class=\"tactic-state\">\n              {{← goal.toHtml (g := Verso.Genre.Manual) (·.toHtml) 0}}\n            </span>\n          </span>\n        </code>\n      }}\n\ndef kbdCSS := r#\"\ncode.unicode-abbrev {\n  background-color: #eee;\n  border-radius: 3px;\n  border: 1px solid #ccc;\n  white-space: nowrap;\n}\n\nkbd {\n  white-space: nowrap;\n}\n\nkbd > code {\n  background-color: #eee;\n  border-radius: 3px;\n  border: 1px solid #b4b4b4;\n  box-shadow:\n    0 1px 1px rgba(0, 0, 0, 0.2),\n    0 2px 0 0 rgba(255, 255, 255, 0.7) inset;\n  color: #333;\n  display: inline-block;\n  font-size: 0.85em;\n  font-weight: 700;\n  line-height: 1;\n  padding: 2px 4px;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n\"#\n\ninline_extension Inline.kbd (items : Array String) where\n  data := toJson items\n  traverse _ _ _ := pure none\n  toTeX :=\n    open Verso.Output.TeX in\n    open Verso.Doc.TeX in\n    let verb (s : String) : TeX := .seq #[.raw \"\\\\verb|\", .raw s, raw \"|\"] -- Fails if s contains \"|\"\n    let verbs (ss : List String) : TeX := List.intersperse (TeX.text \" \") (ss.map verb)\n    some <| fun _ _ data _ => do\n      let items ←\n        match fromJson? (α := Array String) data with\n        | .ok v => pure v\n        | .error e =>\n          logError <| \"Failed to deserialize keyboard shortcut: \" ++ e\n          return .empty\n      if let #[item] := items then\n        if item.startsWith \"\\\\\" then\n          pure (verb item)\n        else\n          let items : List String := item.toList.map fun c => s!\"{c}\"\n          pure (verbs items)\n      else\n        pure (verbs items.toList)\n\n  extraCss := [kbdCSS]\n  toHtml :=\n    open Verso.Output.Html in\n    some <| fun _ _ data _ => do\n      let items ←\n        match fromJson? (α := Array String) data with\n        | .ok v => pure v\n        | .error e =>\n          HtmlT.logError <| \"Failed to deserialize keyboard shortcut: \" ++ e\n          return .empty\n      if let #[item] := items then\n        if item.startsWith \"\\\\\" then\n          pure {{<code class=\"unicode-abbrev\">{{item}}</code>}}\n        else\n          let items : Array Html := item.toList.toArray.map fun c =>  {{<code>{{s!\"{c}\"}}</code>}}\n          pure {{<kbd>{{items}}</kbd>}}\n      else\n        let items : Array Html := items.map (fun (s : String) => {{<code>s!\"{s}\"</code>}})\n        pure {{<kbd>{{items}}</kbd>}}\n\nprivate def oneCodeStr [Monad m] [MonadError m] (inlines : Array (TSyntax `inline)) : m StrLit := do\n  let #[code] := inlines\n    | (if inlines.size == 0 then (throwError ·) else (throwErrorAt (mkNullNode inlines) ·)) \"Expected one code element\"\n  let `(inline|code($code)) := code\n    | throwErrorAt code \"Expected a code element\"\n  return code\n\nprivate def codeStrs [Monad m] [MonadError m] (inlines : Array (TSyntax `inline)) : m (Array StrLit) := do\n  let mut out := #[]\n  for i in inlines do\n    match i with\n    | `(inline|code($code)) =>\n      out := out.push code\n    | `(inline|$s:str) =>\n      unless s.getString.all (·.isWhitespace) do\n        throwErrorAt s \"Expected a code literal\"\n    | other => throwErrorAt other \"Expected a code literal\"\n  return out\n\n\nstructure Kept (α : Type u) where\n  values : Array α\n  next : Nat\n  in_bounds : next < values.size\nderiving Repr\n\ninstance [Inhabited α] : Inhabited (Kept α) where\n  default := ⟨#[default], 0, by simp⟩\n\ndef Kept.add (kept : Kept α) (val : α) : Kept α where\n  values := kept.values.set kept.next val (h := kept.in_bounds)\n  next := if kept.next = 0 then kept.values.size - 1 else kept.next - 1\n  in_bounds := by\n    have := kept.in_bounds\n    rw [Array.size_set]\n    split <;> omega\n\ninstance [Monad m] : ForM m (Kept α) α where\n  forM kept f := do\n    for h : i in [kept.next:kept.values.size] do\n      f kept.values[i]\n    for h : i in [0:kept.next] do\n      have := kept.in_bounds\n      have : i < kept.next := by get_elem_tactic\n      f kept.values[i]\n\ninstance [Monad m] : ForIn m (Kept α) α := ⟨ForM.forIn⟩\n\ninitialize recentHighlightsExt : EnvExtension (Kept Highlighted) ←\n  registerEnvExtension (pure ⟨.replicate 12 .empty, 0, by simp⟩)\n\n/--\nA mapping from anchor names to the corresponding code. Each code element is paired with it's\nde-anchored context for copy-paste purposes.\n-/\ninitialize savedAnchorExt : EnvExtension (HashMap String (Highlighted × String)) ←\n  registerEnvExtension (pure {})\n\n\ndef allProofInfo (hl : Highlighted) : Array Highlighted :=\n  go #[] hl\nwhere\n  go (acc : Array Highlighted) : Highlighted → Array Highlighted\n    | .seq xs =>\n      xs.foldl (init := acc) go\n    | .span _ x => go acc x\n    | .tactics gs _ _ x => gs.foldl (init := (go acc x)) (fromGoal · ·)\n    | .point .. | .text .. | .token .. | .unparsed .. => acc\n  fromGoal (acc : Array Highlighted) (g : Highlighted.Goal Highlighted) :=\n    g.hypotheses.foldl (init := acc.push g.conclusion) fun acc ⟨xs, hl⟩ =>\n      let names : Highlighted := xs.foldl (init := .empty) fun hl tok =>\n        if hl.isEmpty then .token tok\n        else hl ++ .text \" \" ++ .token tok\n      acc.push (names ++ .text \" \" ++ .token ⟨.unknown, \":\"⟩ ++ .text \" \" ++ hl)\n\n\ndef saveBackref (hl : Highlighted) : DocElabM Unit := do\n  -- Construct a document with all the proof states in it, so references can target them but they\n  -- don't eat up individual slots in the history ring\n  let hl := allProofInfo hl |>.foldl (init := hl) (· ++ .text \"\\n\" ++ ·)\n\n  modifyEnv (recentHighlightsExt.modifyState · (·.add hl))\n\nstructure ProofState where\n  goals : Array (Highlighted.Goal Highlighted)\n  start : Nat\n  stop : Nat\n  «syntax» : Highlighted\nderiving Repr\n\ninitialize proofStatesExt : EnvExtension (HashMap String ProofState) ←\n  registerEnvExtension (pure {})\n\n/-- Extracts all messages from the given code. -/\ndef allInfo (hl : Highlighted) : Array (Highlighted.Message × Option Highlighted) :=\n  match hl with\n  | .seq xs => xs.flatMap allInfo\n  | .point k str => #[(⟨k, str⟩, none)]\n  | .tactics _ _ _ x => allInfo x\n  | .span infos x => (infos.map fun (k, str) => (⟨k, str⟩, some x)) ++ allInfo x\n  | .text .. | .token .. | .unparsed .. => #[]\n\ndef trailingText (hl : Highlighted) : Highlighted × String :=\n  match hl with\n  | .seq xs => Id.run do\n    let mut txt := \"\"\n    for h : i in [0:xs.size] do\n      let i' := xs.size - (i + 1)\n      have : i < xs.size := by get_elem_tactic\n      have : i' < xs.size := by grind\n      let (hl', txt') := trailingText xs[i']\n      txt := txt' ++ txt\n      if hl'.isEmpty then continue\n      else return (.seq (xs.extract 0 i' |>.push hl'), txt)\n    return (.empty, txt)\n  | .point .. | .token .. => (hl, \"\")\n  | .tactics i s e hl' =>\n    let (hl', txt) := trailingText hl'\n    (.tactics i s e hl', txt)\n  | .span i hl' =>\n    let (hl', txt) := trailingText hl'\n    (.span i hl', txt)\n  | .text txt | .unparsed txt => (.empty, txt)\n\nprivate def commentContents (s : String) : Option (String × String) :=\n  let s := s.trimAsciiStart\n  if s.startsWith \"--\" then\n    let s := s.dropWhile (· == '-') |>.trimAsciiStart\n    let ws := s.takeEndWhile (·.isWhitespace)\n    some (s.dropEnd ws.positions.count |>.copy, ws.copy)\n  else\n    none\n\n/--\nExtracts a trailing comment from code, if present.\n\nReturns the code along with the comment and its trailing whitespace.\n-/\ndef trailingComment (hl : Highlighted) : Highlighted × Option (String × String) :=\n  let x := trailingText hl\n  match commentContents x.2 with\n  | some txt' => (x.1, some txt')\n  | none => (hl, none)\n\n\nsection\n\ninductive ShowProofStates where\n  | none\n  | named (which : Array String)\n  | all\n\nstructure LeanConfig where\n  checkOutput : Bool\n  suppressNamespaces : Option String\n  allowVisible : Bool\n  showProofStates : ShowProofStates\n  «show» : Bool\n\nvariable [Monad m] [MonadError m ] [MonadLiftT CoreM m]\n\ninstance : FromArgVal ShowProofStates m where\n  fromArgVal := {\n    description := \"`all`, `none`, or a string literal\",\n    signature := .String ∪ .Ident\n    get := fun\n      | .name x =>\n        match x.getId with\n        | `all => pure .all\n        | `none => pure .none\n        | _ => do\n          let h ← MessageData.hint m!\"Use 'all', 'none', or a string\" #[\"all\", \"none\", \"NAME1 NAME2 ...\".quote] (ref? := x)\n          throwErrorAt x m!\"Expected 'all' or 'none' or a string literal\\n{h}\"\n      | .str s => pure <| .named <| (s.getString.splitOn \" \").toArray\n      | .num n => do\n        let h ← MessageData.hint m!\"Use 'all', 'none', or a string\" #[\"all\", \"none\", \"NAME1 NAME2 ...\".quote] (ref? := n)\n        throwErrorAt n m!\"Expected 'all' or 'none' or a string literal\\n{h}\"\n  }\n\ninstance : FromArgs LeanConfig m where\n  fromArgs :=\n    LeanConfig.mk <$>\n      .namedD `check .bool true <*>\n      .named `suppressNamespaces .string true <*>\n      .namedD `allowVisible .bool true <*>\n      .namedD' `showProofStates .none <*>\n      .namedD' `show .true\n\nstructure SavedLeanConfig where\n  name : Option Ident\n  suppressNamespaces : Option String\n\ninstance : FromArgs SavedLeanConfig m where\n  fromArgs :=\n    SavedLeanConfig.mk <$>\n      (some <$> .positional `name .ident <|> pure none) <*>\n      .named `suppressNamespaces .string true\n\nend\n\ndef isNewline (hl : Highlighted) : Bool :=\n  match hl with\n  | .text str | .unparsed str => str == \"\\n\"\n  | .token .. => false\n  | .seq xs => Id.run do\n    for h : i in [0:xs.size] do\n      if xs[i].isEmpty then continue\n      else if isNewline xs[i] then return xs.extract (i+1) |>.all (·.isEmpty)\n      else return false\n    return false\n  | .tactics _ _ _ x | .span _ x => isNewline x\n  | .point .. => false\n\n\n\nopen SubVerso.Module in\n/--\nLeading anchor comments are always incorrect. They probably result from Lean placing them with the\n_next_ command, so we should move them back up before processing them.\n-/\ndef fixupAnchorComments (items : Array ModuleItem) : Array ModuleItem := Id.run do\n  let mut out := #[]\n  let mut prev? : Option ModuleItem := none\n\n  for i in items do\n    let mut i := i\n    if prev?.isSome then\n      let mut lines := i.code.lines\n      while h : lines.size > 0 do\n        if isNewline lines[0] || (proofState? lines[0].toString |>.isOk) then\n          prev? := prev?.map (fun i => {i with code := i.code ++ lines[0]})\n          lines := lines.drop 1\n        else break\n      i := {i with code := .seq lines}\n      if let some prev := prev? then\n        out := out.push prev\n    prev? := some i\n  if let some prev := prev? then\n    out := out.push prev\n\n  return out\n\nprivate def showGoals (goals : Array (Highlighted.Goal Highlighted)) : MessageData := Id.run do\n  if goals.isEmpty then return m!\"No goals\"\n  let mut out := m!\"\"\n  for g in goals do\n    if let some n := g.name then\n      out := out ++ m!\"case {n}\\n\"\n    for ⟨xs, h⟩ in g.hypotheses do\n      let xs := \" \".intercalate (xs.toList.map (fun ⟨_, x⟩ => x))\n      out := out ++ m!\"{xs} : {h.toString}\\n\"\n    out := out ++ m!\"  {g.goalPrefix} {g.conclusion.toString}\\n\\n\"\n  pure out\n\n@[code_block_expander lean]\ndef lean : CodeBlockExpander\n  | args, code => do\n    let {checkOutput, suppressNamespaces, allowVisible, showProofStates, «show»} ← parseThe LeanConfig args\n    let mut showProofStates := showProofStates\n    let codeStr := code.getString\n    let contents ← extractFile codeStr suppressNamespaces\n    let contents := contents.filter (!·.code.isEmpty)\n    let (pre, mid, post) := splitExample' contents\n    let mid := fixupAnchorComments mid\n    let pre : Option Highlighted := pre.map fun p => p.foldl (init := .empty) fun acc c => acc ++ c.code\n    let mut toShow : Array ExampleItem := #[]\n    let mut visibility : HighlightHtmlM.VisibleProofStates :=\n      match showProofStates with\n      | .none => .none\n      | .all => .all\n      | .named _ => .states #[]\n    for item in mid do\n      let code ←\n        match item.code.anchored (textAnchors := false) with\n        | .ok a =>\n          for (k, v) in a.proofStates.toArray do\n            if let .tactics goals start stop hl := v then\n              logSilentInfo m!\"Proof state {k} on `{v.toString}`:\\n{showGoals goals}\"\n              modifyEnv (proofStatesExt.modifyState · (·.insert k ⟨goals, start, stop, hl⟩))\n              if let (.states ss, .named xs) := (visibility, showProofStates) then\n                if k ∈ xs then\n                  visibility := .states (ss.push (start, stop))\n                  showProofStates := .named (xs.filter (· ≠ k))\n            else throwError \"Unexpected syntax for proof state '{k}':{indentD <| repr v}\"\n          pure a.code\n        | .error e =>\n          throwError \"Error while extracting proof states:{indentD e}\"\n      let item := {item with code}\n      match item.kind with\n      | ``Lean.Parser.Command.check | ``Lean.Parser.Command.eval | ``Lean.reduceCmd | ``Lean.Parser.Command.check_failure\n      | ``Lean.Parser.Command.print | ``Lean.Parser.Command.printAxioms | ``Lean.Parser.Command.printEqns\n      | ``Lean.guardMsgsCmd =>\n        let info? : Option Highlighted.Message := allInfo item.code |>.firstM fun (msg, hl?) =>\n          if hl? matches some (.token ⟨.keyword .., _⟩) then some msg else none\n        if let some msg := info? then\n          if let (code, some (comment, ws)) := trailingComment item.code then\n            let txt := msg.toString\n            if checkOutput && !eqMessages comment txt then\n              throwError \"Mismatch! Expected {comment} but got {txt}\"\n            toShow := toShow.push ⟨code, some msg, dropOneNl ws⟩\n          else\n            let (code', ws) := trailingText item.code\n            toShow := toShow.push ⟨code', some msg, dropOneNl ws⟩\n        else toShow := toShow.push ⟨item.code, none, \"\"⟩\n        | _ => toShow := toShow.push ⟨item.code, none, \"\"⟩\n    let post : Option Highlighted := post.map fun p => p.foldl (init := .empty) fun acc c => acc ++ c.code\n    let visible := .seq <| toShow.map (·.1)\n    saveBackref visible\n    for (msg, _)  in allInfo visible do\n      logSilentInfo msg.toString\n    if let .named xs := showProofStates then\n      unless xs.isEmpty do\n        logWarning m!\"Unused proof state names: {m!\", \".joinSep (xs.map (m!\"'{·}'\")).toList}\"\n    if «show» then\n      return #[← ``(Block.other (Block.lean $(quote allowVisible) $(quote pre) $(quote toShow) $(quote post) $(quote visibility)) #[])]\n    else\n      return #[]\nwhere\n  eqMessages (s1 s2 : String) := SubVerso.Examples.Messages.messagesMatch (s1.replace \"\\n\" \" \") (s2.replace \"\\n\" \" \")\n  dropOneNl (s : String) : String :=\n    if s.back == '\\n' then (s.dropEnd 1).copy else s\n\n\n@[code_block_expander save]\ndef save : CodeBlockExpander\n  | args, code => do\n    let {name, suppressNamespaces} ← parseThe SavedLeanConfig args\n    let codeStr := code.getString\n    let contents ← extractFile codeStr suppressNamespaces\n    let contents : Highlighted := .seq <| contents.map (·.code)\n    match contents.anchored with\n    | .error e => throwError s!\"Error extracting anchors: {e}\"\n    | .ok {anchors, proofStates, code} =>\n      let codeStr := code.toString\n      for (k, v) in anchors.toArray do\n        logSilentInfo m!\"Anchor {k}:\\n{v.toString}\"\n        modifyEnv (savedAnchorExt.modifyState · (·.insert k (v, codeStr)))\n      for (k, v) in proofStates.toArray do\n        if let .tactics goals start stop hl := v then\n          logSilentInfo m!\"Proof state {k} on `{v.toString}`:\\n{showGoals goals}\"\n          modifyEnv (proofStatesExt.modifyState · (·.insert k ⟨goals, start, stop, hl⟩))\n      if let some x := name then\n        modifyEnv (savedAnchorExt.modifyState · (·.insert x.getId.toString (code, codeStr)))\n    pure #[]\n\n@[code_block_expander savedAnchor]\ndef savedAnchor : CodeBlockExpander\n  | args, code => do\n    let name ← ArgParse.run (.positional `name .ident) args\n    let env ← getEnv\n    let some (hl, complete) := (savedAnchorExt.getState env)[name.getId.toString]?\n      | throwErrorAt name m!\"Not found: '{name.getId}'\"\n    discard <| ExpectString.expectString \"code\" code hl.toString\n    saveBackref hl\n    return #[← ``(Block.other (Block.leanAnchor $(quote hl) $(quote complete)) #[])]\n\nsection\n\nstructure ProofStateConfig where\n  name : StrLit\n\nstructure GoalConfig where\n  name : StrLit\n\nvariable [Monad m] [MonadError m ] [MonadLiftT CoreM m]\n\nprivate def strOrName : ValDesc m StrLit where\n  description := \"identifier or string literal\"\n  signature := .Ident ∪ .String\n  get\n    | .name x => pure <| Syntax.mkStrLit x.getId.toString (info := x.raw.getHeadInfo)\n    | .str s => pure s\n    | .num n => throwErrorAt n \"Expected identifier or string literal\"\n\ninstance : FromArgs ProofStateConfig m where\n  fromArgs := ProofStateConfig.mk <$> .positional `name strOrName\n\ninstance : FromArgs GoalConfig m where\n  fromArgs := GoalConfig.mk <$> .positional `name strOrName\n\nend\n\n@[code_block_expander proofState]\ndef proofState : CodeBlockExpander\n  | args, code => do\n    let {name} ← parseThe ProofStateConfig args\n    let some {goals, ..} := (proofStatesExt.getState (← getEnv))[name.getString]?\n      | let allStates := (proofStatesExt.getState (← getEnv)).keys\n        let h ←\n          if allStates.isEmpty then\n            pure <| MessageData.hint' \"Name a proof state with a suitable PROOF_STATE: comment\"\n          else\n            MessageData.hint \"Use a proof state name:\" (allStates.toArray.map ({suggestion := .string ·})) (ref? := some name)\n        logErrorAt name m!\"Not found: {name.getString}\\n{h}\"\n        return #[← ``(sorry)]\n    let mut goalView := \"\"\n    for g in goals do\n      goalView := goalView ++ g.toString ++ \"\\n\\n\"\n    goalView := goalView.trimAsciiEnd.copy ++ \"\\n\"\n    _ ← ExpectString.expectString \"proof\" code goalView\n    return #[← ``(Block.other (Block.goals $(quote goals)) #[])]\n\n@[role_expander goal]\ndef goal : RoleExpander\n  | args, inls => do\n    let {name} ← parseThe GoalConfig args\n    let caseTag ← oneCodeStr inls\n    let some {goals, ..} := (proofStatesExt.getState (← getEnv))[name.getString]?\n      | logErrorAt name m!\"Not found: {name.getString}\"\n        return #[← ``(sorry)]\n    let goal? := goals.find? fun\n      | {name := some x, ..} => caseTag.getString == x\n      | _ => false\n    let some goal := goal?\n      | let validTags := goals.filterMap (·.name)\n        let h ←\n          if validTags.isEmpty then\n            pure <| MessageData.hint' m!\"\"\n          else\n            MessageData.hint m!\"Use a case label:\" (validTags.map ({suggestion := .string ·})) (ref? := some caseTag)\n        logErrorAt caseTag m!\"Not found: {caseTag.getString}\\n{h}\"\n        return #[← ``(sorry)]\n    return #[← ``(Inline.other (Inline.goal $(quote goal)) #[])]\n\nstructure Helper where\n  highlight (term : String) (type? : Option String) : IO Highlighted\n  command (cmd : String) : IO Highlighted\n  signature (code : String) : IO Highlighted\n  name (code : String) : IO Highlighted\n\nopen System in\nopen SubVerso.Helper in\ndef Helper.fromModule (setup : String) : IO Helper := do\n  let codeHash := hash setup\n  let modBase := \"Interact\" ++ hashString codeHash\n  let filename := modBase ++ \".lean\"\n  let mod := \"Examples.\" ++ modBase\n\n  -- Validate that the path is really a Lean project\n  let lakefile := projectDir / \"lakefile.lean\"\n  let lakefile' := projectDir / \"lakefile.toml\"\n  if !(← lakefile.pathExists) && !(← lakefile'.pathExists) then\n    throw <| .userError s!\"Neither {lakefile} nor {lakefile'} exist, couldn't load project\"\n  let toolchainfile := projectDir / \"lean-toolchain\"\n  let toolchain ← do\n      if !(← toolchainfile.pathExists) then\n        throw <| .userError s!\"File {toolchainfile} doesn't exist, couldn't load project\"\n      pure (← IO.FS.readFile toolchainfile).trimAscii.copy\n\n  IO.FS.writeFile (projectDir / \"Examples\" / filename) setup\n\n  -- Kludge: remove variables introduced by Lake. Clearing out DYLD_LIBRARY_PATH and\n  -- LD_LIBRARY_PATH is useful so the version selected by Elan doesn't get the wrong shared\n  -- libraries.\n  let lakeVars :=\n    #[\"LAKE\", \"LAKE_HOME\", \"LAKE_PKG_URL_MAP\",\n      \"LEAN_SYSROOT\", \"LEAN_AR\", \"LEAN_PATH\", \"LEAN_SRC_PATH\",\n      \"LEAN_GITHASH\",\n      \"ELAN_TOOLCHAIN\", \"DYLD_LIBRARY_PATH\", \"LD_LIBRARY_PATH\"]\n\n  let cmd := \"elan\"\n\n  let toolchainFile ← IO.FS.Handle.mk toolchainfile .read\n  toolchainFile.lock (exclusive := true)\n  try\n    let args := #[\"run\", \"--install\", toolchain, \"lake\", \"build\", \"subverso-helper\"]\n    let res ← IO.Process.output {\n      cmd, args, cwd := projectDir\n      -- Unset Lake's environment variables\n      env := lakeVars.map (·, none)\n    }\n    if res.exitCode != 0 then reportFail projectDir cmd args res\n  finally\n    toolchainFile.unlock\n\n  let setupFile ← IO.FS.Handle.mk (projectDir / \"Examples\" / filename) .read\n  setupFile.lock (exclusive := true)\n  try\n    let args := #[\"run\", \"--install\", toolchain, \"lake\", \"env\", \"subverso-helper\", mod]\n    let (hlTm, hlCmd, hlSig, hlName) ← do\n      let (procIn, proc) ← do\n        let proc ← IO.Process.spawn {\n          cmd, args, cwd := projectDir\n          -- Unset Lake's environment variables\n          env := lakeVars.map (·, none)\n          stdin := .piped\n          stdout := .piped\n          stderr := .inherit\n        }\n        proc.takeStdin\n      let mutex ← Std.Mutex.new (IO.FS.Stream.ofHandle procIn, IO.FS.Stream.ofHandle proc.stdout)\n      let hlTm := fun (tm : String) (ty? : Option String) => show IO Highlighted from do\n        mutex.atomically do\n          let (procIn, procOut) ← get\n          if let some code ← proc.tryWait then\n            throw <| .userError s!\"Process terminated: {code}\"\n          send procIn (Request.term tm ty?)\n          match (← receiveThe Response procOut) with\n          | some (.result (.highlighted hl)) => pure hl\n          | some (.error code e more) =>\n            let mut msg := s!\"{e} ({code}).\"\n            if let some details := more then\n              msg := msg ++ s!\" Details:\\n  {details}\"\n            throw <| .userError msg\n          | none => throw <| .userError \"Helper process no longer running\"\n      let hlCmd := fun (cmd : String) => show IO Highlighted from do\n        mutex.atomically do\n          let (procIn, procOut) ← get\n          if let some code ← proc.tryWait then\n            throw <| .userError s!\"Process terminated: {code}\"\n          send procIn (Request.command cmd)\n          match (← receiveThe Response procOut) with\n          | some (.result (.highlighted hl)) => pure hl\n          | some (.error code e more) =>\n            let mut msg := s!\"{e} ({code}).\"\n            if let some details := more then\n              msg := msg ++ s!\" Details:\\n  {details}\"\n            throw <| .userError msg\n          | none => throw <| .userError \"Helper process no longer running\"\n      let hlSig := fun (cmd : String) => show IO Highlighted from do\n        mutex.atomically do\n          let (procIn, procOut) ← get\n          if let some code ← proc.tryWait then\n            throw <| .userError s!\"Process terminated: {code}\"\n          send procIn (Request.signature cmd)\n          match (← receiveThe Response procOut) with\n          | some (.result (.highlighted hl)) => pure hl\n          | some (.error code e more) =>\n            let mut msg := s!\"{e} ({code}).\"\n            if let some details := more then\n              msg := msg ++ s!\" Details:\\n  {details}\"\n            throw <| .userError msg\n          | none => throw <| .userError \"Helper process no longer running\"\n      let hlName := fun (cmd : String) => show IO Highlighted from do\n        mutex.atomically do\n          let (procIn, procOut) ← get\n          if let some code ← proc.tryWait then\n            throw <| .userError s!\"Process terminated: {code}\"\n          send procIn (Request.name cmd)\n          match (← receiveThe Response procOut) with\n          | some (.result (.highlighted hl)) => pure hl\n          | some (.error code e more) =>\n            let mut msg := s!\"{e} ({code}).\"\n            if let some details := more then\n              msg := msg ++ s!\" Details:\\n  {details}\"\n            throw <| .userError msg\n          | none => throw <| .userError \"Helper process no longer running\"\n      pure (hlTm, hlCmd, hlSig, hlName)\n\n    return Helper.mk hlTm hlCmd hlSig hlName\n  finally\n    setupFile.unlock\nwhere\n  decorateOut (name : String) (out : String) : String :=\n    if out.isEmpty then \"\" else s!\"\\n{name}:\\n{out}\\n\"\n\n  reportFail {α} (projectDir : FilePath) (cmd : String) (args : Array String) (res : IO.Process.Output) : IO α := do\n    IO.eprintln <|\n      \"Build process failed.\" ++\n      \"\\nCWD: \" ++ projectDir.toString ++\n      \"\\nCommand: \" ++ cmd ++\n      \"\\nArgs: \" ++ repr args ++\n      \"\\nExit code: \" ++ toString res.exitCode ++\n      \"\\nstdout: \" ++ res.stdout ++\n      \"\\nstderr: \" ++ res.stderr\n\n    throw <| .userError <|\n      \"Build process failed.\" ++\n      decorateOut \"stdout\" res.stdout ++\n      decorateOut \"stderr\" res.stderr\n\ninitialize helperExt : EnvExtension (Option Helper) ←\n  registerEnvExtension (pure none)\n\ninitialize defaultHelperExt : EnvExtension (Option Helper) ←\n  registerEnvExtension (pure none)\n\n@[directive_expander setup]\ndef setup : DirectiveExpander\n  | args, contents => do\n    ArgParse.done.run args\n    if h : contents.size < 1 then\n      throwError \"Expected a setup code block\"\n    else\n      let first := contents[0]\n      let contents := contents.extract 1 contents.size\n      let `(block|``` | $setupCode ```) := first\n        | throwErrorAt first \"Expected undecorated code block\"\n      if helperExt.getState (← getEnv) |>.isSome then\n        throwError \"Already highlighting Lean\"\n      let helper ← Helper.fromModule setupCode.getString\n      modifyEnv fun env => helperExt.setState env (some helper)\n      try\n        contents.mapM elabBlock\n      finally\n        modifyEnv fun env => helperExt.setState env none\n\n\ndef prioritizedElab [Monad m] (prioritize : α → m Bool) (act : α  → m β) (xs : Array α) : m (Array β) := do\n  let mut out := #[]\n  let mut later := #[]\n  for h:i in [0:xs.size] do\n    let x := xs[i]\n    if ← prioritize x then\n      out := out.push (i, (← act x))\n    else later := later.push (i, x)\n  for (i, x) in later do\n    out := out.push (i, (← act x))\n  out := out.qsort (fun (i, _) (j, _) => i < j)\n  return out.map (·.2)\n\nopen Lean Elab in\ndef isLeanBlock : TSyntax `block → CoreM Bool\n  | `(block|```$nameStx:ident $_args*|$_contents:str```) => do\n    let name ← realizeGlobalConstNoOverloadWithInfo nameStx\n    return name == ``TPiL.lean || name == `TPiL.signature || name == `TPiL.savedAnchor\n  | _ => pure false\n\n\n/--\nElaborates Lean blocks first, maintaining the order of blocks. This makes their code available for `leanRef`.\n-/\n@[directive_expander leanFirst]\ndef leanFirst : DirectiveExpander\n  | args, contents => do\n    ArgParse.done.run args\n\n    -- Elaborate Lean blocks first, so inlines in prior blocks can refer to them\n    prioritizedElab (isLeanBlock ·) elabBlock contents\n\n\n@[code_block_expander setup]\ndef setupCode : CodeBlockExpander\n  | args, code => do\n    ArgParse.done.run args\n    let helper ← Helper.fromModule code.getString\n    modifyEnv fun env => defaultHelperExt.setState env (some helper)\n    return #[]\n\n@[directive_expander comment]\ndef comment : DirectiveExpander\n  | _, _ => pure #[]\n\n@[directive_expander TODO]\ndef TODO : DirectiveExpander\n  | _, _ => pure #[]\n\n@[role_expander TODO]\ndef TODOinline : RoleExpander\n  | _, _ => pure #[]\n\n@[role_expander kw]\ndef kw : RoleExpander\n  | args, inls => do\n    ArgParse.done.run args\n    let kw ← oneCodeStr inls\n    let hl : Highlighted := .token ⟨.keyword none none none, kw.getString⟩ -- TODO kw xref\n    return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote kw.getString)])]\n\n@[role_expander attr]\ndef attr : RoleExpander\n  | args, inls => do\n    ArgParse.done.run args\n    let kw ← oneCodeStr inls\n    let hl : Highlighted := .token ⟨.keyword none none none, kw.getString⟩ -- TODO attr xref\n    return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote kw.getString)])]\n\n\n@[role_expander tactic]\ndef tactic : RoleExpander\n  | args, inls => do\n    ArgParse.done.run args\n    let kw ← oneCodeStr inls\n    let hl : Highlighted := .token ⟨.keyword none none none, kw.getString⟩ -- TODO kw xref\n    return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote kw.getString)])]\n\n@[role_expander kbd]\ndef kbd : RoleExpander\n  | args, inls => do\n    ArgParse.done.run args\n    let kbd ← codeStrs inls\n    return #[← ``(Inline.other (Inline.kbd $(quote <| kbd.map (·.getString))) #[])]\n\n@[role_expander option]\ndef option : RoleExpander\n  | args, inls => do\n    ArgParse.done.run args\n    let kw ← oneCodeStr inls\n    return #[← ``(Inline.code $(quote kw.getString))]\n\n\ndef currentHelper : DocElabM Helper := do\n  if let some h := helperExt.getState (← getEnv) then pure h\n  else if let some h := defaultHelperExt.getState (← getEnv) then pure h\n  else\n    let helper ← Helper.fromModule s!\"-- EMPTY for {← getMainModule}\\n\"\n    modifyEnv fun env => defaultHelperExt.setState env (some helper)\n    pure helper\n\ndef multiVar? (str : String) : Option (Array String × String) := do\n  let mut out := #[]\n  let mut str := str.trimAscii\n  repeat\n    let pref1 := str.takeWhile alpha\n    let length1 := pref1.positions.count\n    if length1 < 1 then failure\n    str := str.drop length1\n    let pref2 := str.takeWhile (fun c => alpha c || c.isDigit)\n    let length2 := pref2.positions.count\n    str := str.drop length2\n    let pref := pref1.copy ++ pref2.copy\n    let c := str.startPos.get?\n    if pref.length > 0 && (c.isEqSome ' ' || c.isEqSome ':') then\n      out := out.push pref\n      str := str.dropWhile (· == ' ')\n    else failure\n\n    if str.startPos.get? |>.isEqSome ':' then\n      str := str.drop 1\n      str := str.dropWhile (· == ' ')\n      if str.isEmpty then failure\n      return (out, str.copy)\n  failure\nwhere\n  alpha c := c.isAlpha || c ∈ ['α', 'β', 'γ']\n\ndef highlightInline (code : String) (type? : Option String := none) : DocElabM Highlighted := do\n  let helper ← currentHelper\n  try\n    if type?.isSome then throwError \"failed\"\n    let some (vars, type) := multiVar? code\n      | throwError \"failed\"\n    let mut out : Highlighted := .empty\n    for v in vars do\n      out := out ++ (← helper.highlight v (some type)) ++ .text \" \"\n    out := out ++ .text \": \"\n    out := out ++ (← helper.highlight type none)\n    pure out\n  catch e1 =>\n    try\n      let codeStr := \"(\\n\" ++ code ++ \"\\n)\"\n      let hl ← helper.highlight codeStr type?\n      pure (hl.lines.extract 1 (hl.lines.size - 1) |> Highlighted.seq)\n    catch e2 =>\n      throwError \"Failed to highlight code. Errors:{indentD e1.toMessageData}\\nand:{indentD e2.toMessageData}\"\n\ndef highlightCommand (code : String) : DocElabM Highlighted := do\n  let helper ← currentHelper\n  helper.command code\n\ndef highlightSignature (code : String) : DocElabM Highlighted := do\n  let helper ← currentHelper\n  helper.signature code\n\ndef highlightName (code : String) : DocElabM Highlighted := do\n  let helper ← currentHelper\n  helper.name code\n\n@[role_expander lean]\ndef leanInline : RoleExpander\n  | args, inls => do\n    let type? ← ArgParse.run (.named `type .string true) args\n    let code ← oneCodeStr inls\n    let codeStr := code.getString\n\n    try\n      let hl ← highlightInline codeStr type?\n\n      saveBackref hl\n\n      return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote hl.toString)])]\n    catch\n      | .error refStx e =>\n        logErrorAt refStx e\n        return #[← ``(sorry)]\n      | e => throw e\n\n@[role_expander name]\ndef name : RoleExpander\n  | args, inls => do\n    let show? ← ArgParse.run (.named `show .string true) args\n    let code ← oneCodeStr inls\n    let codeStr := code.getString\n\n    try\n      let hl ← highlightName codeStr\n      let hl :=\n        if let some s := show? then\n          if let .token ⟨k, _⟩ := hl then\n            .token ⟨k, s⟩\n          else hl\n        else hl\n\n      saveBackref hl\n      match hl with\n      | .token ⟨k, _⟩ =>\n        match k with\n        | .const _ sig doc? _ =>\n          Hover.addCustomHover code <|\n            s!\"```\\n{sig}\\n```\\n\" ++\n            (doc?.map (\"\\n\\n***\\n\\n\" ++ ·) |>.getD \"\")\n        | .var _ sig =>\n          Hover.addCustomHover code <|\n            s!\"```\\n{sig}\\n```\\n\"\n        | _ => pure ()\n      | _ => pure ()\n\n      return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote hl.toString)])]\n    catch\n      | .error refStx e =>\n        logErrorAt refStx e\n        return #[← ``(sorry)]\n      | e => throw e\n\n\n@[role_expander leanCommand]\ndef leanCommand : RoleExpander\n  | args, inls => do\n    let type? ← ArgParse.done.run args\n    let code ← oneCodeStr inls\n    let codeStr := code.getString\n\n    try\n      let hl ← highlightCommand codeStr\n\n      saveBackref hl\n      for (msg, _) in allInfo hl do\n        let k := match msg.severity with | .info => \"info\" | .error => \"error\" | .warning => \"warning\"\n        logSilentInfo m!\"{k}: {msg.toString}\"\n\n      return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote hl.toString)])]\n    catch\n      | .error refStx e =>\n        logErrorAt refStx e\n        return #[← ``(sorry)]\n      | e => throw e\n\n\n@[code_block_expander leanCommand]\ndef leanCommandBlock : CodeBlockExpander\n  | args, code => do\n    let type? ← ArgParse.done.run args\n    let codeStr := code.getString\n\n    try\n      let hl ← highlightCommand codeStr\n\n      saveBackref hl\n      for (msg, _) in allInfo hl do\n        let k := match msg.severity with | .info => \"info\" | .error => \"error\" | .warning => \"warning\"\n        logSilentInfo m!\"{k}: {msg.toString}\"\n\n      return #[← ``(Block.other (Block.lean false none #[ExampleItem.mk $(quote hl) none \"\"] none) #[])]\n    catch\n      | .error refStx e =>\n        logErrorAt refStx e\n        return #[← ``(sorry)]\n      | e => throw e\n\n\n@[code_block_expander signature]\ndef signature : CodeBlockExpander\n  | args, code => do\n    let type? ← ArgParse.done.run args\n    let codeStr := code.getString\n\n    try\n      let hl ← highlightSignature codeStr\n\n      saveBackref hl\n      for (msg, _) in allInfo hl do\n        let k := match msg.severity with | .info => \"info\" | .error => \"error\" | .warning => \"warning\"\n        logSilentInfo m!\"{k}: {msg.toString}\"\n\n      return #[← ``(Block.other (Block.lean false none #[ExampleItem.mk $(quote hl) none \"\"] none) #[])]\n    catch\n      | .error refStx e =>\n        logErrorAt refStx e\n        return #[← ``(sorry)]\n      | e => throw e\n\n\n@[role_expander leanRef]\ndef leanRef : RoleExpander\n  | args, inls => do\n    let in? ← ArgParse.run (.named `in .string true) args\n    let code ← oneCodeStr inls\n    let codeStr := code.getString\n\n    for prev in recentHighlightsExt.getState (← getEnv) do\n      if let some «in» := in? then\n        if let some hl := prev.matchingExpr? «in» then\n          if let some hl := hl.matchingExpr? codeStr then\n            return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote hl.toString)])]\n          else break\n      else if let some hl := prev.matchingExpr? codeStr then\n        return #[← ``(Inline.other (Inline.lean $(quote hl) {}) #[Inline.code $(quote hl.toString)])]\n\n    throwError \"Not found: '{codeStr}'\"\n\n@[role_expander empty]\ndef empty : RoleExpander\n  | args, _inls => do\n    ArgParse.done.run args\n    return #[]\n\nprivate def keywords := [\n  \"#print\", \"#eval\", \"#print axioms\", \"#reduce\", \"#check\",\n  \"noncomputable\", \"protected\", \"partial\",\n  \"import\", \"export\", \"local\",\n  \"def\", \"example\", \"instance\", \"macro_rules\", \"axiom\", \"if\", \"then\", \"else\", \"show\", \"have\", \"calc\",\n  \"universe\", \"section\", \"end\", \"variable\", \"open\", \"set_option\",\n  \"let\", \"fun\"\n]\n\nprivate def tactics := [\n  \"if\", \"then\", \"else\", \"show\", \"have\", \"calc\", \"simp\", \"rw\",\n  \"let\", \"fun\", \"<;>\"\n]\n\n\nprivate def leanLits := [\n  \"→\", \"->\", \";\", \"×\", \".\", \"_\", \"⟨\", \"⟩\"\n]\n\n\nopen MessageData (hint) in\n/--\nInternal detail of suggestion mechanism.\n-/\n@[inline_expander Lean.Doc.Syntax.code]\nprivate def suggest : InlineExpander\n  |  `(inline| code( $str )) => do\n    let str' := str.getString\n\n    -- unless verso.examples.suggest.get (← getOptions) do\n    --   -- Delegate to the next handler\n    --   Elab.throwUnsupportedSyntax\n    if str' ∈ keywords then\n      let h ← hint m!\"Add the `kw` role:\" #[\"{kw}`\" ++ str' ++ \"`\"]\n      logWarning <| m!\"Code element could be a keyword.\" ++ h\n    else if str'.startsWith \"\\\\\" then\n      let h ← hint m!\"Add the `kbd` role:\" #[\"{kbd}`\" ++ str' ++ \"`\"]\n      logWarning <| m!\"Code element could be a Unicode abbreviation.\" ++ h\n    else if (← getOptionDecls).any (fun x _ => x.toString == str'.trimAscii) then\n      let h ← hint m!\"Add the `option` role:\" #[\"{option}`\" ++ str' ++ \"`\"]\n      logWarning <| m!\"Code element could be a compiler option.\" ++ h\n    else\n      let mut suggs : Array Meta.Hint.Suggestion := #[]\n      let mut exns := #[]\n      try\n        let _ ← highlightInline str'\n        suggs := suggs.push <| \"{lean}`\" ++ str' ++ \"`\"\n      catch e =>\n        exns := exns.push e\n      if str' ∈ tactics then\n        suggs := suggs.push <| \"{tactic}`\" ++ str' ++ \"`\"\n\n      for prev in recentHighlightsExt.getState (← getEnv) do\n        if let some _ := prev.matchingExpr? str' then\n          suggs := suggs.push <| \"{leanRef}`\" ++ str' ++ \"`\"\n          break\n      if str' ∈ leanLits then\n        suggs := suggs.push <| \"{lit}`\" ++ str' ++ \"`\"\n\n      for (name, {goals := gs, ..}) in proofStatesExt.getState (← getEnv) do\n        let name := if name.any (·.isWhitespace) then name.quote else name\n        if gs.any (·.name |>.isEqSome str') then\n          suggs := suggs.push <| \"{goal \" ++ name ++ \"}`\" ++ str' ++ \"`\"\n\n      if suggs.isEmpty then\n        let h ← hint m!\"Add the `lit` role to indicate that it denotes literal characters:\" #[\"{lit}`\" ++ str' ++ \"`\"]\n        logWarning <| m!\"Code element is missing a role, and can't be Lean code:{m!\"\\nand\\n\".joinSep (exns.map (indentD ·.toMessageData) |>.toList)}\" ++ h\n      else\n        let h ← hint m!\"Add a `lean` role:\" suggs\n        logWarning <| m!\"Code element could be highlighted.\" ++ h\n\n\n    return (← ``(Inline.code $(quote str.getString)))\n  | _ => Elab.throwUnsupportedSyntax\n"
  },
  {
    "path": "book/TPiL/InductionAndRecursion.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre\nopen Verso.Genre.Manual hiding tactic\nopen TPiL\n\n#doc (Manual) \"Induction and Recursion\" =>\n%%%\ntag := \"induction-and-recursion\"\n%%%\n\nIn the previous chapter, we saw that inductive definitions provide a\npowerful means of introducing new types in Lean. Moreover, the\nconstructors and the recursors provide the only means of defining\nfunctions on these types. By the {tech}[propositions-as-types] correspondence,\nthis means that induction is the fundamental method of proof.\n\nLean provides natural ways of defining recursive functions, performing\npattern matching, and writing inductive proofs. It allows you to\ndefine a function by specifying equations that it should satisfy, and\nit allows you to prove a theorem by specifying how to handle various\ncases that can arise. Behind the scenes, these descriptions are\n“compiled” down to primitive recursors, using a procedure that we\nrefer to as the “equation compiler.” The equation compiler is not part\nof the trusted code base; its output consists of terms that are\nchecked independently by the kernel.\n\n# Pattern Matching\n%%%\ntag := \"pattern-matching\"\n%%%\n\nThe interpretation of schematic patterns is the first step of the\ncompilation process. We have seen that the {lit}`casesOn` recursor can\nbe used to define functions and prove theorems by cases, according to\nthe constructors involved in an inductively defined type. But\ncomplicated definitions may use several nested {lit}`casesOn`\napplications, and may be hard to read and understand. Pattern matching\nprovides an approach that is more convenient, and familiar to users of\nfunctional programming languages.\n\n:::setup\n```\nopen Nat\nvariable (x : Nat)\n```\n\nConsider the inductively defined type of natural numbers. Every\nnatural number is either {lean}`zero` or {lean}`succ x`, and so you can define\na function from the natural numbers to an arbitrary type by specifying\na value in each of those cases:\n:::\n\n```lean\nset_option linter.unusedVariables false\n--------\nopen Nat\n\ndef sub1 : Nat → Nat\n  | zero   => zero\n  | succ x => x\n\ndef isZero : Nat → Bool\n  | zero   => true\n  | succ x => false\n```\n\nThe equations used to define these functions hold definitionally:\n\n```lean\nopen Nat\ndef sub1 : Nat → Nat\n  | zero   => zero\n  | succ x => x\ndef isZero : Nat → Bool\n  | zero   => true\n  | succ x => false\n------\nexample : sub1 0 = 0 := rfl\nexample (x : Nat) : sub1 (succ x) = x := rfl\n\nexample : isZero 0 = true := rfl\nexample (x : Nat) : isZero (succ x) = false := rfl\n\nexample : sub1 7 = 6 := rfl\nexample (x : Nat) : isZero (x + 3) = false := rfl\n```\n\nInstead of {leanRef}`zero` and {leanRef}`succ`, we can use more familiar notation:\n\n```lean\nset_option linter.unusedVariables false\n--------\ndef sub1 : Nat → Nat\n  | 0     => 0\n  | x + 1 => x\n\ndef isZero : Nat → Bool\n  | 0     => true\n  | x + 1 => false\n```\n\nBecause addition and the zero notation have been assigned the\n{attr}`[match_pattern]` attribute, they can be used in pattern matching. Lean\nsimply normalizes these expressions until the constructors {leanRef}`zero`\nand {leanRef}`succ` are exposed.\n\nPattern matching works with any inductive type, such as products and option types:\n\n```lean\ndef swap : α × β → β × α\n  | (a, b) => (b, a)\n\ndef foo : Nat × Nat → Nat\n  | (m, n) => m + n\n\ndef bar : Option Nat → Nat\n  | some n => n + 1\n  | none   => 0\n```\n\nHere we use it not only to define a function, but also to carry out a\nproof by cases:\n\n```lean\nnamespace Hidden\n------\ndef not : Bool → Bool\n  | true  => false\n  | false => true\n\ntheorem not_not : ∀ (b : Bool), not (not b) = b\n  | true  => show not (not true) = true from rfl\n  | false => show not (not false) = false from rfl\n------\nend Hidden\n```\n\nPattern matching can also be used to destruct inductively defined propositions:\n\n```lean\nexample (p q : Prop) : p ∧ q → q ∧ p\n  | And.intro h₁ h₂ => And.intro h₂ h₁\n\nexample (p q : Prop) : p ∨ q → q ∨ p\n  | Or.inl hp => Or.inr hp\n  | Or.inr hq => Or.inl hq\n```\n\nThis provides a compact way of unpacking hypotheses that make use of logical connectives.\n\nIn all these examples, pattern matching was used to carry out a single\ncase distinction. More interestingly, patterns can involve nested\nconstructors, as in the following examples.\n\n```lean\ndef sub2 : Nat → Nat\n  | 0     => 0\n  | 1     => 0\n  | x + 2 => x\n```\n\nThe equation compiler first splits on cases as to whether the input is\n{leanRef}`zero` or of the form {leanRef}`succ x`.  It then does a case split on\nwhether {leanRef}`x` is of the form {leanRef}`zero` or {leanRef}`succ x`.  It determines\nthe necessary case splits from the patterns that are presented to it,\nand raises an error if the patterns fail to exhaust the cases. Once\nagain, we can use arithmetic notation, as in the version below. In\neither case, the defining equations hold definitionally.\n\n```lean\ndef sub2 : Nat → Nat\n  | 0   => 0\n  | 1   => 0\n  | x+2 => x\n------\nexample : sub2 0 = 0 := rfl\nexample : sub2 1 = 0 := rfl\nexample : sub2 (x+2) = x := rfl\n\nexample : sub2 5 = 3 := rfl\n```\n\n:::setup\n```\ndef sub2 : Nat → Nat\n  | 0     => 0\n  | 1     => 0\n  | x + 2 => x\n```\nYou can write {leanCommand}`#print sub2` to see how the function was compiled to\nrecursors. (Lean will tell you that {leanRef}`sub2` has been defined in terms\nof an internal auxiliary function, {lean}`sub2.match_1`, but you can print\nthat out too.) Lean uses these auxiliary functions to compile {kw}`match` expressions.\nActually, the definition above is expanded to\n:::\n```lean\ndef sub2 : Nat → Nat :=\n  fun x =>\n    match x with\n    | 0     => 0\n    | 1     => 0\n    | x + 2 => x\n```\n\nHere are some more examples of nested pattern matching:\n\n```lean\nset_option linter.unusedVariables false\n--------\nexample (p q : α → Prop) :\n        (∃ x, p x ∨ q x) →\n        (∃ x, p x) ∨ (∃ x, q x)\n  | Exists.intro x (Or.inl px) => Or.inl (Exists.intro x px)\n  | Exists.intro x (Or.inr qx) => Or.inr (Exists.intro x qx)\n\ndef foo : Nat × Nat → Nat\n  | (0, n)     => 0\n  | (m+1, 0)   => 1\n  | (m+1, n+1) => 2\n```\n\nThe equation compiler can process multiple arguments sequentially. For\nexample, it would be more natural to define the previous example as a\nfunction of two arguments:\n\n```lean\nset_option linter.unusedVariables false\n--------\ndef foo : Nat → Nat → Nat\n  | 0,     n     => 0\n  | m + 1, 0     => 1\n  | m + 1, n + 1 => 2\n```\n\nHere is another example:\n\n```lean\nset_option linter.unusedVariables false\n--------\ndef bar : List Nat → List Nat → Nat\n  | [],      []      => 0\n  | a :: as, []      => a\n  | [],      b :: bs => b\n  | a :: as, b :: bs => a + b\n```\n\nNote that the patterns are separated by commas.\n\nIn each of the following examples, splitting occurs on only the first\nargument, even though the others are included among the list of\npatterns.\n\n```lean\nset_option linter.unusedVariables false\nnamespace Hidden\n------\ndef and : Bool → Bool → Bool\n  | true,  a => a\n  | false, _ => false\n\ndef or : Bool → Bool → Bool\n  | true,  _ => true\n  | false, a => a\n\ndef cond : Bool → α → α → α\n  | true,  x, y => x\n  | false, x, y => y\n------\nend Hidden\n```\n\nNotice also that, when the value of an argument is not needed in the\ndefinition, you can use an underscore instead. This underscore is\nknown as a _wildcard pattern_, or an _anonymous variable_. In contrast\nto usage outside the equation compiler, here the underscore does _not_\nindicate an implicit argument. The use of underscores for wildcards is\ncommon in functional programming languages, and so Lean adopts that\nnotation. The section on {ref \"wildcards-and-overlapping-patterns\"}[wildcards and overlapping patterns]\nexpands on the notion of a wildcard, and the description of {ref \"inaccessible-patterns\"}[inaccessible patterns] explains how\nyou can use implicit arguments in patterns as well.\n\n::::setup\n```\nset_option linter.unusedVariables false\n--------\ndef tail : List α → List α\n  | []      => []\n  | a :: as => as\n```\n\n:::leanFirst\nAs described in {ref \"inductive-types\"}[Inductive Types],\ninductive data types can depend on parameters. The following example defines\nthe {name}`tail` function using pattern matching. The argument {leanRef}`α : Type u`\nis a parameter and occurs before the colon to indicate it does not participate in the pattern matching.\nLean also allows parameters to occur after the {leanRef}`:`, but pattern matching on them requires an explicit {leanRef}`match`.\n\n\n```lean\nset_option linter.unusedVariables false\n--------\ndef tail1 {α : Type u} : List α → List α\n  | []      => []\n  | a :: as => as\n\ndef tail2 : {α : Type u} → List α → List α\n  | α, []      => []\n  | α, a :: as => as\n```\n:::\n::::\n\nDespite the different placement of the parameter {leanRef}`α` in these two\nexamples, in both cases it is treated in the same way, in that it does\nnot participate in a case split.\n\nLean can also handle more complex forms of pattern matching, in which\narguments to dependent types pose additional constraints on the\nvarious cases. Such examples of _dependent pattern matching_ are\nconsidered in the section on {ref \"dependent-pattern-matching\"}[dependent pattern matching].\n\n# Wildcards and Overlapping Patterns\n%%%\ntag := \"wildcards-and-overlapping-patterns\"\n%%%\n\nConsider one of the examples from the last section:\n\n```lean\nset_option linter.unusedVariables false\n--------\ndef foo : Nat → Nat → Nat\n  | 0,     n     => 0\n  | m + 1, 0     => 1\n  | m + 1, n + 1 => 2\n```\n\nAn alternative presentation is:\n\n```lean\nset_option linter.unusedVariables false\n--------\ndef foo : Nat → Nat → Nat\n  | 0, n => 0\n  | m, 0 => 1\n  | m, n => 2\n```\n\nIn the second presentation, the patterns overlap; for example, the\npair of arguments {lit}`0, 0` matches all three cases. But Lean handles\nthe ambiguity by using the first applicable equation, so in this example\nthe net result is the same. In particular, the following equations hold\ndefinitionally:\n\n```lean\ndef foo : Nat → Nat → Nat\n  | 0, n => 0\n  | m, 0 => 1\n  | m, n => 2\n------\nexample : foo 0       0       = 0 := rfl\nexample : foo 0       (n + 1) = 0 := rfl\nexample : foo (m + 1) 0       = 1 := rfl\nexample : foo (m + 1) (n + 1) = 2 := rfl\n```\n\nSince the values of {leanRef (in:=\"m, n\")}`m` and {leanRef (in:=\"m, n\")}`n` are not needed, we can just as well use wildcard patterns instead.\n\n```lean\ndef foo : Nat → Nat → Nat\n  | 0, _ => 0\n  | _, 0 => 1\n  | _, _ => 2\n```\n\nYou can check that this definition of {leanRef}`foo` satisfies the same\ndefinitional identities as before.\n\n:::setup\n```\nvariable (α : Type u) (a : α)\n```\n\nSome functional programming languages support _incomplete\npatterns_. In these languages, the interpreter produces an exception\nor returns an arbitrary value for incomplete cases. We can simulate\nthe arbitrary value approach using the {lean}`Inhabited` type\nclass. Roughly, an element of {lean}`Inhabited α` is a witness to the fact\nthat there is an element of {lean}`α`; in {ref \"type-classes\"}[the chapter on type classes]\nwe will see that Lean can be instructed that suitable\nbase types are inhabited, and can automatically infer that other\nconstructed types are inhabited. On this basis, the\nstandard library provides a default element, {lean}`default`, of\nany inhabited type.\n\nWe can also use the type {lean}`Option α` to simulate incomplete patterns.\nThe idea is to return {lean}`some a` for the provided patterns, and use\n{lean (type:=\"Option α\")}`none` for the incomplete cases. The following example demonstrates\nboth approaches.\n:::\n\n```lean\ndef f1 : Nat → Nat → Nat\n  | 0, _  => 1\n  | _, 0  => 2\n  | _, _  => default  -- the \"incomplete\" case\n\nexample : f1 0     0     = 1       := rfl\nexample : f1 0     (a+1) = 1       := rfl\nexample : f1 (a+1) 0     = 2       := rfl\nexample : f1 (a+1) (b+1) = default := rfl\n\ndef f2 : Nat → Nat → Option Nat\n  | 0, _  => some 1\n  | _, 0  => some 2\n  | _, _  => none     -- the \"incomplete\" case\n\nexample : f2 0     0     = some 1 := rfl\nexample : f2 0     (a+1) = some 1 := rfl\nexample : f2 (a+1) 0     = some 2 := rfl\nexample : f2 (a+1) (b+1) = none   := rfl\n```\n\nThe equation compiler is clever. If you leave out any of the cases in\nthe following definition, the error message will let you know what has\nnot been covered.\n\n```lean\ndef bar : Nat → List Nat → Bool → Nat\n  | 0,   _,      false => 0\n  | 0,   b :: _, _     => b\n  | 0,   [],     true  => 7\n  | a+1, [],     false => a\n  | a+1, [],     true  => a + 1\n  | a+1, b :: _, _     => a + b\n```\n\nIt will also use an {kw}`if`{lit}`  ...  `{kw}`then`{lit}`  ...  `{kw}`else` instead of a {lit}`casesOn` in appropriate situations.\n\n```lean\nset_option pp.proofs true\n-------\ndef foo : Char → Nat\n  | 'A' => 1\n  | 'B' => 2\n  | _   => 3\n\n#print foo.match_1\n```\n\n# Structural Recursion and Induction\n%%%\ntag := \"structural-recursion-and-induction\"\n%%%\n\nWhat makes the equation compiler powerful is that it also supports\nrecursive definitions. In the next three sections, we will describe,\nrespectively:\n\n- structurally recursive definitions\n- well-founded recursive definitions\n- mutually recursive definitions\n\nGenerally speaking, the equation compiler processes input of the following form:\n\n```\ndef foo (a : α) : (b : β) → γ\n  | [patterns₁] => t₁\n  ...\n  | [patternsₙ] => tₙ\n```\n\nHere {lit}`(a : α)` is a sequence of parameters, {lit}`(b : β)` is the\nsequence of arguments on which pattern matching takes place, and {lit}`γ`\nis any type, which can depend on {lit}`a` and {lit}`b`. Each line should\ncontain the same number of patterns, one for each element of {lit}`β`. As we\nhave seen, a pattern is either a variable, a constructor applied to\nother patterns, or an expression that normalizes to something of that\nform (where the non-constructors are marked with the {attr}`[match_pattern]`\nattribute). The appearances of constructors prompt case splits, with\nthe arguments to the constructors represented by the given\nvariables. In the section on {ref \"dependent-pattern-matching\"}[dependent pattern matching],\nwe will see that some explicit terms in patterns are forced into a particular form\nin order to make an expression type check, though they do not play a\nrole in pattern matching. These are called “{deftech}[inaccessible patterns]” for\nthat reason. But we will not need to use such inaccessible patterns\nbefore covering {ref \"dependent-pattern-matching\"}[dependent pattern matching].\n\nAs we saw in the last section, the terms {lit}`t₁, ..., tₙ` can make use\nof any of the parameters {lit}`a`, as well as any of the variables that\nare introduced in the corresponding patterns. What makes recursion and\ninduction possible is that they can also involve recursive calls to\n{lit}`foo`. In this section, we will deal with _structural recursion_, in\nwhich the arguments to {lit}`foo` occurring on the right-hand side of the\n{lit}`=>` are subterms of the patterns on the left-hand side. The idea is\nthat they are structurally smaller, and hence appear in the inductive\ntype at an earlier stage. Here are some examples of structural\nrecursion from the last chapter, now defined using the equation\ncompiler:\n\n```lean\nopen Nat\ndef add : Nat → Nat → Nat\n  | m, zero   => m\n  | m, succ n => succ (add m n)\n\ntheorem add_zero (m : Nat)   : add m zero = m := rfl\ntheorem add_succ (m n : Nat) : add m (succ n) = succ (add m n) := rfl\n\ntheorem zero_add : ∀ n, add zero n = n\n  | zero   => rfl\n  | succ n => congrArg succ (zero_add n)\n\ndef mul : Nat → Nat → Nat\n  | n, zero   => zero\n  | n, succ m => add (mul n m) n\n```\n\nThe proof of {leanRef}`zero_add` makes it clear that proof by induction is\nreally a form of recursion in Lean.\n\nThe example above shows that the defining equations for {leanRef}`add` hold\ndefinitionally, and the same is true of {leanRef}`mul`. The equation compiler\ntries to ensure that this holds whenever possible, as is the case with\nstraightforward structural induction. In other situations, however,\nreductions hold only _propositionally_, which is to say, they are\nequational theorems that must be applied explicitly. The equation\ncompiler generates such theorems internally. They are not meant to be\nused directly by the user; rather, the {tactic}`simp` tactic\nis configured to use them when necessary. The following\nproof of {leanRef}`zero_add` works this way:\n\n```lean\nopen Nat\ndef add : Nat → Nat → Nat\n  | m, zero   => m\n  | m, succ n => succ (add m n)\n-----\ntheorem zero_add : ∀ n, add zero n = n\n  | zero   => by simp [add]\n  | succ n => by simp [add, zero_add]\n```\n\nAs with definition by pattern matching, parameters to a structural\nrecursion or induction may appear before the colon. Such parameters\nare simply added to the local context before the definition is\nprocessed. For example, the definition of addition may also be written\nas follows:\n\n```lean\nopen Nat\ndef add (m : Nat) : Nat → Nat\n  | zero   => m\n  | succ n => succ (add m n)\n```\n\nYou can also write the example above using {kw}`match`.\n\n```lean\nopen Nat\ndef add (m n : Nat) : Nat :=\n  match n with\n  | zero   => m\n  | succ n => succ (add m n)\n```\n\n:::leanFirst\nA more interesting example of structural recursion is given by the Fibonacci function {leanRef}`fib`.\n\n```lean\ndef fib : Nat → Nat\n  | 0   => 1\n  | 1   => 1\n  | n+2 => fib (n+1) + fib n\n\nexample : fib 0 = 1 := rfl\n\nexample : fib 1 = 1 := rfl\n\nexample : fib (n + 2) = fib (n + 1) + fib n := rfl\n\nexample : fib 7 = 21 := rfl\n```\n:::\n:::setup\n```\nvariable (n : Nat)\nopen Nat\n```\n\nHere, the value of the {leanRef}`fib` function at {leanRef}`n + 2` (which is\ndefinitionally equal to {lean}`succ (succ n)`) is defined in terms of the\nvalues at {leanRef}`n + 1` (which is definitionally equivalent to {lean}`succ n`)\nand the value at {leanRef}`n`. This is a notoriously inefficient way of\ncomputing the Fibonacci function, however, with an execution time that\nis exponential in {lean}`n`. Here is a better way:\n:::\n\n```lean\ndef fibFast (n : Nat) : Nat :=\n  (loop n).2\nwhere\n  loop : Nat → Nat × Nat\n    | 0   => (0, 1)\n    | n+1 => let p := loop n; (p.2, p.1 + p.2)\n\n#eval fibFast 100 -- 573147844013817084101\n```\n\nHere is the same definition using a {kw}`let rec` instead of a {kw}`where`.\n\n```lean\ndef fibFast (n : Nat) : Nat :=\n  let rec loop : Nat → Nat × Nat\n    | 0   => (0, 1)\n    | n+1 => let p := loop n; (p.2, p.1 + p.2)\n  (loop n).2\n```\n\nIn both cases, Lean generates the auxiliary function {lit}`fibFast.loop`.\n\n:::leanFirst\nTo handle structural recursion, the equation compiler uses\n_course-of-values_ recursion, using constants {lit}`below` and {lit}`brecOn`\nthat are automatically generated with each inductively defined\ntype. You can get a sense of how it works by looking at the types of\n{leanRef}`Nat.below` and {leanRef}`Nat.brecOn`:\n\n```lean\nvariable (C : Nat → Type u)\n\n#check (@Nat.below C : Nat → Type u)\n\n#reduce @Nat.below C (3 : Nat)\n\n#check (@Nat.brecOn C : (n : Nat) → ((n : Nat) → @Nat.below C n → C n) → C n)\n```\n:::\n:::setup\n```\nvariable (C : Nat → Type u) (n : Nat)\n```\nThe type {lean}`@Nat.below C (3 : Nat)` is a data structure that stores elements of {lean}`C 0`, {lean}`C 1`, and {lean}`C 2`.\nThe course-of-values recursion is implemented by {name}`Nat.brecOn`. It enables us to define the value of a dependent\nfunction of type {lean}`(n : Nat) → C n` at a particular input {lean}`n` in terms of all the previous values of the function,\npresented as an element of {lean}`@Nat.below C n`.\n:::\n\n:::leanFirst\nThe use of course-of-values recursion is one of the techniques the equation compiler uses to justify to\nthe Lean kernel that a function terminates. It does not affect the code generator which compiles recursive\nfunctions as other functional programming language compilers. Recall that {kw}`#eval`{lit}` ` {leanRef}`fib`{lit}` <n>` is exponential in {lit}`<n>`.\nOn the other hand, {kw}`#reduce`{lit}` `{leanRef}`fib`{lit}` <n>` is efficient because it uses the definition sent to the kernel that\nis based on the {lit}`brecOn` construction.\n\n```lean\ndef fib : Nat → Nat\n  | 0   => 1\n  | 1   => 1\n  | n+2 => fib (n+1) + fib n\n\n-- Slow:\n-- #eval fib 50\n-- Fast:\n#reduce fib 50\n\n#print fib\n```\n:::\n\n:::leanFirst\nAnother good example of a recursive definition is the list {leanRef}`append` function.\n\n```lean\ndef append : List α → List α → List α\n  | [],    bs => bs\n  | a::as, bs => a :: append as bs\n\nexample : append [1, 2, 3] [4, 5] = [1, 2, 3, 4, 5] := rfl\n```\n:::\n\nHere is another: it adds elements of the first list to elements of the second list, until one of the two lists runs out.\n\n```lean\ndef listAdd [Add α] : List α → List α → List α\n  | [],      _       => []\n  | _,       []      => []\n  | a :: as, b :: bs => (a + b) :: listAdd as bs\n\n#eval listAdd [1, 2, 3] [4, 5, 6, 6, 9, 10] -- [5, 7, 9]\n```\n\nYou are encouraged to experiment with similar examples in the exercises below.\n\n# Local recursive declarations\n%%%\ntag := \"local-recursive-declarations\"\n%%%\n\nYou can define local recursive declarations using the {kw}`let rec` keyword.\n\n```lean\ndef replicate (n : Nat) (a : α) : List α :=\n  let rec loop : Nat → List α → List α\n    | 0,   as => as\n    | n+1, as => loop n (a::as)\n  loop n []\n\n#check @replicate.loop -- @replicate.loop : {α : Type u_1} → α → Nat → List α → List α\n```\n\nLean creates an auxiliary declaration for each {leanRef}`let rec`. In the example above,\nit created the declaration {leanRef}`replicate.loop` for the {leanRef}`let rec loop` occurring at {leanRef}`replicate`.\nNote that, Lean “closes” the declaration by adding any local variable occurring in the\n{leanRef}`let rec` declaration as additional parameters. For example, the local variable {leanRef}`a` occurs\nat {leanRef}`let rec loop`.\n\n\nYou can also use {leanRef}`let rec` in tactic mode and for creating proofs by induction.\n\n```lean\ndef replicate (n : Nat) (a : α) : List α :=\n let rec loop : Nat → List α → List α\n   | 0,   as => as\n   | n+1, as => loop n (a::as)\n loop n []\n------\ntheorem length_replicate (n : Nat) (a : α) :\n    (replicate n a).length = n := by\n  let rec aux (n : Nat) (as : List α) :\n      (replicate.loop a n as).length = n + as.length := by\n    match n with\n    | 0   => simp [replicate.loop]\n    | n+1 => simp +arith [replicate.loop, aux n]\n  exact aux n []\n```\n\nYou can also introduce auxiliary recursive declarations using {kw}`where` clause after your definition.\nLean converts them into a {kw}`let rec`.\n\n```lean\ndef replicate (n : Nat) (a : α) : List α :=\n  loop n []\nwhere\n  loop : Nat → List α → List α\n    | 0,   as => as\n    | n+1, as => loop n (a::as)\n\ntheorem length_replicate (n : Nat) (a : α) :\n    (replicate n a).length = n := by\n  exact aux n []\nwhere\n  aux (n : Nat) (as : List α) :\n      (replicate.loop a n as).length = n + as.length := by\n    match n with\n    | 0   => simp [replicate.loop]\n    | n+1 => simp +arith [replicate.loop, aux n]\n```\n\n# Well-Founded Recursion and Induction\n%%%\ntag := \"well-founded-recursion-and-induction\"\n%%%\n\nWhen structural recursion cannot be used, we can prove termination using well-founded recursion.\nWe need a well-founded relation and a proof that each recursive application is decreasing with respect to\nthis relation. Dependent type theory is powerful enough to encode and justify\nwell-founded recursion. Let us start with the logical background that\nis needed to understand how it works.\n\n:::setup\n```\nvariable (α : Type u) (a : α) (r : α → α → Prop)\n```\n\nLean's standard library defines two predicates, {lean}`Acc r a` and\n{lean}`WellFounded r`, where {lean}`r` is a binary relation on a type {lean}`α`,\nand {lean}`a` is an element of type {lean}`α`.\n:::\n\n```lean\nvariable (α : Sort u)\nvariable (r : α → α → Prop)\n\n#check (Acc r : α → Prop)\n#check (WellFounded r : Prop)\n```\n\n```lean (show := false)\nvariable {α : Sort u} (x y : α)\nvariable {r : α → α → Prop}\n\nexample : Acc r x = ∀ y, r y x → Acc r y := by\n  simp only [eq_iff_iff]\n  constructor\n  . intro ⟨_, hAcc⟩\n    assumption\n  . intro h\n    constructor\n    assumption\n\ndef r' : α → α → Prop := fun x y => True\ninfix:50 \" ≺ \" => r'\nexample : y ≺ x := True.intro\nexample := WellFounded r\n```\n\n\nThe first, {leanRef}`Acc`, is an inductively defined predicate. According to\nits definition, {leanRef}`Acc r x` is equivalent to\n{leanRef}`∀ y, r y x → Acc r y`. If you think of {leanRef}`r y x` as denoting a kind of order relation\n{leanRef}`y ≺ x`, then {leanRef}`Acc r x` says that {leanRef}`x` is accessible from below,\nin the sense that all its predecessors are accessible. In particular,\nif {leanRef}`x` has no predecessors, it is accessible. Given any type {leanRef}`α`,\nwe should be able to assign a value to each accessible element of\n{leanRef}`α`, recursively, by assigning values to all its predecessors first.\n\n\n\nThe statement that {leanRef}`r` is well-founded, denoted {leanRef}`WellFounded r`,\nis exactly the statement that every element of the type is\naccessible. By the above considerations, if {leanRef}`r` is a well-founded\nrelation on a type {leanRef}`α`, we should have a principle of well-founded\nrecursion on {leanRef}`α`, with respect to the relation {leanRef}`r`. And, indeed,\nwe do: the standard library defines {name}`WellFounded.fix`, which serves\nexactly that purpose.\n\n```lean\nnoncomputable\ndef f {α : Sort u}\n    (r : α → α → Prop)\n    (h : WellFounded r)\n    (C : α → Sort v)\n    (F : (x : α) → ((y : α) → r y x → C y) → C x) :\n    (x : α) → C x :=\nWellFounded.fix h F\n```\n\nThere is a long cast of characters here, but the first block we have\nalready seen: the type, {leanRef}`α`, the relation, {leanRef}`r`, and the\nassumption, {leanRef}`h`, that {leanRef}`r` is well-founded. The variable {leanRef}`C`\nrepresents the motive of the recursive definition: for each element\n{leanRef}`x : α`, we would like to construct an element of {leanRef}`C x`. The\nfunction {leanRef}`F` provides the inductive recipe for doing that: it tells\nus how to construct an element {leanRef}`C x`, given elements of {leanRef}`C y` for\neach predecessor {leanRef}`y` of {leanRef}`x`.\n\n:::setup\n```\nvariable {x y : α} (C : α → Sort v) (r : α → α → Prop)\n\n```\n\nNote that {name}`WellFounded.fix` works equally well as an induction\nprinciple. It says that if {leanRef}`≺` is well-founded and you want to prove\n{lean}`∀ x, C x`, it suffices to show that for an arbitrary {lean}`x`, if we\nhave {lean}`∀ y, r y x → C y`, then we have {lean}`C x`.\n:::\n\nIn the example above we use the modifier {leanRef}`noncomputable` because the code\ngenerator currently does not support {name}`WellFounded.fix`. The function\n{name}`WellFounded.fix` is another tool Lean uses to justify that a function\nterminates.\n\nLean knows that the usual order {lit}`<` on the natural numbers is well\nfounded. It also knows a number of ways of constructing new well\nfounded orders from others, for example, using lexicographic order.\n\nHere is essentially the definition of division on the natural numbers that is found in the standard library.\n\n```lean\n------\nopen Nat\n\ntheorem div_lemma {x y : Nat} : 0 < y ∧ y ≤ x → x - y < x :=\n  fun h => sub_lt (Nat.lt_of_lt_of_le h.left h.right) h.left\n\ndef div.F (x : Nat) (f : (x₁ : Nat) → x₁ < x → Nat → Nat) (y : Nat) : Nat :=\n  if h : 0 < y ∧ y ≤ x then\n    f (x - y) (div_lemma h) y + 1\n  else\n    zero\n\nnoncomputable def div := WellFounded.fix (measure id).wf div.F\n\n#reduce div 8 2 -- 4\n```\n\n:::TODO\nMissing HL for example\n:::\nThe definition is somewhat inscrutable. Here the recursion is on\n{leanRef (in:=\"def div.F (x\")}`x`, and {lit}`div.F x f : Nat → Nat` returns the “divide by {leanRef}`y`”\nfunction for that fixed {leanRef (in:=\"def div.F (x\")}`x`. You have to remember that the second\nargument to {leanRef}`div.F`, the recipe for the recursion, is a function\nthat is supposed to return the divide by {leanRef}`y` function for all values\n{leanRef}`x₁` smaller than {leanRef}`x`.\n\nThe elaborator is designed to make definitions like this more\nconvenient. It accepts the following:\n\n```lean\ndef div (x y : Nat) : Nat :=\n  if h : 0 < y ∧ y ≤ x then\n    have : x - y < x := Nat.sub_lt (Nat.lt_of_lt_of_le h.1 h.2) h.1\n    div (x - y) y + 1\n  else\n    0\n```\n\nWhen Lean encounters a recursive definition, it first\ntries structural recursion, and only when that fails, does it fall\nback on well-founded recursion. Lean uses the tactic {tactic}`decreasing_tactic`\nto show that the recursive applications are smaller. The auxiliary\nproposition {leanRef}`x - y < x` in the example above should be viewed as a hint\nfor this tactic.\n\nThe defining equation for {leanRef}`div` does _not_ hold definitionally, but\nwe can unfold {leanRef}`div` using the {tactic}`unfold` tactic. We use {ref \"conv\"}[{tactic}`conv`] to select which\n{leanRef}`div` application we want to unfold.\n\n```lean\ndef div (x y : Nat) : Nat :=\n if h : 0 < y ∧ y ≤ x then\n   have : x - y < x := Nat.sub_lt (Nat.lt_of_lt_of_le h.1 h.2) h.1\n   div (x - y) y + 1\n else\n   0\n------\nexample (x y : Nat) :\n    div x y =\n    if 0 < y ∧ y ≤ x then\n      div (x - y) y + 1\n    else 0 := by\n   -- unfold occurrence in the left-hand-side of the equation:\n  conv => lhs; unfold div\n  rfl\n\nexample (x y : Nat) (h : 0 < y ∧ y ≤ x) :\n    div x y = div (x - y) y + 1 := by\n  conv => lhs; unfold div\n  simp [h]\n```\n\n:::leanFirst\nThe following example is similar: it converts any natural number to a\nbinary expression, represented as a list of 0's and 1's. We have to\nprovide evidence that the recursive call is\ndecreasing, which we do here with a {leanRef}`sorry`. The {leanRef}`sorry` does not\nprevent the interpreter from evaluating the function successfully,\nbut {leanRef}`#eval!` must be used instead of {kw}`#eval` when a term contains {leanRef}`sorry`.\n\n```lean\ndef natToBin : Nat → List Nat\n  | 0     => [0]\n  | 1     => [1]\n  | n + 2 =>\n    have : (n + 2) / 2 < n + 2 := sorry\n    natToBin ((n + 2) / 2) ++ [n % 2]\n\n#eval! natToBin 1234567\n```\n:::\n\n:::leanFirst\nAs a final example, we observe that Ackermann's function can be\ndefined directly, because it is justified by the well-foundedness of\nthe lexicographic order on the natural numbers. The {leanRef}`termination_by` clause\ninstructs Lean to use a lexicographic order. This clause is actually mapping\nthe function arguments to elements of type {lean}`Nat × Nat`. Then, Lean uses typeclass\nresolution to synthesize an element of type {lean}`WellFoundedRelation (Nat × Nat)`.\n\n```lean\ndef ack : Nat → Nat → Nat\n  | 0,   y   => y+1\n  | x+1, 0   => ack x 1\n  | x+1, y+1 => ack x (ack (x+1) y)\ntermination_by x y => (x, y)\n```\n:::\n\nIn many cases, Lean can automatically determine an appropriate lexicographical order.\nAckermann's function is one such case, so the {leanRef}`termination_by` clause is optional:\n\n```lean\ndef ack : Nat → Nat → Nat\n  | 0,   y   => y+1\n  | x+1, 0   => ack x 1\n  | x+1, y+1 => ack x (ack (x+1) y)\n```\n\n:::setup\n```\nvariable {α : Type u} {β : Type v}\n```\n\nNote that a lexicographic order is used in the example above because the instance\n{lean}`WellFoundedRelation (α × β)` uses a lexicographic order. Lean also defines the instance\n\n```lean\ninstance (priority := low) [SizeOf α] : WellFoundedRelation α :=\n  sizeOfWFRel\n```\n:::\n\n:::leanFirst\nIn the following example, we prove termination by showing that {leanRef}`as.size - i` is decreasing\nin the recursive application.\n\n```lean\ndef takeWhile (p : α → Bool) (as : Array α) : Array α :=\n  go 0 #[]\nwhere\n  go (i : Nat) (r : Array α) : Array α :=\n    if h : i < as.size then\n      let a := as[i]\n      if p a then\n        go (i+1) (r.push a)\n      else\n        r\n    else\n      r\n  termination_by as.size - i\n```\n:::\nNote that, auxiliary function {leanRef}`go` is recursive in this example, but {leanRef}`takeWhile` is not.\nOnce again, Lean can automatically recognize this pattern, so the {leanRef}`termination_by` clause is unnecessary:\n```lean\ndef takeWhile (p : α → Bool) (as : Array α) : Array α :=\n  go 0 #[]\nwhere\n  go (i : Nat) (r : Array α) : Array α :=\n    if h : i < as.size then\n      let a := as[i]\n      if p a then\n        go (i+1) (r.push a)\n      else\n        r\n    else\n      r\n```\n\n:::leanFirst\nBy default, Lean uses the tactic {tactic}`decreasing_tactic` to prove recursive applications are decreasing. The modifier {leanRef}`decreasing_by` allows us to provide our own tactic. Here is an example.\n\n```lean\ntheorem div_lemma {x y : Nat} : 0 < y ∧ y ≤ x → x - y < x :=\n  fun ⟨ypos, ylex⟩ => Nat.sub_lt (Nat.lt_of_lt_of_le ypos ylex) ypos\n\ndef div (x y : Nat) : Nat :=\n  if h : 0 < y ∧ y ≤ x then\n    div (x - y) y + 1\n  else\n    0\ndecreasing_by apply div_lemma; assumption\n```\n:::\n\nNote that {leanRef}`decreasing_by` is not replacement for {leanRef}`termination_by`, they complement each other. {leanRef}`termination_by` is used to specify a well-founded relation, and {leanRef}`decreasing_by` for providing our own tactic for showing recursive applications are decreasing. In the following example, we use both of them.\n\n```lean\ndef ack : Nat → Nat → Nat\n  | 0,   y   => y+1\n  | x+1, 0   => ack x 1\n  | x+1, y+1 => ack x (ack (x+1) y)\ntermination_by x y => (x, y)\ndecreasing_by\n   -- unfolds well-founded recursion auxiliary definitions:\n  all_goals simp_wf\n  · apply Prod.Lex.left; simp +arith\n  · apply Prod.Lex.right; simp +arith\n  · apply Prod.Lex.left; simp +arith\n```\n\n:::leanFirst\nWe can use {leanRef}`decreasing_by sorry` to instruct Lean to “trust” us that the function terminates.\n\n```lean\ndef natToBin : Nat → List Nat\n  | 0     => [0]\n  | 1     => [1]\n  | n + 2 => natToBin ((n + 2) / 2) ++ [n % 2]\ndecreasing_by sorry\n\n#eval! natToBin 1234567\n```\n:::\n\n:::leanFirst\nRecall that using {leanRef}`sorry` is equivalent to using a new axiom, and should be avoided. In the following example, we used the {leanRef}`sorry` to prove {leanRef}`False`.\nThe command {leanRef}`#print axioms unsound` shows that {leanRef}`unsound` depends on the unsound axiom {lean}`sorryAx` used to implement {leanRef}`sorry`.\n\n```lean\ndef unsound (x : Nat) : False :=\n  unsound (x + 1)\ndecreasing_by sorry\n\n#check unsound 0\n-- `unsound 0` is a proof of `False`\n\n#print axioms unsound -- 'unsound' depends on axioms: [sorryAx]\n```\n:::\n\n:::setup\n```\nvariable {α : Type w} {β  : Type u} {γ : Type v} {G : Prop}\n```\n\nSummary:\n\n- If there is no {leanRef}`termination_by`, a well-founded relation is derived (if possible) by selecting an argument and then using typeclass resolution to synthesize a well-founded relation for this argument's type.\n\n- If {leanRef}`termination_by` is specified, it maps the arguments of the function to a type {lean}`α` and type class resolution is again used. Recall that, the default instance for {lean}`β × γ` is a lexicographic order based on the well-founded relations for {lean}`β` and {lean}`γ`.\n\n- The default well-founded relation instance for {lean}`Nat` is {lean (type := \"Nat → Nat → Prop\")}`(· < ·)`.\n\n- By default, the tactic {tactic}`decreasing_tactic` is used to show that recursive applications are smaller with respect to the selected well-founded relation. If {tactic}`decreasing_tactic` fails, the error message includes the remaining goal {lit}`... |- G`. Note that, the {tactic}`decreasing_tactic` uses {tactic}`assumption`. So, you can include a {kw}`have`-expression to prove goal {lean}`G`. You can also provide your own tactic using {kw}`decreasing_by`.\n:::\n\n# Functional Induction\n%%%\ntag := \"functional-induction\"\n%%%\n\nLean generates bespoke induction principles for recursive functions. These induction principles follow the recursive structure of the function's definition, rather than the structure of the datatype. Proofs about functions typically follow the recursive structure of the function itself, so these induction principles allow statements about the function to be proved more conveniently.\n\n:::leanFirst\nFor example, using the functional induction principle for {leanRef}`ack` to prove that the result is always greater than {leanRef}`0` requires one case for each arm of the pattern match in {leanRef}`ack`:\n\n```lean\ndef ack : Nat → Nat → Nat\n  | 0,   y   => y+1\n  | x+1, 0   => ack x 1\n  | x+1, y+1 => ack x (ack (x+1) y)\n\ntheorem ack_gt_zero : ack n m > 0 := by\n  fun_induction ack with\n  | case1 y =>\n--          ^ PROOF_STATE: case1\n    simp\n  | case2 x ih =>\n--             ^ PROOF_STATE: case2\n    exact ih\n  | case3 x y ih1 ih2 =>\n--                    ^ PROOF_STATE: case3\n    simp [ack, *]\n```\n:::\n\nIn {goal case1}`case1`, the goal is:\n```proofState case1\ncase case1\ny : Nat\n⊢ y + 1 > 0\n```\nThe {leanRef}`y + 1` in the goal corresponds to the value returned in the first case of {leanRef}`ack`.\n\nIn {goal case2}`case2`, the goal is:\n```proofState case2\ncase case2\nx : Nat\nih : ack x 1 > 0\n⊢ ack x 1 > 0\n```\nThe {leanRef}`ack x 1` in the goal corresponds to the value of {leanRef}`ack` applied to the pattern variables {leanRef}`x + 1` and {leanRef}`0` returned in the second case of {leanRef}`ack`.\nThis term is automatically simplified to the right-hand side.\nHappily, the inductive hypothesis {leanRef}`ih : ack x 1 > 0` corresponds to the recursive call, which is exactly the answer returned in this case.\n\nIn {goal case3}`case3`, the goal is:\n```proofState case3\ncase case3\nx : Nat\ny : Nat\nih1 : ack (x + 1) y > 0\nih2 : ack x (ack (x + 1) y) > 0\n⊢ ack x (ack (x + 1) y) > 0\n```\nThe {leanRef}`ack x (ack (x + 1) y)` in the goal corresponds to the value returned in the third case of {leanRef}`ack`, when {leanRef}`ack` applied to {leanRef}`x + 1` and {leanRef}`y + 1` has been reduced.\nThe inductive hypotheses {leanRef}`ih1 : ack (x + 1) y > 0` and {leanRef}`ih2 : ack x (ack (x + 1) y) > 0` correspond to the recursive calls, with {leanRef}`ih1` matching the nested recursive call.\nOnce again, the induction hypothesis is suitable.\n\nUsing {leanRef}`fun_induction ack` results in goals and induction hypotheses that match the recursive structure of {leanRef}`ack`. As a result, the proof can be a single line:\n```lean\ndef ack : Nat → Nat → Nat\n  | 0,   y   => y+1\n  | x+1, 0   => ack x 1\n  | x+1, y+1 => ack x (ack (x+1) y)\n-------------\ntheorem ack_gt_zero : ack n m > 0 := by\n  fun_induction ack <;> simp [*, ack]\n```\n\n:::leanFirst\nThere is also a {leanRef}`fun_cases` tactic which is analogous to the {tactic}`cases` tactic.\nIt generates a case for each branch in a function's control flow.\nBoth it and {leanRef}`fun_induction` additionally provide assumptions that rule out the paths that were not taken.\n\nThis function {leanRef}`f` represents a five-way Boolean disjunction:\n```lean\ndef f : Bool → Bool → Bool → Bool → Bool → Bool\n  | true, _, _, _ , _ => true\n  | _, true, _, _ , _ => true\n  | _, _, true, _ , _ => true\n  | _, _, _, true, _  => true\n  | _, _, _, _, x  => x\n\n```\n\nTo prove that it is disjunction, the last case requires knowledge that none of the arguments are {leanRef}`true`.\nThis knowledge is provided by the tactic:\n```lean\ndef f : Bool → Bool → Bool → Bool → Bool → Bool\n  | true, _, _, _ , _ => true\n  | _, true, _, _ , _ => true\n  | _, _, true, _ , _ => true\n  | _, _, _, true, _  => true\n  | _, _, _, _, x  => x\n------\ntheorem f_or : f b1 b2 b3 b4 b5 = (b1 || b2 || b3 || b4 || b5) := by\n  fun_cases f\n-- ^ PROOF_STATE: fOrAll\n  all_goals sorry\n```\n:::\n\nEach case includes an assumption that rules out the prior cases:\n\n```proofState fOrAll\ncase case1\nb2 : Bool\nb3 : Bool\nb4 : Bool\nb5 : Bool\n⊢ true = (true || b2 || b3 || b4 || b5)\n\ncase case2\nb1 : Bool\nb3 : Bool\nb4 : Bool\nb5 : Bool\nx✝ : b1 = true → False\n⊢ true = (b1 || true || b3 || b4 || b5)\n\ncase case3\nb1 : Bool\nb2 : Bool\nb4 : Bool\nb5 : Bool\nx✝¹ : b1 = true → False\nx✝ : b2 = true → False\n⊢ true = (b1 || b2 || true || b4 || b5)\n\ncase case4\nb1 : Bool\nb2 : Bool\nb3 : Bool\nb5 : Bool\nx✝² : b1 = true → False\nx✝¹ : b2 = true → False\nx✝ : b3 = true → False\n⊢ true = (b1 || b2 || b3 || true || b5)\n\ncase case5\nb1 : Bool\nb2 : Bool\nb3 : Bool\nb4 : Bool\nb5 : Bool\nx✝³ : b1 = true → False\nx✝² : b2 = true → False\nx✝¹ : b3 = true → False\nx✝ : b4 = true → False\n⊢ b5 = (b1 || b2 || b3 || b4 || b5)\n```\n\n:::leanFirst\nThe {leanRef}`simp_all` tactic, which simplifies all the assumptions and the goal together, can dispatch all cases:\n```lean\ndef f : Bool → Bool → Bool → Bool → Bool → Bool\n  | true, _, _, _ , _ => true\n  | _, true, _, _ , _ => true\n  | _, _, true, _ , _ => true\n  | _, _, _, true, _  => true\n  | _, _, _, _, x  => x\n------\ntheorem f_or : f b1 b2 b3 b4 b5 = (b1 || b2 || b3 || b4 || b5) := by\n  fun_cases f <;> simp_all\n```\n:::\n\n\n# Mutual Recursion\n%%%\ntag := \"mutual-recursion\"\n%%%\n\nLean also supports mutual recursive definitions. The syntax is similar to that for mutual inductive types. Here is an example:\n\n```lean\nmutual\n  def even : Nat → Bool\n    | 0   => true\n    | n+1 => odd n\n\n  def odd : Nat → Bool\n    | 0   => false\n    | n+1 => even n\nend\n\nexample : even (a + 1) = odd a := by\n  simp [even]\n\nexample : odd (a + 1) = even a := by\n  simp [odd]\n\ntheorem even_eq_not_odd : ∀ a, even a = not (odd a) := by\n  intro a; induction a\n  . simp [even, odd]\n  . simp [even, odd, *]\n```\n\nWhat makes this a mutual definition is that {leanRef}`even` is defined recursively in terms of {leanRef}`odd`, while {leanRef}`odd` is defined recursively in terms of {leanRef}`even`. Under the hood, this is compiled as a single recursive definition. The internally defined function takes, as argument, an element of a sum type, either an input to {leanRef}`even`, or an input to {leanRef}`odd`. It then returns an output appropriate to the input. To define that function, Lean uses a suitable well-founded measure. The internals are meant to be hidden from users; the canonical way to make use of such definitions is to use {leanRef}`simp` (or {tactic}`unfold`), as we did above.\n\n:::leanFirst\nMutual recursive definitions also provide natural ways of working with mutual and nested inductive types. Recall the definition of {leanRef}`Even` and {leanRef}`Odd` as mutual inductive predicates as presented before.\n\n```lean\nmutual\n  inductive Even : Nat → Prop where\n    | even_zero : Even 0\n    | even_succ : ∀ n, Odd n → Even (n + 1)\n\n  inductive Odd : Nat → Prop where\n    | odd_succ : ∀ n, Even n → Odd (n + 1)\nend\n```\n:::\n\n:::leanFirst\nThe constructors, {leanRef}`even_zero`, {leanRef}`even_succ`, and {leanRef}`odd_succ` provide positive means for showing that a number is even or odd. We need to use the fact that the inductive type is generated by these constructors to know that zero is not odd, and that the latter two implications reverse. As usual, the constructors are kept in a namespace that is named after the type being defined, and the command {leanRef}`open Even Odd` allows us to access them more conveniently.\n\n```lean\nmutual\n inductive Even : Nat → Prop where\n   | even_zero : Even 0\n   | even_succ : ∀ n, Odd n → Even (n + 1)\n inductive Odd : Nat → Prop where\n   | odd_succ : ∀ n, Even n → Odd (n + 1)\nend\n------\nopen Even Odd\n\ntheorem not_odd_zero : ¬ Odd 0 :=\n  fun h => nomatch h\n\ntheorem even_of_odd_succ : ∀ n, Odd (n + 1) → Even n\n  | _, odd_succ n h => h\n\ntheorem odd_of_even_succ : ∀ n, Even (n + 1) → Odd n\n  | _, even_succ n h => h\n```\n:::\n\nFor another example, suppose we use a nested inductive type to define a set of terms inductively, so that a term is either a constant (with a name given by a string), or the result of applying a constant to a list of constants.\n\n```lean\ninductive Term where\n  | const : String → Term\n  | app   : String → List Term → Term\n```\n\nWe can then use a mutual recursive definition to count the number of constants occurring in a term, as well as the number occurring in a list of terms.\n\n```lean\ninductive Term where\n | const : String → Term\n | app   : String → List Term → Term\n------\nnamespace Term\n\nmutual\n  def numConsts : Term → Nat\n    | const _ => 1\n    | app _ cs => numConstsLst cs\n\n  def numConstsLst : List Term → Nat\n    | [] => 0\n    | c :: cs => numConsts c + numConstsLst cs\nend\n\ndef sample := app \"f\" [app \"g\" [const \"x\"], const \"y\"]\n\n#eval numConsts sample\n\nend Term\n```\n\n:::leanFirst\nAs a final example, we define a function {leanRef}`replaceConst a b e` that replaces a constant {leanRef (in := \"replaceConst a b e\")}`a` with {leanRef (in := \"replaceConst a b e\")}`b` in a term {leanRef (in := \"replaceConst a b e\")}`e`, and then prove the number of constants is the same. Note that, our proof uses mutual recursion (aka induction).\n\n```lean\ninductive Term where\n | const : String → Term\n | app   : String → List Term → Term\nnamespace Term\nmutual\n def numConsts : Term → Nat\n   | const _ => 1\n   | app _ cs => numConstsLst cs\n  def numConstsLst : List Term → Nat\n   | [] => 0\n   | c :: cs => numConsts c + numConstsLst cs\nend\n------\nmutual\n  def replaceConst (a b : String) : Term → Term\n    | const c => if a == c then const b else const c\n    | app f cs => app f (replaceConstLst a b cs)\n\n  def replaceConstLst (a b : String) : List Term → List Term\n    | [] => []\n    | c :: cs => replaceConst a b c :: replaceConstLst a b cs\nend\n\nmutual\n  theorem numConsts_replaceConst (a b : String) (e : Term) :\n      numConsts (replaceConst a b e) = numConsts e := by\n    match e with\n    | const c =>\n      simp [replaceConst]; split <;> simp [numConsts]\n    | app f cs =>\n      simp [replaceConst, numConsts, numConsts_replaceConstLst a b cs]\n\n  theorem numConsts_replaceConstLst (a b : String) (es : List Term) :\n      numConstsLst (replaceConstLst a b es) = numConstsLst es := by\n    match es with\n    | [] => simp [replaceConstLst, numConstsLst]\n    | c :: cs =>\n      simp [replaceConstLst, numConstsLst, numConsts_replaceConst a b c,\n            numConsts_replaceConstLst a b cs]\nend\n```\n:::\n\n# Dependent Pattern Matching\n%%%\ntag := \"dependent-pattern-matching\"\n%%%\n\n\n::::setup\n```\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\n\ndef map (f : α → β) : Vect α n → Vect β n\n  | .nil => .nil\n  | .cons x xs => .cons (f x) (map f xs)\n\ndef zip : Vect α n → Vect β n → Vect (α × β) n\n  | .nil, .nil => .nil\n  | .cons x xs, .cons y ys => .cons (x, y) (zip xs ys)\n\ndef unzip : Vect (α × β) n → (Vect α n × Vect β n)\n  | .nil => (.nil, .nil)\n  | .cons (x, y) xys =>\n    let (xs, ys) := unzip xys\n    (.cons x xs, .cons y ys)\n\ndef tail : Vect α (n + 1) → Vect α n\n  | .cons x xs => xs\n\nvariable {v : Vect α (n + 1)}\nopen Vect\n```\n\n:::leanFirst\nAll the examples of pattern matching we considered in the section on\n{ref \"pattern-matching\"}[pattern matching] can easily be written using {lit}`casesOn`\nand {lit}`recOn`. However, this is often not the case with indexed\ninductive families such as {leanRef}`Vect α n`, since case splits impose\nconstraints on the values of the indices. Without the equation\ncompiler, we would need a lot of boilerplate code to define very\nsimple functions such as {lean}`map`, {lean}`zip`, and {lean}`unzip` using\nrecursors. To understand the difficulty, consider what it would take\nto define a function {lean}`tail` which takes a vector\n{lean}`v : Vect α (n + 1)` and deletes the first element.\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n + 1)\n```\n:::\n\n\n\nA first thought might be to use the {name}`Vect.casesOn` function:\n\n```signature\nVect.casesOn.{u, v}\n  {α : Type v} {motive : (a : Nat) → Vect α a → Sort u}\n  {a : Nat}\n  (t : Vect α a)\n  (nil : motive 0 nil)\n  (cons : (a : α) → {n : Nat} → (a_1 : Vect α n) →\n    motive (n + 1) (cons a a_1)) :\n  motive a t\n```\n\n\nBut what value should we return in the {name}`nil` case? Something funny\nis going on: if {lean}`v` has type {lean}`Vect α (n + 1)`, it _can't_ be\n{name}`nil`, but it is not clear how to tell that to {name}`Vect.casesOn`.\n\n::::\n\nOne solution is to define an auxiliary function:\n\n```lean\nset_option linter.unusedVariables false\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef tailAux (v : Vect α m) : m = n + 1 → Vect α n :=\n  Vect.casesOn (motive := fun x _ => x = n + 1 → Vect α n) v\n    (fun h : 0 = n + 1 => Nat.noConfusion h)\n    (fun (a : α) (m : Nat) (as : Vect α m) =>\n     fun (h : m + 1 = n + 1) =>\n       Nat.noConfusion h (fun h1 : m = n => h1 ▸ as))\n\ndef tail (v : Vect α (n+1)) : Vect α n :=\n  tailAux v rfl\n-----\nend Vect\n```\n\nIn the {leanRef}`nil` case, {leanRef (in := \"m = n + 1\")}`m` is instantiated to {leanRef}`0`, and\n{leanRef}`Nat.noConfusion` makes use of the fact that {leanRef}`0 = n + 1` cannot\noccur.  Otherwise, {leanRef}`v` is of the form {lit}`cons `{leanRef}`a`{lit}` `{leanRef}`as`, and we can simply\nreturn {leanRef}`as`, after casting it from a vector of length {leanRef (in := \"m + 1 = n + 1\")}`m` to a\nvector of length {leanRef (in := \"m + 1= n + 1\")}`n`.\n\nThe difficulty in defining {leanRef}`tail` is to maintain the relationships between the indices.\nThe hypothesis {leanRef}`m = n + 1` in {leanRef}`tailAux` is used to communicate the relationship\nbetween {leanRef (in:=\"m = n + 1\")}`n` and the index associated with the minor premise.\nMoreover, the {leanRef}`0 = n + 1` case is unreachable, and the canonical way to discard such\na case is to use {leanRef}`Nat.noConfusion`.\n\n:::leanFirst\nThe {leanRef}`tail` function is, however, easy to define using recursive\nequations, and the equation compiler generates all the boilerplate\ncode automatically for us. Here are a number of similar examples:\n\n```lean\nset_option linter.unusedVariables false\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef head : {n : Nat} → Vect α (n+1) → α\n  | n, cons a as => a\n\ndef tail : {n : Nat} → Vect α (n+1) → Vect α n\n  | n, cons a as => as\n\ntheorem eta : ∀ {n : Nat} (v : Vect α (n+1)), cons (head v) (tail v) = v\n  | n, cons a as => rfl\n\ndef map (f : α → β → γ) : {n : Nat} → Vect α n → Vect β n → Vect γ n\n  | 0,   nil,       nil       => nil\n  | n+1, cons a as, cons b bs => cons (f a b) (map f as bs)\n\ndef zip : {n : Nat} → Vect α n → Vect β n → Vect (α × β) n\n  | 0,   nil,       nil       => nil\n  | n+1, cons a as, cons b bs => cons (a, b) (zip as bs)\n------\nend Vect\n```\n:::\n\nNote that we can omit recursive equations for “unreachable” cases such\nas {leanRef}`head`{lit}` `{leanRef}`nil`. The automatically generated definitions for indexed\nfamilies are far from straightforward. For example:\n\n```lean\nset_option linter.unusedVariables false\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n-------\ndef zipWith (f : α → β → γ) : {n : Nat} → Vect α n → Vect β n → Vect γ n\n  | 0,   nil,       nil       => nil\n  | n+1, cons a as, cons b bs => cons (f a b) (zipWith f as bs)\n\n#print zipWith\n#print zipWith.match_1\n------\nend Vect\n```\n\n:::setup\n```\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\n```\n\nThe {leanRef}`zipWith` function is even more tedious to define by hand than the\n{leanRef}`tail` function. We encourage you to try it, using {name}`Vect.recOn`,\n{name}`Vect.casesOn` and {name}`Vect.noConfusion`.\n:::\n\n# Inaccessible Patterns\n%%%\ntag := \"inaccessible-patterns\"\n%%%\n\nSometimes an argument in a dependent matching pattern is not essential\nto the definition, but nonetheless has to be included to specialize\nthe type of the expression appropriately. Lean allows users to mark\nsuch subterms as _inaccessible_ for pattern matching. These\nannotations are essential, for example, when a term occurring in the\nleft-hand side is neither a variable nor a constructor application,\nbecause these are not suitable targets for pattern matching. We can\nview such inaccessible patterns as “don't care” components of the\npatterns. You can declare a subterm inaccessible by writing\n{lit}`.(t)`. If the inaccessible pattern can be inferred, you can also write\n{lit}`_`.\n\n:::leanFirst\nThe following example, we declare an inductive type that defines the\nproperty of “being in the image of {leanRef (in := \"(f :\")}`f`”. You can view an element of\nthe type {leanRef}`ImageOf f b` as evidence that {leanRef (in := \"ImageOf f b\")}`b` is in the image of\n{leanRef (in := \"ImageOf f b\")}`f`, whereby the constructor {leanRef}`imf` is used to build such\nevidence. We can then define any function {leanRef (in := \"inverse {f\")}`f` with an “inverse”\nwhich takes anything in the image of {leanRef (in := \"inverse {f\")}`f` to an element that is\nmapped to it. The typing rules forces us to write {leanRef (in := \".(f a)\")}`f a` for the\nfirst argument, but this term is neither a variable nor a constructor\napplication, and plays no role in the pattern-matching definition. To\ndefine the function {leanRef}`inverse` below, we _have to_ mark {leanRef (in := \".(f a)\")}`f a`\ninaccessible.\n\n```lean\ninductive ImageOf {α β : Type u} (f : α → β) : β → Type u where\n  | imf : (a : α) → ImageOf f (f a)\n\nopen ImageOf\n\ndef inverse {f : α → β} : (b : β) → ImageOf f b → α\n  | .(f a), imf a => a\n\ndef inverse' {f : α → β} : (b : β) → ImageOf f b → α\n  | _, imf a => a\n```\n:::\n\nIn the example above, the inaccessible annotation makes it clear that\n{leanRef (in := \".(f a)\")}`f` is _not_ a pattern matching variable.\n\n:::leanFirst\nInaccessible patterns can be used to clarify and control definitions that\nmake use of dependent pattern matching. Consider the following\ndefinition of the function {leanRef}`Vect.add`, which adds two vectors of\nelements of a type, assuming that type has an associated addition\nfunction:\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\n\ndef Vect.add [Add α] : {n : Nat} → Vect α n → Vect α n → Vect α n\n  | 0,   nil,       nil       => nil\n  | n+1, cons a as, cons b bs => cons (a + b) (add as bs)\n```\n:::\n\nThe argument {leanRef}`{n : Nat}` appear after the colon, because it cannot\nbe held fixed throughout the definition.  When implementing this\ndefinition, the equation compiler starts with a case distinction as to\nwhether the first argument is {leanRef}`0` or of the form {leanRef}`n+1`.  This is\nfollowed by nested case splits on the next two arguments, and in each\ncase the equation compiler rules out the cases are not compatible with\nthe first pattern.\n\nBut, in fact, a case split is not required on the first argument; the\n{lit}`casesOn` eliminator for {leanRef}`Vect` automatically abstracts this\nargument and replaces it by {leanRef}`0` and {leanRef}`n + 1` when we do a case\nsplit on the second argument. Using inaccessible patterns, we can prompt\nthe equation compiler to avoid the case split on {leanRef}`n`.\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef add [Add α] : {n : Nat} → Vect α n → Vect α n → Vect α n\n  | .(_), nil,       nil       => nil\n  | .(_), cons a as, cons b bs => cons (a + b) (add as bs)\n-------\nend Vect\n```\n\nMarking the position as an inaccessible pattern tells the\nequation compiler first, that the form of the argument should be\ninferred from the constraints posed by the other arguments, and,\nsecond, that the first argument should _not_ participate in pattern\nmatching.\n\nThe inaccessible pattern {leanRef}`.(_)` can be written as {lit}`_` for convenience.\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef add [Add α] : {n : Nat} → Vect α n → Vect α n → Vect α n\n  | _, nil,       nil       => nil\n  | _, cons a as, cons b bs => cons (a + b) (add as bs)\n-------\nend Vect\n```\n\nAs we mentioned above, the argument {leanRef}`{n : Nat}` is part of the\npattern matching, because it cannot be held fixed throughout the\ndefinition. Rather than requiring that these discriminants be provided explicitly, Lean implicitly includes\nthese extra discriminants automatically for us.\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef add [Add α] {n : Nat} : Vect α n → Vect α n → Vect α n\n  | nil,       nil       => nil\n  | cons a as, cons b bs => cons (a + b) (add as bs)\n-------\nend Vect\n```\n\nWhen combined with the _auto bound implicits_ feature, you can simplify\nthe declare further and write:\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef add [Add α] : Vect α n → Vect α n → Vect α n\n  | nil,       nil       => nil\n  | cons a as, cons b bs => cons (a + b) (add as bs)\n-------\nend Vect\n```\n\nUsing these new features, you can write the other vector functions defined\nin the previous sections more compactly as follows:\n\n```lean\nset_option linter.unusedVariables false\ninductive Vect (α : Type u) : Nat → Type u\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n+1)\nnamespace Vect\n------\ndef head : Vect α (n+1) → α\n  | cons a as => a\n\ndef tail : Vect α (n+1) → Vect α n\n  | cons a as => as\n\ntheorem eta : (v : Vect α (n+1)) → cons (head v) (tail v) = v\n  | cons a as => rfl\n\ndef map (f : α → β → γ) : Vect α n → Vect β n → Vect γ n\n  | nil,       nil       => nil\n  | cons a as, cons b bs => cons (f a b) (map f as bs)\n\ndef zip : Vect α n → Vect β n → Vect (α × β) n\n  | nil,       nil       => nil\n  | cons a as, cons b bs => cons (a, b) (zip as bs)\n-------\nend Vect\n```\n\n# Match Expressions\n%%%\ntag := \"match-expressions\"\n%%%\n\nLean also provides a compiler for {kw}`match`-{kw}`with` expressions found in\nmany functional languages:\n\n```lean\nset_option linter.unusedVariables false\n------\ndef isNotZero (m : Nat) : Bool :=\n  match m with\n  | 0     => false\n  | n + 1 => true\n```\n\nThis does not look very different from an ordinary pattern matching\ndefinition, but the point is that a {kw}`match` can be used anywhere in\nan expression, and with arbitrary arguments.\n\n```lean\nset_option linter.unusedVariables false\n-------\ndef isNotZero (m : Nat) : Bool :=\n  match m with\n  | 0     => false\n  | n + 1 => true\n\ndef filter (p : α → Bool) : List α → List α\n  | []      => []\n  | a :: as =>\n    match p a with\n    | true => a :: filter p as\n    | false => filter p as\n\nexample : filter isNotZero [1, 0, 0, 3, 0] = [1, 3] := rfl\n```\n\nHere is another example:\n\n```lean\ndef foo (n : Nat) (b c : Bool) :=\n  5 + match n - 5, b && c with\n      | 0,     true  => 0\n      | m + 1, true  => m + 7\n      | 0,     false => 5\n      | m + 1, false => m + 3\n\n#eval foo 7 true false\n\nexample : foo 7 true false = 9 := rfl\n```\n\nLean uses the {kw}`match` construct internally to implement pattern-matching in all parts of the system.\nThus, all four of these definitions have the same net effect:\n\n```lean\ndef bar₁ : Nat × Nat → Nat\n  | (m, n) => m + n\n\ndef bar₂ (p : Nat × Nat) : Nat :=\n  match p with\n  | (m, n) => m + n\n\ndef bar₃ : Nat × Nat → Nat :=\n  fun (m, n) => m + n\n\ndef bar₄ (p : Nat × Nat) : Nat :=\n  let (m, n) := p; m + n\n```\n\nThese variations are equally useful for destructing propositions:\n\n```lean\nvariable (p q : Nat → Prop)\n\nexample : (∃ x, p x) → (∃ y, q y) → ∃ x y, p x ∧ q y\n  | ⟨x, px⟩, ⟨y, qy⟩ => ⟨x, y, px, qy⟩\n\nexample (h₀ : ∃ x, p x) (h₁ : ∃ y, q y)\n        : ∃ x y, p x ∧ q y :=\n  match h₀, h₁ with\n  | ⟨x, px⟩, ⟨y, qy⟩ => ⟨x, y, px, qy⟩\n\nexample : (∃ x, p x) → (∃ y, q y) → ∃ x y, p x ∧ q y :=\n  fun ⟨x, px⟩ ⟨y, qy⟩ => ⟨x, y, px, qy⟩\n\nexample (h₀ : ∃ x, p x) (h₁ : ∃ y, q y)\n        : ∃ x y, p x ∧ q y :=\n  let ⟨x, px⟩ := h₀\n  let ⟨y, qy⟩ := h₁\n  ⟨x, y, px, qy⟩\n```\n\n\n# Exercises\n%%%\ntag := none\n%%%\n\n```setup\n\nopen List\n\nvariable {xs : List α} {n : Nat}\n\n```\n\n1. Open a namespace {lit}`Hidden` to avoid naming conflicts, and use the\n   equation compiler to define addition, multiplication, and\n   exponentiation on the natural numbers. Then use the equation\n   compiler to derive some of their basic properties.\n\n2. Similarly, use the equation compiler to define some basic\n   operations on lists (like the {lean}`reverse` function) and prove\n   theorems about lists by induction (such as the fact that\n   {lean}`reverse (reverse xs) = xs` for any list {lean}`xs`).\n\n3. Define your own function to carry out course-of-value recursion on\n   the natural numbers. Similarly, see if you can figure out how to\n   define {name}`WellFounded.fix` on your own.\n\n4. Following the examples in the section on {ref \"dependent-pattern-matching\"}[dependent pattern matching],\n   define a function that will append two vectors.\n   This is tricky; you will have to define an auxiliary function.\n\n5.  :::leanFirst\n\n    Consider the following type of arithmetic expressions. The idea is\n    that {leanRef}`var`{lit}` `{lean}`n` is a variable, {lit}`vₙ`, and {leanRef}`const`{lit}` `{lean}`n` is the\n    constant whose value is {lean}`n`.\n\n    ```lean\n    inductive Expr where\n      | const : Nat → Expr\n      | var : Nat → Expr\n      | plus : Expr → Expr → Expr\n      | times : Expr → Expr → Expr\n    deriving Repr\n\n    open Expr\n\n    def sampleExpr : Expr :=\n      plus (times (var 0) (const 7)) (times (const 2) (var 1))\n    ```\n    :::\n\n    Here {leanRef}`sampleExpr` represents {lit}`(v₀ * 7) + (2 * v₁)`.\n\n    :::leanFirst\n    Write a function that evaluates such an expression, evaluating each {leanRef}`var n` to {leanRef}`v n`.\n\n    ```lean\n    inductive Expr where\n      | const : Nat → Expr\n      | var : Nat → Expr\n      | plus : Expr → Expr → Expr\n      | times : Expr → Expr → Expr\n      deriving Repr\n    open Expr\n    def sampleExpr : Expr :=\n      plus (times (var 0) (const 7)) (times (const 2) (var 1))\n    ------\n    def eval (v : Nat → Nat) : Expr → Nat\n      | const n     => sorry\n      | var n       => v n\n      | plus e₁ e₂  => sorry\n      | times e₁ e₂ => sorry\n\n    def sampleVal : Nat → Nat\n      | 0 => 5\n      | 1 => 6\n      | _ => 0\n\n    -- Try it out. You should get 47 here.\n    -- #eval eval sampleVal sampleExpr\n    ```\n    :::\n\n    :::leanFirst\n    Implement “constant fusion,” a procedure that simplifies subterms like\n    {lean}`5 + 7` to {lean}`12`. Using the auxiliary function {leanRef}`simpConst`,\n    define a function “fuse”: to simplify a plus or a times, first\n    simplify the arguments recursively, and then apply {leanRef}`simpConst` to\n    try to simplify the result.\n\n    ```lean\n    inductive Expr where\n      | const : Nat → Expr\n      | var : Nat → Expr\n      | plus : Expr → Expr → Expr\n      | times : Expr → Expr → Expr\n      deriving Repr\n    open Expr\n    def eval (v : Nat → Nat) : Expr → Nat\n      | const n     => sorry\n      | var n       => v n\n      | plus e₁ e₂  => sorry\n      | times e₁ e₂ => sorry\n    ------\n    def simpConst : Expr → Expr\n      | plus (const n₁) (const n₂)  => const (n₁ + n₂)\n      | times (const n₁) (const n₂) => const (n₁ * n₂)\n      | e                           => e\n\n    def fuse : Expr → Expr := sorry\n\n    theorem simpConst_eq (v : Nat → Nat)\n            : ∀ e : Expr, eval v (simpConst e) = eval v e :=\n      sorry\n\n    theorem fuse_eq (v : Nat → Nat)\n            : ∀ e : Expr, eval v (fuse e) = eval v e :=\n      sorry\n    ```\n    :::\n\n    The last two theorems show that the definitions preserve the value.\n"
  },
  {
    "path": "book/TPiL/InductiveTypes.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre\nopen Verso.Genre.Manual hiding tactic\nopen TPiL\n\n#doc (Manual) \"Inductive Types\" =>\n%%%\ntag := \"inductive-types\"\n%%%\n\n:::setup\n```\nvariable {α : Sort u} {β : Sort v}\n```\n\n\nWe have seen that Lean's formal foundation includes basic types,\n{lean}`Prop`, {lean}`Type 0`, {lean}`Type 1`, {lean}`Type 2`, ..., and allows for the formation of\ndependent function types, {lean}`(x : α) → β`. In the examples, we have\nalso made use of additional types like {lean}`Bool`, {lean}`Nat`, and {lean}`Int`,\nand type constructors, like {lean}`List`, and product, {lit}`×`. In fact, in\nLean's library, every concrete type other than the universes and every\ntype constructor other than dependent arrows is an instance of a general family of\ntype constructions known as _inductive types_. It is remarkable that\nit is possible to construct a substantial edifice of mathematics based\non nothing more than the type universes, dependent arrow types, and inductive\ntypes; everything else follows from those.\n:::\n\nIntuitively, an inductive type is built up from a specified list of\nconstructors. In Lean, the syntax for specifying such a type is as\nfollows:\n\n:::setup\n```\nvariable {α β ω : Type}\n\ninductive Foo where\n  | constructor₁ : α → Foo\n  | constructor₂ : β → Foo\n  | constructorₙ : ω → Foo\n\n```\n\n```\ninductive Foo where\n  | constructor₁ : ... → Foo\n  | constructor₂ : ... → Foo\n  ...\n  | constructorₙ : ... → Foo\n```\n\nThe intuition is that each constructor specifies a way of building new\nobjects of {lean}`Foo`, possibly from previously constructed values. The\ntype {lean}`Foo` consists of nothing more than the objects that are\nconstructed in this way.\n\n\n\nWe will see below that the arguments of the constructors can include\nobjects of type {lean}`Foo`, subject to a certain “positivity” constraint,\nwhich guarantees that elements of {lean}`Foo` are built from the bottom\nup. Roughly speaking, each {lit}`...` can be any arrow type constructed from\n{lean}`Foo` and previously defined types, in which {lean}`Foo` appears, if at\nall, only as the “target” of the dependent arrow type.\n:::\n\nWe will provide a number of examples of inductive types. We will also\nconsider slight generalizations of the scheme above, to mutually\ndefined inductive types, and so-called _inductive families_.\n\nAs with the logical connectives, every inductive type comes with\nintroduction rules, which show how to construct an element of the\ntype, and elimination rules, which show how to “use” an element of the\ntype in another construction. The analogy to the logical connectives\nshould not come as a surprise; as we will see below, they, too, are\nexamples of inductive type constructions. You have already seen the\nintroduction rules for an inductive type: they are just the\nconstructors that are specified in the definition of the type. The\nelimination rules provide for a principle of recursion on the type,\nwhich includes, as a special case, a principle of induction as well.\n\nIn the next chapter, we will describe Lean's function definition\npackage, which provides even more convenient ways to define functions\non inductive types and carry out inductive proofs. But because the\nnotion of an inductive type is so fundamental, we feel it is important\nto start with a low-level, hands-on understanding. We will start with\nsome basic examples of inductive types, and work our way up to more\nelaborate and complex examples.\n\n# Enumerated Types\n%%%\ntag := \"enumerated-types\"\n%%%\n\nThe simplest kind of inductive type is a type with a finite, enumerated list of elements.\n\n```lean\ninductive Weekday where\n  | sunday : Weekday\n  | monday : Weekday\n  | tuesday : Weekday\n  | wednesday : Weekday\n  | thursday : Weekday\n  | friday : Weekday\n  | saturday : Weekday\n```\n\nThe {kw}`inductive` command creates a new type, {leanRef}`Weekday`. The\nconstructors all live in the {lit}`Weekday` namespace.\n\n```lean\ninductive Weekday where\n | sunday : Weekday\n | monday : Weekday\n | tuesday : Weekday\n | wednesday : Weekday\n | thursday : Weekday\n | friday : Weekday\n | saturday : Weekday\n------\n#check Weekday.sunday\n\n#check Weekday.monday\n\nopen Weekday\n\n#check sunday\n\n#check monday\n```\n\nYou can omit {leanRef}`: Weekday` when declaring the {leanRef}`Weekday` inductive type.\n\n```lean\ninductive Weekday where\n  | sunday\n  | monday\n  | tuesday\n  | wednesday\n  | thursday\n  | friday\n  | saturday\n```\n\n:::setup\n```\ninductive Weekday where\n  | sunday\n  | monday\n  | tuesday\n  | wednesday\n  | thursday\n  | friday\n  | saturday\n```\n\nThink of {leanRef}`sunday`, {leanRef}`monday`, ... , {leanRef}`saturday` as\nbeing distinct elements of {leanRef}`Weekday`, with no other distinguishing\nproperties. The elimination principle, {name}`Weekday.rec`, is defined\nalong with the type {leanRef}`Weekday` and its constructors. It is also known\nas a _recursor_, and it is what makes the type “inductive”: it allows\nus to define a function on {leanRef}`Weekday` by assigning values\ncorresponding to each constructor. The intuition is that an inductive\ntype is exhaustively generated by the constructors, and has no\nelements beyond those they construct.\n\n```signature\nWeekday.rec.{u} {motive : Weekday → Sort u}\n  (sunday : motive Weekday.sunday)\n  (monday : motive Weekday.monday)\n  (tuesday : motive Weekday.tuesday)\n  (wednesday : motive Weekday.wednesday)\n  (thursday : motive Weekday.thursday)\n  (friday : motive Weekday.friday)\n  (saturday : motive Weekday.saturday)\n  (t : Weekday) :\n  motive t\n```\n\n:::\n\n:::leanFirst\nWe will use the {kw}`match` expression to define a function from {leanRef}`Weekday`\nto the natural numbers:\n\n```lean\ninductive Weekday where\n | sunday : Weekday\n | monday : Weekday\n | tuesday : Weekday\n | wednesday : Weekday\n | thursday : Weekday\n | friday : Weekday\n | saturday : Weekday\n------\nopen Weekday\n\ndef numberOfDay (d : Weekday) : Nat :=\n  match d with\n  | sunday    => 1\n  | monday    => 2\n  | tuesday   => 3\n  | wednesday => 4\n  | thursday  => 5\n  | friday    => 6\n  | saturday  => 7\n\n#eval numberOfDay Weekday.sunday  -- 1\n\n#eval numberOfDay Weekday.monday  -- 2\n\n#eval numberOfDay Weekday.tuesday -- 3\n```\n\nWhen using Lean's logic, the {kw}`match` expression is compiled using the _recursor_ {leanRef}`Weekday.rec` generated when\nyou declare the inductive type. This ensures that the resulting term is well-defined in the type theory. For compiled code,\n{kw}`match` is compiled as in other functional programming languages.\n:::\n\n```lean\ninductive Weekday where\n | sunday : Weekday\n | monday : Weekday\n | tuesday : Weekday\n | wednesday : Weekday\n | thursday : Weekday\n | friday : Weekday\n | saturday : Weekday\n------\nopen Weekday\n\ndef numberOfDay (d : Weekday) : Nat :=\n  match d with\n  | sunday    => 1\n  | monday    => 2\n  | tuesday   => 3\n  | wednesday => 4\n  | thursday  => 5\n  | friday    => 6\n  | saturday  => 7\n\nset_option pp.all true\n#print numberOfDay\n\n#print numberOfDay.match_1\n\n#print Weekday.casesOn\n\n#check @Weekday.rec\n```\n\n:::leanFirst\nWhen declaring an inductive datatype, you can use {leanRef}`deriving Repr` to instruct\nLean to generate a function that converts {leanRef}`Weekday` objects into text.\nThis function is used by the {kw}`#eval` command to display {leanRef}`Weekday` objects.\nIf no {lean}`Repr` exists, {kw}`#eval` attempts to derive one on the spot.\n\n```lean\ninductive Weekday where\n  | sunday\n  | monday\n  | tuesday\n  | wednesday\n  | thursday\n  | friday\n  | saturday\nderiving Repr\n\nopen Weekday\n\n#eval tuesday   -- Weekday.tuesday\n```\n:::\n\nIt is often useful to group definitions and theorems related to a\nstructure in a namespace with the same name. For example, we can put\nthe {leanRef}`numberOfDay` function in the {lit}`Weekday` namespace. We are\nthen allowed to use the shorter name when we open the namespace.\n\n:::leanFirst\nWe can define functions from {leanRef}`Weekday` to {leanRef}`Weekday`:\n\n```lean\ninductive Weekday where\n | sunday : Weekday\n | monday : Weekday\n | tuesday : Weekday\n | wednesday : Weekday\n | thursday : Weekday\n | friday : Weekday\n | saturday : Weekday\n deriving Repr\n------\nnamespace Weekday\ndef next (d : Weekday) : Weekday :=\n  match d with\n  | sunday    => monday\n  | monday    => tuesday\n  | tuesday   => wednesday\n  | wednesday => thursday\n  | thursday  => friday\n  | friday    => saturday\n  | saturday  => sunday\n\ndef previous (d : Weekday) : Weekday :=\n  match d with\n  | sunday    => saturday\n  | monday    => sunday\n  | tuesday   => monday\n  | wednesday => tuesday\n  | thursday  => wednesday\n  | friday    => thursday\n  | saturday  => friday\n\n#eval next (next tuesday)      -- Weekday.thursday\n\n#eval next (previous tuesday)  -- Weekday.tuesday\n\nexample : next (previous tuesday) = tuesday :=\n  rfl\n\nend Weekday\n```\n:::\n\n:::leanFirst\nHow can we prove the general theorem that {leanRef}`next (previous d) = d`\nfor any Weekday {leanRef}`d`? You can use {kw}`match` to provide a proof of the claim for each\nconstructor:\n\n```lean\ninductive Weekday where\n | sunday : Weekday\n | monday : Weekday\n | tuesday : Weekday\n | wednesday : Weekday\n | thursday : Weekday\n | friday : Weekday\n | saturday : Weekday\n deriving Repr\nnamespace Weekday\ndef next (d : Weekday) : Weekday :=\n match d with\n | sunday    => monday\n | monday    => tuesday\n | tuesday   => wednesday\n | wednesday => thursday\n | thursday  => friday\n | friday    => saturday\n | saturday  => sunday\ndef previous (d : Weekday) : Weekday :=\n match d with\n | sunday    => saturday\n | monday    => sunday\n | tuesday   => monday\n | wednesday => tuesday\n | thursday  => wednesday\n | friday    => thursday\n | saturday  => friday\n------\ntheorem next_previous (d : Weekday) : next (previous d) = d :=\n  match d with\n  | sunday    => rfl\n  | monday    => rfl\n  | tuesday   => rfl\n  | wednesday => rfl\n  | thursday  => rfl\n  | friday    => rfl\n  | saturday  => rfl\n```\n:::\n\nUsing a tactic proof, we can be even more concise:\n\n```lean\ninductive Weekday where\n | sunday : Weekday\n | monday : Weekday\n | tuesday : Weekday\n | wednesday : Weekday\n | thursday : Weekday\n | friday : Weekday\n | saturday : Weekday\n deriving Repr\nnamespace Weekday\ndef next (d : Weekday) : Weekday :=\n match d with\n | sunday    => monday\n | monday    => tuesday\n | tuesday   => wednesday\n | wednesday => thursday\n | thursday  => friday\n | friday    => saturday\n | saturday  => sunday\ndef previous (d : Weekday) : Weekday :=\n match d with\n | sunday    => saturday\n | monday    => sunday\n | tuesday   => monday\n | wednesday => tuesday\n | thursday  => wednesday\n | friday    => thursday\n | saturday  => friday\n------\ntheorem next_previous (d : Weekday) : next (previous d) = d := by\n  cases d <;> rfl\n```\n\n{ref \"tactics-for-inductive-types\"}[Tactics for Inductive Types] below will introduce additional\ntactics that are specifically designed to make use of inductive types.\n\nNotice that, under the {tech}[propositions-as-types] correspondence, we can\nuse {kw}`match` to prove theorems as well as define functions.  In other\nwords, under the {tech}[propositions-as-types] correspondence, the proof by\ncases is a kind of definition by cases, where what is being “defined”\nis a proof instead of a piece of data.\n\nThe {lean}`Bool` type in the Lean library is an instance of\nenumerated type.\n\n```lean\nnamespace Hidden\n------\ninductive Bool where\n  | false : Bool\n  | true  : Bool\n------\nend Hidden\n```\n\n(To run these examples, we put them in a namespace called {lit}`Hidden`,\nso that a name like {leanRef}`Bool` does not conflict with the {lean}`Bool` in\nthe standard library. This is necessary because these types are part\nof the Lean “prelude” that is automatically imported when the system\nis started.)\n\n\nAs an exercise, you should think about what the introduction and\nelimination rules for these types do. As a further exercise, we\nsuggest defining boolean operations {lean}`and`, {lean}`or`, {lean}`not` on the\n{leanRef}`Bool` type, and verifying common identities. Note that you can define a\nbinary operation like {leanRef}`and` using {kw}`match`:\n\n```lean\nnamespace Hidden\n------\ndef and (a b : Bool) : Bool :=\n  match a with\n  | true  => b\n  | false => false\n-------\nend Hidden\n```\n\nSimilarly, most identities can be proved by introducing suitable {kw}`match`, and then using {lean}`rfl`.\n\n# Constructors with Arguments\n%%%\ntag := \"constructors-with-arguments\"\n%%%\n\n:::setup\n```\nvariable (α : Type u) (β : Type v) (a : α) (b : β)\n```\n\n\nEnumerated types are a very special case of inductive types, in which\nthe constructors take no arguments at all. In general, a\n“construction” can depend on data, which is then represented in the\nconstructed argument. Consider the definitions of the product type and\nsum type in the library:\n\n```lean\nnamespace Hidden\n------\ninductive Prod (α : Type u) (β : Type v)\n  | mk : α → β → Prod α β\n\ninductive Sum (α : Type u) (β : Type v) where\n  | inl : α → Sum α β\n  | inr : β → Sum α β\n-------\nend Hidden\n```\n\nConsider what is going on in these examples.\nThe product type has one constructor, {lean}`Prod.mk`,\nwhich takes two arguments. To define a function on {leanRef}`Prod α β`, we\ncan assume the input is of the form {lean}`Prod.mk a b`, and we have to\nspecify the output, in terms of {leanRef}`a` and {leanRef}`b`. We can use this to\ndefine the two projections for {leanRef}`Prod`. Remember that the standard\nlibrary defines notation {lean}`α × β` for {leanRef}`Prod α β` and {lean}`(a, b)` for\n{lean}`Prod.mk a b`.\n\n```lean\nnamespace Hidden\ninductive Prod (α : Type u) (β : Type v)\n  | mk : α → β → Prod α β\n------\ndef fst {α : Type u} {β : Type v} (p : Prod α β) : α :=\n  match p with\n  | Prod.mk a b => a\n\ndef snd {α : Type u} {β : Type v} (p : Prod α β) : β :=\n  match p with\n  | Prod.mk a b => b\n--------\nend Hidden\n```\n\nThe function {leanRef}`fst` takes a pair, {leanRef}`p`. The {kw}`match` interprets\n{leanRef}`p` as a pair, {leanRef}`Prod.mk a b`. Recall also from {ref \"dependent-type-theory\"}[Dependent Type Theory]\nthat to give these definitions the greatest generality possible, we allow\nthe types {leanRef}`α` and {leanRef}`β` to belong to any universe.\n\n:::\n:::setup\n```\nuniverse u_2 u_3 u_1\nvariable (b : Bool) {α : Type u} {t1 t2 : α}\n```\n\nHere is another example where we use the recursor {lean (type := \"{α : Type u_2} → {β : Type u_3} → {motive : α × β → Sort u_1} → (t : α × β) → ((fst : α) → (snd : β) → motive (fst, snd)) → motive t\")}`Prod.casesOn` instead\nof {kw}`match`.\n\n```lean\ndef prod_example (p : Bool × Nat) : Nat :=\n  Prod.casesOn (motive := fun _ => Nat) p\n    (fun b n => cond b (2 * n) (2 * n + 1))\n\n#eval prod_example (true, 3)\n\n#eval prod_example (false, 3)\n```\n\nThe argument {leanRef}`motive` is used to specify the type of the object you want to\nconstruct, and it is a function because it may depend on the pair.\nThe {leanRef}`cond` function is a boolean conditional: {lean}`cond b t1 t2`\nreturns {lean}`t1` if {lean}`b` is true, and {lean}`t2` otherwise.\nThe function {leanRef}`prod_example` takes a pair consisting of a boolean,\n{leanRef}`b`, and a number, {leanRef}`n`, and returns either {leanRef}`2 * n` or {leanRef}`2 * n + 1`\naccording to whether {leanRef}`b` is true or false.\n:::\n\n:::setup\n```\nopen Sum\nvariable {α : Type u} {β : Type v} (a : α) (b : β)\n```\n\nIn contrast, the sum type has _two_ constructors, {lean}`inl` and {lean}`inr`\n(for “insert left” and “insert right”), each of which takes _one_\n(explicit) argument. To define a function on {lean}`Sum α β`, we have to\nhandle two cases: either the input is of the form {lean}`inl a`, in which\ncase we have to specify an output value in terms of {leanRef}`a`, or the\ninput is of the form {lean}`inr b`, in which case we have to specify an\noutput value in terms of {leanRef}`b`.\n\n```lean\ndef sum_example (s : Sum Nat Nat) : Nat :=\n  Sum.casesOn (motive := fun _ => Nat) s\n    (fun n => 2 * n)\n    (fun n => 2 * n + 1)\n\n#eval sum_example (Sum.inl 3)\n\n#eval sum_example (Sum.inr 3)\n```\n\n:::\n\n:::setup\n```\nopen Sum\nvariable (n : Nat)\n```\n\nThis example is similar to the previous one, but now an input to\n{leanRef}`sum_example` is implicitly either of the form {lean}`inl n` or {lean}`inr n`.\nIn the first case, the function returns {lean}`2 * n`, and the second\ncase, it returns {lean}`2 * n + 1`.\n\n:::\n\n:::setup\n```\nvariable {α β : Type} {a : α} {b : β}\nopen Sum\n```\n\n\nNotice that the product type depends on parameters {lean}`α β : Type`\nwhich are arguments to the constructors as well as {lean}`Prod`. Lean\ndetects when these arguments can be inferred from later arguments to a\nconstructor or the return type, and makes them implicit in that case.\n\nIn {ref \"defining-the-natural-numbers\"}[Defining the Natural Numbers]\nwe will see what happens when the\nconstructor of an inductive type takes arguments from the inductive\ntype itself. What characterizes the examples we consider in this\nsection is that each constructor relies only on previously specified types.\n\nNotice that a type with multiple constructors is disjunctive: an\nelement of {lean}`Sum α β` is either of the form {lean}`inl a` _or_ of the\nform {lean}`inl b`. A constructor with multiple arguments introduces\nconjunctive information: from an element {lean}`Prod.mk a b` of\n{lean}`Prod α β` we can extract {leanRef}`a` _and_ {leanRef}`b`. An arbitrary inductive type can\ninclude both features, by having any number of constructors, each of\nwhich takes any number of arguments.\n\n:::\n\nAs with function definitions, Lean's inductive definition syntax will\nlet you put named arguments to the constructors before the colon:\n\n```lean\nnamespace Hidden\n------\ninductive Prod (α : Type u) (β : Type v) where\n  | mk (fst : α) (snd : β) : Prod α β\n\ninductive Sum (α : Type u) (β : Type v) where\n  | inl (a : α) : Sum α β\n  | inr (b : β) : Sum α β\n-------\nend Hidden\n```\n\nThe results of these definitions are essentially the same as the ones given earlier in this section.\n\nA type, like {leanRef}`Prod`, that has only one constructor is purely\nconjunctive: the constructor simply packs the list of arguments into a\nsingle piece of data, essentially a tuple where the type of subsequent\narguments can depend on the type of the initial argument. We can also\nthink of such a type as a “record” or a “structure”. In Lean, the\nkeyword {kw}`structure` can be used to define such an inductive type as\nwell as its projections, at the same time.\n\n```lean\nnamespace Hidden\n------\nstructure Prod (α : Type u) (β : Type v) where\n  mk ::\n  fst : α\n  snd : β\n-------\nend Hidden\n```\n\nThis example simultaneously introduces the inductive type, {leanRef}`Prod`,\nits constructor, {leanRef}`mk`, the usual eliminators ({lit}`rec` and\n{lit}`recOn`), as well as the projections, {leanRef}`fst` and {leanRef}`snd`, as\ndefined above.\n\nIf you do not name the constructor, Lean uses {lit}`mk` as a default. For\nexample, the following defines a record to store a color as a triple\nof RGB values:\n\n```lean\nstructure Color where\n  red : Nat\n  green : Nat\n  blue : Nat\nderiving Repr\n\ndef yellow := Color.mk 255 255 0\n\n#eval Color.red yellow\n```\n\nThe definition of {leanRef}`yellow` forms the record with the three values\nshown, and the projection {leanRef}`Color.red` returns the red component.\n\nThe {kw}`structure` command is especially useful for defining algebraic\nstructures, and Lean provides substantial infrastructure to support\nworking with them. Here, for example, is the definition of a\nsemigroup:\n\n```lean\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc : ∀ a b c, mul (mul a b) c = mul a (mul b c)\n```\n\nWe will see more examples in the chapter on {ref \"structures-and-records\"}[structures and records].\n\n:::leanFirst\nWe have already discussed the dependent product type {leanRef}`Sigma`:\n\n```lean\nnamespace Hidden\n------\ninductive Sigma {α : Type u} (β : α → Type v) where\n  | mk : (a : α) → β a → Sigma β\n-------\nend Hidden\n```\n:::\n\nTwo more examples of inductive types in the library are the following:\n\n```lean\nnamespace Hidden\n------\ninductive Option (α : Type u) where\n  | none : Option α\n  | some : α → Option α\n\ninductive Inhabited (α : Type u) where\n  | mk : α → Inhabited α\n-------\nend Hidden\n```\n\n:::setup\n```\nvariable {α : Type u} {β : Type v} {γ : Type u'} (b : β) (f : α → Option β) (a : α)\n```\n\nIn the semantics of dependent type theory, there is no built-in notion\nof a partial function. Every element of a function type {lean}`α → β` or a\ndependent function type {lean}`(a : α) → β` is assumed to have a value\nat every input. The {lean}`Option` type provides a way of representing partial functions. An\nelement of {lean}`Option β` is either {lean}`none` or of the form {lean}`some b`,\nfor some value {lean}`b : β`. Thus we can think of an element {lean}`f` of the\ntype {lean}`α → Option β` as being a partial function from {lean}`α` to {lean}`β`:\nfor every {lean}`a : α`, {lean}`f a` either returns {lean (type := \"Option β\")}`none`, indicating\n{lean}`f a` is “undefined”, or {lean}`some b`.\n\nAn element of {lean}`Inhabited α` is simply a witness to the fact that\nthere is an element of {lean}`α`. Later, we will see that {lean}`Inhabited` is\nan example of a _type class_ in Lean: Lean can be instructed that\nsuitable base types are inhabited, and can automatically infer that\nother constructed types are inhabited on that basis.\n\nAs exercises, we encourage you to develop a notion of composition for\npartial functions from {lean}`α` to {lean}`β` and {lean}`β` to {lean}`γ`, and show\nthat it behaves as expected. We also encourage you to show that\n{lean}`Bool` and {lean}`Nat` are inhabited, that the product of two inhabited\ntypes is inhabited, and that the type of functions to an inhabited\ntype is inhabited.\n\n:::\n\n# Inductively Defined Propositions\n%%%\ntag := \"inductively-defined-propositions\"\n%%%\n\nInductively defined types can live in any type universe, including the\nbottom-most one, {lean}`Prop`. In fact, this is exactly how the logical\nconnectives are defined.\n\n```lean\nnamespace Hidden\n------\ninductive False : Prop\n\ninductive True : Prop where\n  | intro : True\n\ninductive And (a b : Prop) : Prop where\n  | intro : a → b → And a b\n\ninductive Or (a b : Prop) : Prop where\n  | inl : a → Or a b\n  | inr : b → Or a b\n-------\nend Hidden\n```\n\n:::setup\n```\nvariable (p : Prop) (hp : p) (α : Type u) (β : Type v)\n```\n\nYou should think about how these give rise to the introduction and\nelimination rules that you have already seen. There are rules that\ngovern what the eliminator of an inductive type can eliminate _to_,\nthat is, what kinds of types can be the target of a recursor. Roughly\nspeaking, what characterizes inductive types in {lean}`Prop` is that one\ncan only eliminate to other types in {lean}`Prop`. This is consistent with\nthe understanding that if {lean}`p : Prop`, an element {lean}`hp : p` carries\nno data. There is a small exception to this rule, however, which we\nwill discuss below, in {ref \"inductive-families\"}[Inductive Families].\n\n\nEven the existential quantifier is inductively defined:\n\n```lean\nnamespace Hidden\n------\ninductive Exists {α : Sort u} (p : α → Prop) : Prop where\n  | intro (w : α) (h : p w) : Exists p\n-------\nend Hidden\n```\n\nKeep in mind that the notation {lean}`∃ x : α, p` is syntactic sugar for {lean}`Exists (fun x : α => p)`.\n\n\nThe definitions of {lean}`False`, {lean}`True`, {lean}`And`, and {lean}`Or` are\nperfectly analogous to the definitions of {lean}`Empty`, {lean}`Unit`,\n{lean}`Prod`, and {lean}`Sum`. The difference is that the first group yields\nelements of {lean}`Prop`, and the second yields elements of {lean}`Type u` for\nsome {leanRef}`u`. In a similar way, {leanRef}`∃ x : α, p` is a {lean}`Prop`-valued\nvariant of {lean}`Σ x : α, β`.\n\n:::\n\n::::setup\n```\nvariable (α : Type u) (β : Type v) (p : Prop)\n```\n\nThis is a good place to mention another inductive type, denoted\n{lean}`{x : α // p}`, which is sort of a hybrid between\n{lean}`∃ x : α, p` and {lean}`Σ x : α, β`.\n\n```lean\nnamespace Hidden\n------\ninductive Subtype {α : Type u} (p : α → Prop) where\n  | mk : (x : α) → p x → Subtype p\n-------\nend Hidden\n```\n::::\n::::setup\n```\nvariable {α : Type u} {p : α → Prop}\n```\n\n:::leanFirst\nIn fact, in Lean, {leanRef}`Subtype` is defined using the structure command:\n\n```lean\nnamespace Hidden\n------\nstructure Subtype {α : Sort u} (p : α → Prop) where\n  val : α\n  property : p val\n-------\nend Hidden\n```\n\n\nThe notation {lean}`{x : α // p x}` is syntactic sugar for {lean}`Subtype (fun x : α => p x)`.\nIt is modeled after subset notation in set theory: the idea is that {leanRef}`{x : α // p x}`\ndenotes the collection of elements of {leanRef}`α` that have property {leanRef}`p`.\n:::\n\n::::\n\n# Defining the Natural Numbers\n%%%\ntag := \"defining-the-natural-numbers\"\n%%%\n\nThe inductively defined types we have seen so far are “flat”:\nconstructors wrap data and insert it into a type, and the\ncorresponding recursor unpacks the data and acts on it. Things get\nmuch more interesting when the constructors act on elements of the\nvery type being defined. A canonical example is the type {lean}`Nat` of\nnatural numbers:\n\n```lean\nnamespace Hidden\n------\ninductive Nat where\n  | zero : Nat\n  | succ : Nat → Nat\n-------\nend Hidden\n```\n\n:::setup\n```\nopen Nat\nvariable {motive : Nat → Sort u} {f : (n : Nat) → motive n} {n : Nat}\n```\n\nThere are two constructors. We start with {lean}`zero : Nat`; it takes\nno arguments, so we have it from the start. In contrast, the\nconstructor {lean}`succ` can only be applied to a previously constructed\n{lean}`Nat`. Applying it to {lean}`zero` yields {lean}`succ zero : Nat`. Applying\nit again yields {lean}`succ (succ zero) : Nat`, and so on. Intuitively,\n{lean}`Nat` is the “smallest” type with these constructors, meaning that\nit is exhaustively (and freely) generated by starting with {lean}`zero`\nand applying {lean}`succ` repeatedly.\n\n\nAs before, the recursor for {lean}`Nat` is designed to define a dependent\nfunction {lean}`f` from {lean}`Nat` to any domain, that is, an element {lean}`f`\nof {lean}`(n : Nat) → motive n` for some {lean}`motive : Nat → Sort u`.\nIt has to handle two cases: the case where the input is {lean}`zero`, and the case where\nthe input is of the form {lean}`succ n` for some {lean}`n : Nat`. In the first\ncase, we simply specify a target value with the appropriate type, as\nbefore. In the second case, however, the recursor can assume that a\nvalue of {lean}`f` at {lean}`n` has already been computed. As a result, the\nnext argument to the recursor specifies a value for {lean}`f (succ n)` in\nterms of {lean}`n` and {lean}`f n`. If we check the type of the recursor,\nyou find the following:\n:::\n\n```signature\nNat.rec.{u} :\n  {motive : Nat → Sort u} →\n  (zero : motive Nat.zero) →\n  (succ : (n : Nat) → motive n → motive (Nat.succ n)) →\n  (t : Nat) → motive t\n```\n\nThe implicit argument, {leanRef}`motive`, is the codomain of the function being defined.\nIn type theory it is common to say {leanRef}`motive` is the _motive_ for the elimination/recursion,\nsince it describes the kind of object we wish to construct.\nThe next two arguments specify how to compute the zero and successor cases, as described above.\nThey are also known as the _minor premises_.\nFinally, the {leanRef}`t : Nat` is the input to the function. It is also known as the _major premise_.\n\nThe {name}`Nat.recOn` is similar to {name}`Nat.rec` but the major premise occurs before the minor premises.\n\n```signature\nNat.recOn.{u} :\n  {motive : Nat → Sort u} →\n  (t : Nat) →\n  (zero : motive Nat.zero) →\n  (succ : ((n : Nat) → motive n → motive (Nat.succ n))) →\n  motive t\n```\n\n:::setup\n```\ndef add (m n : Nat) : Nat :=\n  match n with\n  | Nat.zero   => m\n  | Nat.succ n => Nat.succ (add m n)\nvariable {n m : Nat}\nopen Nat\n```\n\nConsider, for example, the addition function {lean}`add m n` on the\nnatural numbers. Fixing {lean}`m`, we can define addition by recursion on\n{lean}`n`. In the base case, we set {lean}`add m zero` to {lean}`m`. In the\nsuccessor step, assuming the value {lean}`add m n` is already determined,\nwe define {lean}`add m (succ n)` to be {lean}`succ (add m n)`.\n:::\n\n```lean\nnamespace Hidden\n------\ninductive Nat where\n  | zero : Nat\n  | succ : Nat → Nat\nderiving Repr\n\ndef add (m n : Nat) : Nat :=\n  match n with\n  | Nat.zero   => m\n  | Nat.succ n => Nat.succ (add m n)\n\nopen Nat\n\n#eval add (succ (succ zero)) (succ zero)\n-------\nend Hidden\n```\n\n\nIt is useful to put such definitions into a namespace, {lean}`Nat`. We can\nthen go on to define familiar notation in that namespace. The two\ndefining equations for addition now hold definitionally:\n\n```lean\nnamespace Hidden\ninductive Nat where\n | zero : Nat\n | succ : Nat → Nat\nderiving Repr\n------\nnamespace Nat\n\ndef add (m n : Nat) : Nat :=\n  match n with\n  | Nat.zero   => m\n  | Nat.succ n => Nat.succ (add m n)\n\ninstance : Add Nat where\n  add := add\n\ntheorem add_zero (m : Nat) : m + zero = m := rfl\ntheorem add_succ (m n : Nat) : m + succ n = succ (m + n) := rfl\n\nend Nat\n-------\nend Hidden\n```\n\nWe will explain how the {kw}`instance` command works in\nthe {ref \"type-classes\"}[Type Classes] chapter. In the examples below, we will use\nLean's version of the natural numbers.\n\n::::leanFirst\n\n:::setup\n```\nvariable {n : Nat} {motive : Nat → Sort u} {ih : motive n}\n```\n\nProving a fact like {lean}`0 + n = n`, however, requires a proof by induction.\nAs observed above, the induction principle is just a special case of the recursion principle,\nwhen the codomain {lean}`motive n` is an element of {lean}`Prop`. It represents the familiar\npattern of an inductive proof: to prove {lean}`∀ n, motive n`, first prove {lean}`motive 0`,\nand then, for arbitrary {lean}`n`, assume {lean}`ih : motive n` and prove {lean}`motive (n + 1)`.\n:::\n\n```lean\nnamespace Hidden\n------\nopen Nat\n\ntheorem zero_add (n : Nat) : 0 + n = n :=\n  Nat.recOn (motive := fun x => 0 + x = x)\n   n\n   (show 0 + 0 = 0 from rfl)\n   (fun (n : Nat) (ih : 0 + n = n) =>\n    show 0 + (n + 1) = n + 1 from\n    calc 0 + (n + 1)\n      _ = (0 + n) + 1 := rfl\n      _ = n + 1       := by rw [ih])\n-------\nend Hidden\n```\n\n::::\n\nNotice that, once again, when {name}`Nat.recOn` is used in the context of\na proof, it is really the induction principle in disguise. The\n{tactic}`rw` and {tactic}`simp` tactics tend to be very effective in proofs\nlike these. In this case, each can be used to reduce the proof to:\n\n\n```lean\nnamespace Hidden\n------\nopen Nat\n\ntheorem zero_add (n : Nat) : 0 + n = n :=\n  Nat.recOn (motive := fun x => 0 + x = x) n\n    rfl\n    (fun n ih => by simp [ih])\n-------\nend Hidden\n```\n\n:::setup\n```\nvariable (m n k : Nat)\n```\n\nAs another example, let us prove the associativity of addition,\n{lean}`∀ m n k, m + n + k = m + (n + k)`.\n(The notation {leanRef}`+`, as we have defined it, associates to the left, so {leanRef}`m + n + k` is really {lean}`(m + n) + k`.)\nThe hardest part is figuring out which variable to do the induction on. Since addition is defined by recursion on the second argument,\n{leanRef (in := \"n k,\")}`k` is a good guess, and once we make that choice the proof almost writes itself:\n:::\n\n```lean\nnamespace Hidden\n------\nopen Nat\ntheorem add_assoc (m n k : Nat) : m + n + k = m + (n + k) :=\n  Nat.recOn (motive := fun k => m + n + k = m + (n + k)) k\n    (show m + n + 0 = m + (n + 0) from rfl)\n    (fun k (ih : m + n + k = m + (n + k)) =>\n      show m + n + (k + 1) = m + (n + (k + 1)) from\n      calc m + n + (k + 1)\n        _ = (m + n + k) + 1   := rfl\n        _ = (m + (n + k)) + 1 := by rw [ih]\n        _ = m + ((n + k) + 1) := rfl\n        _ = m + (n + (k + 1)) := rfl)\n-------\nend Hidden\n```\n\nOnce again, you can reduce the proof to:\n\n```lean\nopen Nat\ntheorem add_assoc (m n k : Nat) : m + n + k = m + (n + k) :=\n  Nat.recOn (motive := fun k => m + n + k = m + (n + k)) k\n    rfl\n    (fun k ih => by simp [add_succ (m + n) k, ih]; rfl)\n```\n\nSuppose we try to prove the commutativity of addition. Choosing induction on the second argument, we might begin as follows:\n\n```lean\nopen Nat\ntheorem add_comm (m n : Nat) : m + n = n + m :=\n  Nat.recOn (motive := fun x => m + x = x + m) n\n   (show m + 0 = 0 + m by rw [Nat.zero_add, Nat.add_zero])\n   (fun (n : Nat) (ih : m + n = n + m) =>\n    show m + succ n = succ n + m from\n    calc m + succ n\n      _ = succ (m + n) := rfl\n      _ = succ (n + m) := by rw [ih]\n      _ = succ n + m   := sorry)\n```\n\nAt this point, we see that we need another supporting fact, namely, that {leanRef}`succ (n + m)`{lit}`  =  `{leanRef}`succ n + m`.\nYou can prove this by induction on {leanRef}`m`:\n\n```lean\nopen Nat\n\ntheorem succ_add (n m : Nat) : succ n + m = succ (n + m) :=\n  Nat.recOn (motive := fun x => succ n + x = succ (n + x)) m\n    (show succ n + 0 = succ (n + 0) from rfl)\n    (fun (m : Nat) (ih : succ n + m = succ (n + m)) =>\n     show succ n + succ m = succ (n + succ m) from\n     calc succ n + succ m\n       _ = succ (succ n + m)   := rfl\n       _ = succ (succ (n + m)) := by rw [ih]\n       _ = succ (n + succ m)   := rfl)\n```\n\nYou can then replace the {leanRef}`sorry` in the previous proof with {leanRef}`succ_add`. Yet again, the proofs can be compressed:\n\n```lean\nnamespace Hidden\ninductive Nat where\n | zero : Nat\n | succ : Nat → Nat\nderiving Repr\n\ndef add (m n : Nat) : Nat :=\n  match n with\n  | Nat.zero   => m\n  | Nat.succ n => Nat.succ (add m n)\n\ninstance : Add Nat where\n  add := add\n\nnamespace Nat\ntheorem add_zero (m : Nat) : m + zero = m := rfl\n\ntheorem add_succ (m n : Nat) : m + succ n = succ (m + n) := rfl\n\ntheorem zero_add (n : Nat) : zero + n = n :=\n  Nat.recOn (motive := fun x => zero + x = x) n\n    rfl\n    (fun n ih => by simpa [add_zero, add_succ])\n\nend Nat\n------\nopen Nat\ntheorem succ_add (n m : Nat) : succ n + m = succ (n + m) :=\n  Nat.recOn (motive := fun x => succ n + x = succ (n + x)) m\n    rfl\n    (fun m ih => by simpa [add_succ (succ n)])\n\ntheorem add_comm (m n : Nat) : m + n = n + m :=\n  Nat.recOn (motive := fun x => m + x = x + m) n\n    (by simp [add_zero, zero_add])\n    (fun m ih => by simp_all [succ_add, add_succ])\n-------\nend Hidden\n```\n\n# Other Recursive Data Types\n%%%\ntag := \"other-recursive-data-types\"\n%%%\n\n:::leanFirst\nLet us consider some more examples of inductively defined types. For\nany type, {leanRef}`α`, the type {leanRef}`List α` of lists of elements of {leanRef}`α` is\ndefined in the library.\n\n```lean\nnamespace Hidden\n------\ninductive List (α : Type u) where\n  | nil  : List α\n  | cons (h : α) (t : List α) : List α\n\nnamespace List\n\ndef append (as bs : List α) : List α :=\n  match as with\n  | nil       => bs\n  | cons a as => cons a (append as bs)\n\ntheorem nil_append (as : List α) : append nil as = as :=\n  rfl\n\ntheorem cons_append (a : α) (as bs : List α) :\n    append (cons a as) bs = cons a (append as bs) :=\n  rfl\n\nend List\n-------\nend Hidden\n```\n\nA list of elements of type {leanRef}`α` is either the empty list, {leanRef}`nil`, or\nan element {leanRef}`h : α` followed by a list {leanRef}`t : List α`.\nThe first element, {leanRef}`h`, is commonly known as the “head” of the list,\nand the remainder, {leanRef}`t`, is known as the “tail.”\n:::\n\nAs an exercise, prove the following:\n\n```lean\nnamespace Hidden\ninductive List (α : Type u) where\n| nil  : List α\n| cons : α → List α → List α\nnamespace List\ndef append (as bs : List α) : List α :=\n match as with\n | nil       => bs\n | cons a as => cons a (append as bs)\ntheorem nil_append (as : List α) : append nil as = as :=\n rfl\ntheorem cons_append (a : α) (as bs : List α)\n                    : append (cons a as) bs = cons a (append as bs) :=\n rfl\n------\ntheorem append_nil (as : List α) :\n    append as nil = as :=\n  sorry\n\ntheorem append_assoc (as bs cs : List α) :\n    append (append as bs) cs = append as (append bs cs) :=\n  sorry\n-------\nend List\nend Hidden\n```\n\n:::setup\n```\nuniverse u\ndef length : {α : Type u} → List α → Nat := List.length\ndef append : {α : Type u} → List α → List α → List α := List.append\nvariable (as bs : List α)\n```\n\nTry also defining the function {lean}`length : {α : Type u} → List α → Nat` that returns the length of a list,\nand prove that it behaves as expected (for example, {lean}`length (append as bs) = length as + length bs`).\n:::\n\nFor another example, we can define the type of binary trees:\n\n```lean\ninductive BinaryTree where\n  | leaf : BinaryTree\n  | node : BinaryTree → BinaryTree → BinaryTree\n```\n\nIn fact, we can even define the type of countably branching trees:\n\n```lean\ninductive CBTree where\n  | leaf : CBTree\n  | sup : (Nat → CBTree) → CBTree\n\nnamespace CBTree\n\ndef succ (t : CBTree) : CBTree :=\n  sup (fun _ => t)\n\ndef toCBTree : Nat → CBTree\n  | 0 => leaf\n  | n+1 => succ (toCBTree n)\n\ndef omega : CBTree :=\n  sup toCBTree\n\nend CBTree\n```\n\n# Tactics for Inductive Types\n%%%\ntag := \"tactics-for-inductive-types\"\n%%%\n\nGiven the fundamental importance of inductive types in Lean, it should\nnot be surprising that there are a number of tactics designed to work\nwith them effectively. We describe some of them here.\n\n:::setup\n```\nvariable {x : InductiveType}\n```\n\nThe {tactic}`cases` tactic works on elements of an inductively defined type,\nand does what the name suggests: it decomposes the element according\nto each of the possible constructors. In its most basic form, it is\napplied to an element {lean}`x` in the local context. It then reduces the\ngoal to cases in which {lean}`x` is replaced by each of the constructions.\n:::\n\n```lean\nexample (p : Nat → Prop)\n    (hz : p 0) (hs : ∀ n, p (Nat.succ n)) :\n    ∀ n, p n := by\n  intro n\n  cases n\n  . exact hz\n--^ PROOF_STATE: A\n  . apply hs\n--^ PROOF_STATE: B\n```\n\nIn the first branch, the proof state is:\n```proofState A\ncase zero\np : Nat → Prop\nhz : p 0\nhs : ∀ (n : Nat), p n.succ\n⊢ p 0\n```\nIn the second branch, it is:\n```proofState B\ncase succ\np : Nat → Prop\nhz : p 0\nhs : ∀ (n : Nat), p n.succ\nn✝ : Nat\n⊢ p (n✝ + 1)\n```\n\n:::leanFirst\nThere are extra bells and whistles. For one thing, {leanRef}`cases` allows\nyou to choose the names for each alternative using a\n{leanRef}`with` clause. In the next example, for example, we choose the name\n{leanRef}`m` for the argument to {leanRef}`succ`, so that the second case refers to\n{leanRef}`succ m`. More importantly, the cases tactic will detect any items\nin the local context that depend on the target variable. It reverts\nthese elements, does the split, and reintroduces them. In the example\nbelow, notice that the hypothesis {leanRef}`h : n ≠ 0` becomes {leanRef}`h : 0 ≠ 0`\nin the first branch, and {leanRef}`h : m + 1 ≠ 0` in the second.\n\n```lean (showProofStates := \"C D\")\nopen Nat\n\nexample (n : Nat) (h : n ≠ 0) : succ (pred n) = n := by\n  cases n with\n  | zero =>\n  --     ^ PROOF_STATE: C\n    apply absurd rfl h\n  | succ m =>\n  --       ^ PROOF_STATE: D\n    rfl\n```\n:::\n\nNotice that {leanRef}`cases` can be used to produce data as well as prove propositions.\n\n```lean\ndef f (n : Nat) : Nat := by\n  cases n; exact 3; exact 7\n\nexample : f 0 = 3 := rfl\nexample : f 5 = 7 := rfl\n```\n\nOnce again, cases will revert, split, and then reintroduce dependencies in the context.\n\n```lean\ndef Tuple (α : Type) (n : Nat) :=\n  { as : List α // as.length = n }\n\ndef f {n : Nat} (t : Tuple α n) : Nat := by\n  cases n; exact 3; exact 7\n\ndef myTuple : Tuple Nat 3 :=\n  ⟨[0, 1, 2], rfl⟩\n\nexample : f myTuple = 7 :=\n  rfl\n```\n\nHere is an example of multiple constructors with arguments.\n\n```lean\ninductive Foo where\n  | bar1 : Nat → Nat → Foo\n  | bar2 : Nat → Nat → Nat → Foo\n\ndef silly (x : Foo) : Nat := by\n  cases x with\n  | bar1 a b => exact b\n  | bar2 c d e => exact e\n```\n\nThe alternatives for each constructor don't need to be solved\nin the order the constructors were declared.\n\n```lean\ninductive Foo where\n  | bar1 : Nat → Nat → Foo\n  | bar2 : Nat → Nat → Nat → Foo\n------\ndef silly (x : Foo) : Nat := by\n  cases x with\n  | bar2 c d e => exact e\n  | bar1 a b => exact b\n```\n\n:::leanFirst\nThe syntax of the {leanRef}`with` is convenient for writing structured proofs.\nLean also provides a complementary {leanRef}`case` tactic, which allows you to focus on goal\nassign variable names.\n\n```lean\ninductive Foo where\n  | bar1 : Nat → Nat → Foo\n  | bar2 : Nat → Nat → Nat → Foo\n------\ndef silly (x : Foo) : Nat := by\n  cases x\n  case bar1 a b => exact b\n  case bar2 c d e => exact e\n```\n:::\n\nThe {leanRef}`case` tactic is clever, in that it will match the constructor to the appropriate goal. For example, we can fill the goals above in the opposite order:\n\n```lean\ninductive Foo where\n  | bar1 : Nat → Nat → Foo\n  | bar2 : Nat → Nat → Nat → Foo\n------\ndef silly (x : Foo) : Nat := by\n  cases x\n  case bar2 c d e => exact e\n  case bar1 a b => exact b\n```\n\nYou can also use {leanRef}`cases` with an arbitrary expression. Assuming that\nexpression occurs in the goal, the cases tactic will generalize over\nthe expression, introduce the resulting universally quantified\nvariable, and case on that.\n\n```lean\nopen Nat\n\nexample (p : Nat → Prop) (hz : p 0) (hs : ∀ n, p (succ n)) (m k : Nat)\n        : p (m + 3 * k) := by\n  cases m + 3 * k\n  exact hz   -- goal is p 0\n  apply hs   -- goal is a : Nat ⊢ p (succ a)\n```\n\nThink of this as saying “split on cases as to whether {leanRef}`m + 3 * k` is\nzero or the successor of some number.” The result is functionally\nequivalent to the following:\n\n```lean (showProofStates := \"Z S\")\nopen Nat\n\nexample (p : Nat → Prop) (hz : p 0) (hs : ∀ n, p (succ n)) (m k : Nat)\n        : p (m + 3 * k) := by\n  generalize m + 3 * k = n\n  cases n\n  -- ^ PROOF_STATE: Z\n  exact hz\n  -- ^ PROOF_STATE: S\n  apply hs\n```\n\nNotice that the expression {leanRef}`m + 3 * k` is erased by {leanRef}`generalize`; all\nthat matters is whether it is of the form {leanRef}`0` or {leanRef}`n✝ + 1`. This\nform of {leanRef}`cases` will _not_ revert any hypotheses that also mention\nthe expression in the equation (in this case, {leanRef}`m + 3 * k`). If such a\nterm appears in a hypothesis and you want to generalize over that as\nwell, you need to {tactic}`revert` it explicitly.\n\nIf the expression you case on does not appear in the goal, the\n{tactic}`cases` tactic uses {tactic}`have` to put the type of the expression into\nthe context. Here is an example:\n\n```lean\nexample (p : Prop) (m n : Nat)\n        (h₁ : m < n → p) (h₂ : m ≥ n → p) : p := by\n  cases Nat.lt_or_ge m n\n  case inl hlt => exact h₁ hlt\n  --           ^ PROOF_STATE: one\n  case inr hge => exact h₂ hge\n  --           ^ PROOF_STATE: two\n```\n\nThe theorem {leanRef}`Nat.lt_or_ge m n` says {leanRef}`m < n`{lit}`  ∨  `{leanRef}`m ≥ n`, and it is\nnatural to think of the proof above as splitting on these two\ncases. In the first branch, we have the hypothesis {leanRef}`hlt : m < n`, and\nin the second we have the hypothesis {leanRef}`hge : m ≥ n`. The proof above\nis functionally equivalent to the following:\n\n```lean\nexample (p : Prop) (m n : Nat)\n        (h₁ : m < n → p) (h₂ : m ≥ n → p) : p := by\n  have h : m < n ∨ m ≥ n := Nat.lt_or_ge m n\n  cases h\n  case inl hlt => exact h₁ hlt\n  case inr hge => exact h₂ hge\n```\n\nAfter the first two lines, we have {leanRef}`h : m < n ∨ m ≥ n` as a\nhypothesis, and we simply do cases on that.\n\n:::leanFirst\nHere is another example, where we use the decidability of equality on\nthe natural numbers to split on the cases {leanRef}`m = n` and {leanRef}`m ≠ n`.\n\n```lean\n#check Nat.sub_self\n\nexample (m n : Nat) : m - n = 0 ∨ m ≠ n := by\n  cases Decidable.em (m = n) with\n  | inl heq => rw [heq]; apply Or.inl; exact Nat.sub_self n\n  | inr hne => apply Or.inr; exact hne\n```\n:::\n\nRemember that if you {kw}`open `{lit}`Classical`, you can use the law of the\nexcluded middle for any proposition at all. But using type class\ninference (see {ref \"type-classes\"}[Type Classes]), Lean can actually\nfind the relevant decision procedure, which means that you can use the\ncase split in a computable function.\n\n:::leanFirst\nJust as the {leanRef}`cases` tactic can be used to carry out proof by cases,\nthe {leanRef}`induction` tactic can be used to carry out proofs by\ninduction. The syntax is similar to that of {leanRef}`cases`, except that the\nargument can only be a term in the local context. Here is an example:\n\n```lean\nnamespace Hidden\n------\ntheorem zero_add (n : Nat) : 0 + n = n := by\n  induction n with\n  | zero => rfl\n  | succ n ih => rw [Nat.add_succ, ih]\n-------\nend Hidden\n```\n:::\n\n:::leanFirst\nAs with {leanRef}`cases`, we can use the {leanRef}`case` tactic instead of {leanRef}`with`.\n\n```lean\nnamespace Hidden\n------\ntheorem zero_add (n : Nat) : 0 + n = n := by\n  induction n\n  case zero => rfl\n  case succ n ih => rw [Nat.add_succ, ih]\n-------\nend Hidden\n```\n:::\n\nHere are some additional examples:\n:::TODO\nFIXME\n:::\n```lean\nnamespace Hidden\ninductive Nat where\n  | zero\n  | succ : Nat → Nat\n\ndef Nat.toNat : Nat → _root_.Nat\n  | .zero => .zero\n  | .succ n => .succ n.toNat\n\ndef Nat.ofNat : _root_.Nat → Nat\n  | .zero => .zero\n  | .succ n => .succ (.ofNat n)\n\ndef add (m n : Nat) : Nat :=\n  match n with\n  | Nat.zero   => m\n  | Nat.succ n => Nat.succ (add m n)\n\ninstance : Add Nat where\n  add := add\n\ninstance : OfNat Nat n where\n  ofNat := .ofNat n\n\n@[simp]\ntheorem zero_zero : (.zero : Nat) = 0 := rfl\ntheorem add_zero (n : Nat) : n + 0 = n := rfl\ntheorem add_succ (n k : Nat) : n + k.succ = (n + k).succ := rfl\n------\nopen Nat\n\ntheorem zero_add (n : Nat) : 0 + n = n := by\n  induction n <;> simp [*, add_zero, add_succ]\n\ntheorem succ_add (m n : Nat) : succ m + n = succ (m + n) := by\n  induction n <;> simp [*, add_zero, add_succ]\n\ntheorem add_comm (m n : Nat) : m + n = n + m := by\n  induction n <;> simp [*, add_zero, add_succ, succ_add, zero_add]\n\ntheorem add_assoc (m n k : Nat) : m + n + k = m + (n + k) := by\n  induction k <;> simp [*, add_zero, add_succ]\n-------\nend Hidden\n```\n\nThe {leanRef}`induction` tactic also supports user-defined induction principles with\nmultiple targets (aka major premises). This example uses {name}`Nat.mod.inductionOn`, which has the following signature:\n```signature\nNat.mod.inductionOn\n  {motive : Nat → Nat → Sort u}\n  (x y  : Nat)\n  (ind  : ∀ x y, 0 < y ∧ y ≤ x → motive (x - y) y → motive x y)\n  (base : ∀ x y, ¬(0 < y ∧ y ≤ x) → motive x y) :\n  motive x y\n```\n\n\n```lean\nexample (x : Nat) {y : Nat} (h : y > 0) : x % y < y := by\n  induction x, y using Nat.mod.inductionOn with\n  | ind x y h₁ ih =>\n    rw [Nat.mod_eq_sub_mod h₁.2]\n    exact ih h\n  | base x y h₁ =>\n    have : ¬ 0 < y ∨ ¬ y ≤ x := Iff.mp (Decidable.not_and_iff_or_not ..) h₁\n    match this with\n    | Or.inl h₁ => exact absurd h h₁\n    | Or.inr h₁ =>\n      have hgt : y > x := Nat.gt_of_not_le h₁\n      rw [← Nat.mod_eq_of_lt hgt] at hgt\n      assumption\n```\n\nYou can use the {kw}`match` notation in tactics too:\n\n```lean\nexample : p ∨ q → q ∨ p := by\n  intro h\n  match h with\n  | Or.inl _  => apply Or.inr; assumption\n  | Or.inr h2 => apply Or.inl; exact h2\n```\n\n:::leanFirst\nAs a convenience, pattern-matching has been integrated into tactics such as {leanRef}`intro` and {leanRef}`funext`.\n\n```lean\nexample : s ∧ q ∧ r → p ∧ r → q ∧ p := by\n  intro ⟨_, ⟨hq, _⟩⟩ ⟨hp, _⟩\n  exact ⟨hq, hp⟩\n\nexample :\n    (fun (x : Nat × Nat) (y : Nat × Nat) => x.1 + y.2)\n    =\n    (fun (x : Nat × Nat) (z : Nat × Nat) => z.2 + x.1) := by\n  funext (a, b) (c, d)\n  show a + d = d + a\n  rw [Nat.add_comm]\n```\n:::\n\n:::leanFirst\nWe close this section with one last tactic that is designed to\nfacilitate working with inductive types, namely, the {leanRef}`injection`\ntactic. By design, the elements of an inductive type are freely\ngenerated, which is to say, the constructors are injective and have\ndisjoint ranges. The {leanRef}`injection` tactic is designed to make use of\nthis fact:\n\n```lean\nopen Nat\n\nexample (m n k : Nat) (h : succ (succ m) = succ (succ n))\n        : n + k = m + k := by\n  injection h with h'\n  injection h' with h''\n  rw [h'']\n```\n:::\n\nThe first instance of the tactic adds {leanRef}`h' : m.succ = n.succ` to the\ncontext, and the second adds {leanRef}`h'' : m = n`.\n\nThe {leanRef}`injection` tactic also detects contradictions that arise when different constructors\nare set equal to one another, and uses them to close the goal.\n\n```lean\nopen Nat\n\nexample (m n : Nat) (h : succ m = 0) : n = n + 7 := by\n  injection h\n\nexample (m n : Nat) (h : succ m = 0) : n = n + 7 := by\n  contradiction\n\nexample (h : 7 = 4) : False := by\n  contradiction\n```\n\nAs the second example shows, the {leanRef}`contradiction` tactic also detects contradictions of this form.\n\n# Inductive Families\n%%%\ntag := \"inductive-families\"\n%%%\n\nWe are almost done describing the full range of inductive definitions\naccepted by Lean. So far, you have seen that Lean allows you to\nintroduce inductive types with any number of recursive\nconstructors. In fact, a single inductive definition can introduce an\nindexed _family_ of inductive types, in a manner we now describe.\n\nAn inductive family is an indexed family of types defined by a\nsimultaneous induction of the following form:\n\n```\ninductive foo : ... → Sort u where\n  | constructor₁ : ... → foo ...\n  | constructor₂ : ... → foo ...\n  ...\n  | constructorₙ : ... → foo ...\n```\n::::setup\n```\nuniverse u\n```\n\n:::leanFirst\nIn contrast to an ordinary inductive definition, which constructs an\nelement of some {leanRef}`Sort u`, the more general version constructs a\nfunction {lit}`... → `{lean}`Sort u`, where “{lit}`...`” denotes a sequence of\nargument types, also known as _indices_. Each constructor then\nconstructs an element of some member of the family. One example is the\ndefinition of {leanRef}`Vect α n`, the type of vectors of elements of {leanRef}`α`\nof length {leanRef}`n`:\n\n```lean\ninductive Vect (α : Type u) : Nat → Type u where\n  | nil  : Vect α 0\n  | cons : α → {n : Nat} → Vect α n → Vect α (n + 1)\n```\n:::\n::::\n\nNotice that the {leanRef}`cons` constructor takes an element of\n{leanRef}`Vect α n` and returns an element of {leanRef}`Vect α (n + 1)`, thereby using an\nelement of one member of the family to build an element of another.\n\nA more exotic example is given by the definition of the equality type in Lean:\n\n```lean\nnamespace Hidden\n------\ninductive Eq {α : Sort u} (a : α) : α → Prop where\n  | refl : Eq a a\n-------\nend Hidden\n```\n\n:::setup\n```\nvariable (α : Sort u) (a : α) (x : α)\n```\n\nFor each fixed {leanRef}`α : Sort u` and {leanRef}`a : α`, this definition\nconstructs a family of types {lean}`Eq a x`, indexed by {lean}`x : α`.\nNotably, however, there is only one constructor, {leanRef}`refl`, which\nis an element of {leanRef}`Eq a a`.\nIntuitively, the only way to construct a proof of {lean}`Eq a x`\nis to use reflexivity, in the case where {lean}`x` is {lean}`a`.\nNote that {lean}`Eq a a` is the only inhabited type in the family of types\n{lean}`Eq a x`. The elimination principle generated by Lean is as follows:\n:::\n\n```lean\nset_option pp.proofs true\n--------\nuniverse u v\n\n#check (@Eq.rec : {α : Sort u} → {a : α} →\n                  {motive : (x : α) → a = x → Sort v} →\n                  motive a rfl →\n                  {b : α} → (h : a = b) → motive b h)\n```\n\nIt is a remarkable fact that all the basic axioms for equality follow\nfrom the constructor, {leanRef}`refl`, and the eliminator, {leanRef}`Eq.rec`. The\ndefinition of equality is atypical, however; see the discussion in {ref \"axiomatic-details\"}[Axiomatic Details].\n\nThe recursor {leanRef}`Eq.rec` is also used to define substitution:\n\n```lean\nnamespace Hidden\n------\ntheorem subst {α : Type u} {a b : α} {p : α → Prop}\n    (h₁ : Eq a b) (h₂ : p a) : p b :=\n  Eq.rec (motive := fun x _ => p x) h₂ h₁\n-------\nend Hidden\n```\n\nYou can also define {leanRef}`subst` using {kw}`match`.\n\n```lean\nnamespace Hidden\n------\ntheorem subst {α : Type u} {a b : α} {p : α → Prop}\n    (h₁ : Eq a b) (h₂ : p a) : p b :=\n  match h₁ with\n  | rfl => h₂\n-------\nend Hidden\n```\n\nActually, Lean compiles the {kw}`match` expressions using a definition based on generated helpers\nsuch as {name}`Eq.casesOn` and {name}`Eq.ndrec`, which are themselves defined using {leanRef}`Eq.rec`.\n\n```lean\nnamespace Hidden\n------\ntheorem subst {α : Type u} {a b : α} {p : α → Prop}\n    (h₁ : a = b) (h₂ : p a) : p b :=\n  match h₁ with\n  | rfl => h₂\n\nset_option pp.all true\n#print subst\n\n#print subst.match_1_1\n\n#print Eq.casesOn\n\n#print Eq.ndrec\n-------\nend Hidden\n```\n\nUsing the recursor or {kw}`match` with {leanRef}`h₁ : a = b`, we may assume {leanRef}`a` and {leanRef}`b` are the same,\nin which case, {leanRef}`p b` and {leanRef}`p a` are the same.\n\n:::leanFirst\nIt is not hard to prove that {leanRef}`Eq` is symmetric and transitive.\nIn the following example, we prove {leanRef}`symm` and leave as exercises the theorems {leanRef}`trans` and {leanRef}`congr` (congruence).\n\n```lean\nnamespace Hidden\n------\nvariable {α β : Type u} {a b c : α}\n\ntheorem symm (h : Eq a b) : Eq b a :=\n  match h with\n  | rfl => rfl\n\ntheorem trans (h₁ : Eq a b) (h₂ : Eq b c) : Eq a c :=\n  sorry\n\ntheorem congr (f : α → β) (h : Eq a b) : Eq (f a) (f b) :=\n  sorry\n-------\nend Hidden\n```\n:::\n\nIn the type theory literature, there are further generalizations of\ninductive definitions, for example, the principles of\n_induction-recursion_ and _induction-induction_. These are not\nsupported by Lean.\n\n# Axiomatic Details\n%%%\ntag := \"axiomatic-details\"\n%%%\n\nWe have described inductive types and their syntax through\nexamples. This section provides additional information for those\ninterested in the axiomatic foundations.\n\nWe have seen that the constructor to an inductive type takes\n_parameters_—intuitively, the arguments that remain fixed\nthroughout the inductive construction—and _indices_, the arguments\nparameterizing the family of types that is simultaneously under\nconstruction. Each constructor should have a type, where the\nargument types are built up from previously defined types, the\nparameter and index types, and the inductive family currently being\ndefined. The requirement is that if the latter is present at all, it\noccurs only _strictly positively_. This means simply that any argument\nto the constructor in which it occurs is a dependent arrow type in which the\ninductive type under definition occurs only as the resulting type,\nwhere the indices are given in terms of constants and previous\narguments.\n\nSince an inductive type lives in {leanRef}`Sort u` for some {leanRef}`u`, it is\nreasonable to ask _which_ universe levels {leanRef}`u` can be instantiated\nto. Each constructor {lit}`c` in the definition of a family {lit}`C` of\ninductive types is of the form\n\n```\n  c : (a : α) → (b : β[a]) → C a p[a,b]\n```\n\nwhere {lit}`a` is a sequence of data type parameters, {lit}`b` is the\nsequence of arguments to the constructors, and {lit}`p[a, b]` are the\nindices, which determine which element of the inductive family the\nconstruction inhabits. (Note that this description is somewhat\nmisleading, in that the arguments to the constructor can appear in any\norder as long as the dependencies make sense.) The constraints on the\nuniverse level of {lit}`C` fall into two cases, depending on whether or\nnot the inductive type is specified to land in {lean}`Prop` (that is,\n{lean}`Sort 0`).\n\nLet us first consider the case where the inductive type is _not_\nspecified to land in {lean}`Prop`. Then the universe level {leanRef}`u` is\nconstrained to satisfy the following:\n\n> For each constructor {lit}`c` as above, and each {lit}`βk[a]` in the sequence {lit}`β[a]`, if {lit}`βk[a] : Sort v`, we have {leanRef}`u` ≥ {leanRef}`v`.\n\nIn other words, the universe level {leanRef}`u` is required to be at least as\nlarge as the universe level of each type that represents an argument\nto a constructor.\n\nWhen the inductive type is specified to land in {lean}`Prop`, there are no\nconstraints on the universe levels of the constructor arguments. But\nthese universe levels do have a bearing on the elimination\nrule. Generally speaking, for an inductive type in {lean}`Prop`, the\nmotive of the elimination rule is required to be in {lean}`Prop`.\n\nThere is an exception to this last rule: we are allowed to eliminate\nfrom an inductively defined {lean}`Prop` to an arbitrary {leanRef}`Sort` when\nthere is only one constructor and each constructor argument is either\nin {lean}`Prop` or an index. The intuition is that in this case the\nelimination does not make use of any information that is not already\ngiven by the mere fact that the type of argument is inhabited. This\nspecial case is known as _singleton elimination_.\n\nWe have already seen singleton elimination at play in applications of\n{name}`Eq.rec`, the eliminator for the inductively defined equality\ntype. We can use an element {leanRef}`h : Eq a b` to cast an element\n{leanRef}`h₂ : p a` to {leanRef}`p b` even when {leanRef}`p a` and {leanRef}`p b` are arbitrary types,\nbecause the cast does not produce new data; it only reinterprets the\ndata we already have. Singleton elimination is also used with\nheterogeneous equality and well-founded recursion, which will be\ndiscussed in a the chapter on {ref \"well-founded-recursion-and-induction\"}[induction and recursion].\n\n# Mutual and Nested Inductive Types\n%%%\ntag := \"mutual-and-nested-inductive-types\"\n%%%\n\nWe now consider two generalizations of inductive types that are often\nuseful, which Lean supports by “compiling” them down to the more\nprimitive kinds of inductive types described above. In other words,\nLean parses the more general definitions, defines auxiliary inductive\ntypes based on them, and then uses the auxiliary types to define the\nones we really want. Lean's equation compiler, described in the next\nchapter, is needed to make use of these types\neffectively. Nonetheless, it makes sense to describe the declarations\nhere, because they are straightforward variations on ordinary\ninductive definitions.\n\nFirst, Lean supports _mutually defined_ inductive types. The idea is\nthat we can define two (or more) inductive types at the same time,\nwhere each one refers to the other(s).\n\n```lean\nmutual\n  inductive Even : Nat → Prop where\n    | even_zero : Even 0\n    | even_succ : (n : Nat) → Odd n → Even (n + 1)\n\n  inductive Odd : Nat → Prop where\n    | odd_succ : (n : Nat) → Even n → Odd (n + 1)\nend\n```\n\nIn this example, two types are defined simultaneously: a natural\nnumber {leanRef}`n` is {leanRef}`Even` if it is {lean}`0` or one more than an {leanRef}`Odd`\nnumber, and {leanRef}`Odd` if it is one more than an {leanRef}`Even` number.\nIn the exercises below, you are asked to spell out the details.\n\n:::leanFirst\nA mutual inductive definition can also be used to define the notation\nof a finite tree with nodes labelled by elements of {leanRef (in:=\"Tree (α\")}`α`:\n\n```lean\nmutual\n    inductive Tree (α : Type u) where\n      | node : α → TreeList α → Tree α\n\n    inductive TreeList (α : Type u) where\n      | nil  : TreeList α\n      | cons : Tree α → TreeList α → TreeList α\nend\n```\n:::\n\nWith this definition, one can construct an element of {leanRef}`Tree α` by\ngiving an element of {leanRef}`α` together with a list of subtrees, possibly\nempty. The list of subtrees is represented by the type {leanRef}`TreeList α`,\nwhich is defined to be either the empty list, {leanRef}`nil`, or the\n{leanRef}`cons` of a tree and an element of {leanRef}`TreeList α`.\n\n:::leanFirst\nThis definition is inconvenient to work with, however. It would be\nmuch nicer if the list of subtrees were given by the type\n{leanRef}`List (Tree α)`, especially since Lean's library contains a number of functions\nand theorems for working with lists. One can show that the type\n{leanRef}`TreeList α` is _isomorphic_ to {leanRef}`List (Tree α)`, but translating\nresults back and forth along this isomorphism is tedious.\n\nIn fact, Lean allows us to define the inductive type we really want:\n\n```lean\ninductive Tree (α : Type u) where\n  | mk : α → List (Tree α) → Tree α\n```\n:::\n\nThis is known as a _nested_ inductive type. It falls outside the\nstrict specification of an inductive type given in the last section\nbecause {leanRef}`Tree` does not occur strictly positively among the\narguments to {leanRef}`mk`, but, rather, nested inside the {leanRef}`List` type\nconstructor. Lean then automatically builds the\nisomorphism between {leanRef}`TreeList α` and {leanRef}`List (Tree α)` in its kernel,\nand defines the constructors for {leanRef}`Tree` in terms of the isomorphism.\n\n# Exercises\n%%%\ntag := none\n%%%\n\n```setup\nopen Nat\nvariable {n m : Nat}\ndef length : List α → Nat\n  | [] => 0\n  | _ :: xs => length xs + 1\ndef reverse : List α → List α := go []\nwhere\n  go (acc : List α) : List α → List α\n    | [] => acc\n    | x :: xs => go (x :: acc) xs\nvariable {xs ys : List α}\n\ninductive Term where\n  | const (n : Nat)\n  | var (n : Nat)\n  | plus (s t : Term)\n  | times (s t : Term)\nopen Term\nvariable {s t : Term}\n\n```\n\n1. Try defining other operations on the natural numbers, such as\n   multiplication, the predecessor function (with {lean}`pred 0 = 0`),\n   truncated subtraction (with {lean}`n - m = 0` when {lean}`m` is greater\n   than or equal to {lean}`n`), and exponentiation. Then try proving some\n   of their basic properties, building on the theorems we have already\n   proved.\n\n   Since many of these are already defined in Lean's core library, you\n   should work within a namespace named {lit}`Hidden`, or something like\n   that, in order to avoid name clashes.\n\n2. Define some operations on lists, like a {lean}`length` function or the\n   {lean}`reverse` function. Prove some properties, such as the following:\n\n   a. {lean}`length (xs ++ ys) = length xs + length ys`\n\n   b. {lean}`length (reverse xs) = length xs`\n\n   c. {lean}`reverse (reverse xs) = xs`\n\n3. Define an inductive data type consisting of terms built up from the following constructors:\n\n   - {lean}`const n`, a constant denoting the natural number {lean}`n`\n   - {lean}`var n`, a variable, numbered {lean}`n`\n   - {lean}`plus s t`, denoting the sum of {leanRef}`s` and {leanRef}`t`\n   - {lean}`times s t`, denoting the product of {leanRef}`s` and {leanRef}`t`\n\n   Recursively define a function that evaluates any such term with respect to an assignment of values to the variables.\n\n4. Similarly, define the type of propositional formulas, as well as\n   functions on the type of such formulas: an evaluation function,\n   functions that measure the complexity of a formula, and a function\n   that substitutes another formula for a given variable.\n"
  },
  {
    "path": "book/TPiL/InteractingWithLean.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre Manual\nopen TPiL\n\n#doc (Manual) \"Interacting with Lean\" =>\n\nYou are now familiar with the fundamentals of dependent type theory,\nboth as a language for defining mathematical objects and a language\nfor constructing proofs. The one thing you are missing is a mechanism\nfor defining new data types. We will fill this gap in the next\nchapter, which introduces the notion of an _inductive data type_. But\nfirst, in this chapter, we take a break from the mechanics of type\ntheory to explore some pragmatic aspects of interacting with Lean.\n\nNot all of the information found here will be useful to you right\naway. We recommend skimming this section to get a sense of Lean's\nfeatures, and then returning to it as necessary.\n\n# Messages\n%%%\ntag := \"messages\"\n%%%\n\nLean produces three kinds of messages:\n\n: Errors\n\n  Errors are produced when an inconsistency in the code means that it can't\n  be processed. Examples include syntax errors (e.g. a missing {lit}`)`) and type\n  errors such as attempting to add a natural number to a function.\n\n: Warnings\n\n  Warnings describe potential problems with the code, such as the presence of {lean}`sorry`.\n  Unlike with errors, the code is not meaningless; however, warnings deserve careful attention.\n\n: Information\n\n  Information doesn't indicate any problem with the code, and includes output from commands such as {kw}`#check` and {kw}`#eval`.\n\nLean can check that a command produces the expected messages. If the messages match,\nthen any errors are disregarded; this can be used to ensure that the right errors occur.\nIf they don't, an error is produced. You can use the {kw}`#guard_msgs` command to indicate\nwhich messages are expected.\n\nHere is an example:\n```lean\n/--\nerror: Type mismatch\n  \"Not a number\"\nhas type\n  String\nbut is expected to have type\n  Nat\n-/\n#guard_msgs in\ndef x : Nat := \"Not a number\"\n```\n\n:::leanFirst\nIncluding a message category in parentheses after {leanRef}`#guard_msgs` causes it to check only\nthe specified category, letting others through. In this example, {leanRef}`#eval` issues an error\ndue to the presence of {lean}`sorry`, but the warning that is always issued for {lean}`sorry` is displayed\nas usual:\n```lean\n/--\nerror: aborting evaluation since the expression depends on the\n'sorry' axiom, which can lead to runtime instability and crashes.\n\nTo attempt to evaluate anyway despite the risks, use the '#eval!'\ncommand.\n-/\n#guard_msgs(error) in\n#eval (sorry : Nat)\n```\n:::\n\nWithout the configuration, both messages are captured:\n```lean\n/--\nerror: aborting evaluation since the expression depends on the\n'sorry' axiom, which can lead to runtime instability and crashes.\n\nTo attempt to evaluate anyway despite the risks, use the '#eval!'\ncommand.\n---\nwarning: declaration uses 'sorry'\n-/\n#guard_msgs in\n#eval (sorry : Nat)\n```\n\nSome examples in this book use {leanRef}`#guard_msgs` to indicate expected errors.\n\n# Importing Files\n%%%\ntag := \"importing-files\"\n%%%\n\nThe goal of Lean's front end is to interpret user input, construct\nformal expressions, and check that they are well-formed and type-correct.\nLean also supports the use of various editors, which provide\ncontinuous checking and feedback. More information can be found on the\nLean [documentation pages](https://lean-lang.org/documentation/).\n\nThe definitions and theorems in Lean's standard library are spread\nacross multiple files. Users may also wish to make use of additional\nlibraries, or develop their own projects across multiple files. When\nLean starts, it automatically imports the contents of the library\n{lit}`Init` folder, which includes a number of fundamental definitions\nand constructions. As a result, most of the examples we present here\nwork “out of the box.”\n\nIf you want to use additional files, however, they need to be imported\nmanually, via an {kw}`import` statement at the beginning of a file. The\ncommand\n\n> {kw}`import`{lit}` Bar.Baz.Blah`\n\n\nimports the file {lit}`Bar/Baz/Blah.olean`, where the descriptions are\ninterpreted relative to the Lean _search path_. Information as to how\nthe search path is determined can be found on the\n[documentation pages](https://lean-lang.org/documentation/).\nBy default, it includes the standard library directory, and (in some contexts)\nthe root of the user's local project.\n\nImporting is transitive. In other words, if you import {lit}`Foo` and {lit}`Foo` imports {lit}`Bar`,\nthen you also have access to the contents of {lit}`Bar`, and do not need to import it explicitly.\n\n# More on Sections\n%%%\ntag := \"more-on-sections\"\n%%%\n\nLean provides various sectioning mechanisms to help structure a\ntheory. You saw in {ref \"variables-and-sections\"}[Variables and Sections] that the\n{kw}`section` command makes it possible not only to group together\nelements of a theory that go together, but also to declare variables\nthat are inserted as arguments to theorems and definitions, as\nnecessary. Remember that the point of the {kw}`variable` command is to\ndeclare variables for use in theorems, as in the following example:\n\n```lean\nsection\nvariable (x y : Nat)\n\ndef double := x + x\n\n#check double y\n\n#check double (2 * x)\n\nattribute [local simp] Nat.add_assoc Nat.add_comm Nat.add_left_comm\n\ntheorem t1 : double (x + y) = double x + double y := by\n  simp [double]\n\n#check t1 y\n\n#check t1 (2 * x)\n\ntheorem t2 : double (x * y) = double x * y := by\n  simp [double, Nat.add_mul]\n\nend\n```\n\nThe definition of {leanRef}`double` does not have to declare {leanRef}`x` as an\nargument; Lean detects the dependence and inserts it\nautomatically. Similarly, Lean detects the occurrence of {leanRef}`x` in\n{leanRef}`t1` and {leanRef}`t2`, and inserts it automatically there, too.\nNote that {leanRef}`double` does _not_ have {leanRef}`y` as argument. Variables are only\nincluded in declarations where they are actually used.\n\n# More on Namespaces\n%%%\ntag := \"more-on-namespaces\"\n%%%\n\nIn Lean, identifiers are given by hierarchical _names_ like\n{lit}`Foo.Bar.baz`. We saw in {ref \"namespaces\"}[Namespaces] that Lean provides\nmechanisms for working with hierarchical names. The command\n{kw}`namespace`{lit}` Foo` causes {lit}`Foo` to be prepended to the name of each\ndefinition and theorem until {kw}`end`{lit}` Foo` is encountered. The command\n{kw}`open`{lit}` Foo` then creates temporary _aliases_ to definitions and\ntheorems that begin with prefix {lit}`Foo`.\n\n```lean\nnamespace Foo\ndef bar : Nat := 1\nend Foo\n\nopen Foo\n\n#check bar\n\n#check Foo.bar\n```\n\nThe following definition\n\n```lean\ndef Foo.bar : Nat := 1\n```\n\nis treated as a macro, and expands to\n\n```lean\nnamespace Foo\ndef bar : Nat := 1\nend Foo\n```\n\nAlthough the names of theorems and definitions have to be unique, the\naliases that identify them do not. When we open a namespace, an\nidentifier may be ambiguous. Lean tries to use type information to\ndisambiguate the meaning in context, but you can always disambiguate\nby giving the full name. To that end, the string {lit}`_root_` is an\nexplicit description of the empty prefix.\n\n```lean\ndef String.add (a b : String) : String :=\n  a ++ b\n\ndef Bool.add (a b : Bool) : Bool :=\n  a != b\n\ndef add (α β : Type) : Type := Sum α β\n\nopen Bool\nopen String\n\n-- This reference is ambiguous:\n-- #check add\n\n#check String.add           -- String.add (a b : String) : String\n\n#check Bool.add             -- Bool.add (a b : Bool) : Bool\n\n#check _root_.add           -- _root_.add (α β : Type) : Type\n\n#check add \"hello\" \"world\"  -- \"hello\".add \"world\" : String\n\n#check add true false       -- true.add false : Bool\n\n#check add Nat Nat          -- _root_.add Nat Nat : Type\n```\n\nWe can prevent the shorter alias from being created by using the {kw}`protected` keyword:\n\n```lean\nprotected def Foo.bar : Nat := 1\n\nopen Foo\n\n/-- error: Unknown identifier `bar` -/\n#guard_msgs in\n#check bar -- error\n\n#check Foo.bar\n```\n\nThis is often used for names like {name}`Nat.rec` and {name}`Nat.recOn`, to prevent\noverloading of common names.\n\nThe {leanRef}`open` command admits variations. The command\n\n```lean\nopen Nat (succ zero gcd)\n\n#check zero     -- Nat.zero : Nat\n\n#eval gcd 15 6  -- 3\n```\n\ncreates aliases for only the identifiers listed. The command\n\n```lean\nopen Nat hiding succ gcd\n\n#check zero     -- Nat.zero : Nat\n\n/-- error: Unknown identifier `gcd` -/\n#guard_msgs in\n#eval gcd 15 6  -- error\n\n#eval Nat.gcd 15 6  -- 3\n```\n\ncreates aliases for everything in the {lit}`Nat` namespace _except_ the identifiers listed.\n\n```lean\nopen Nat renaming mul → times, add → plus\n\n#eval plus (times 2 2) 3  -- 7\n```\n\ncreates aliases renaming {lean}`Nat.mul` to {leanRef}`times` and {lean}`Nat.add` to {leanRef}`plus`.\n\nIt is sometimes useful to {kw}`export` aliases from one namespace to another, or to the top level. The command\n\n```lean\nexport Nat (succ add sub)\n```\n\ncreates aliases for {leanRef}`succ`, {leanRef}`add`, and {leanRef}`sub` in the current\nnamespace, so that whenever the namespace is open, these aliases are\navailable. If this command is used outside a namespace, the aliases\nare exported to the top level.\n\n# Attributes\n%%%\ntag := \"attributes\"\n%%%\n\nThe main function of Lean is to translate user input to formal\nexpressions that are checked by the kernel for correctness and then\nstored in the environment for later use. But some commands have other\neffects on the environment, either assigning attributes to objects in\nthe environment, defining notation, or declaring instances of type\nclasses, as described in the chapter on {ref \"type-classes\"}[type classes]. Most of\nthese commands have global effects, which is to say, they remain\nin effect not only in the current file, but also in any file that\nimports it. However, such commands often support the {kw}`local` modifier,\nwhich indicates that they only have effect until\nthe current {kw}`section` or {leanRef}`namespace` is closed, or until the end\nof the current file.\n\nIn {ref \"using-the-simplifier\"}[Using the Simplifier],\nwe saw that theorems can be annotated with the {attr}`[simp]` attribute,\nwhich makes them available for use by the simplifier.\nThe following example defines the prefix relation on lists,\nproves that this relation is reflexive, and assigns the {attr}`[simp]` attribute to that theorem.\n\n```lean\ndef isPrefix (l₁ : List α) (l₂ : List α) : Prop :=\n  ∃ t, l₁ ++ t = l₂\n\n@[simp] theorem List.isPrefix_self (as : List α) : isPrefix as as :=\n  ⟨[], by simp⟩\n\nexample : isPrefix [1, 2, 3] [1, 2, 3] := by\n  simp\n```\n\nThe simplifier then proves {leanRef}`isPrefix [1, 2, 3] [1, 2, 3]` by rewriting it to {lean}`True`.\n\nOne can also assign the attribute any time after the definition takes place:\n\n```lean\ndef isPrefix (l₁ : List α) (l₂ : List α) : Prop :=\n ∃ t, l₁ ++ t = l₂\n------\ntheorem List.isPrefix_self (as : List α) : isPrefix as as :=\n  ⟨[], by simp⟩\n\nattribute [simp] List.isPrefix_self\n```\n\nIn all these cases, the attribute remains in effect in any file that\nimports the one in which the declaration occurs. Adding the {kw}`local`\nmodifier restricts the scope:\n\n```lean\ndef isPrefix (l₁ : List α) (l₂ : List α) : Prop :=\n ∃ t, l₁ ++ t = l₂\n------\nsection\n\ntheorem List.isPrefix_self (as : List α) : isPrefix as as :=\n  ⟨[], by simp⟩\n\nattribute [local simp] List.isPrefix_self\n\nexample : isPrefix [1, 2, 3] [1, 2, 3] := by\n  simp\n\nend\n\n/-- error: `simp` made no progress -/\n#guard_msgs in\nexample : isPrefix [1, 2, 3] [1, 2, 3] := by\n  simp\n```\n\n:::leanFirst\nFor another example, we can use the {kw}`instance` command to assign the\nnotation {lit}`≤` to the {leanRef}`isPrefix` relation. That command, which will\nbe explained in the chapter on {ref \"type-classes\"}[type classes], works by\nassigning an {attr}`[instance]` attribute to the associated definition.\n\n```lean\ndef isPrefix (l₁ : List α) (l₂ : List α) : Prop :=\n  ∃ t, l₁ ++ t = l₂\n\ninstance : LE (List α) where\n  le := isPrefix\n\ntheorem List.isPrefix_self (as : List α) : as ≤ as :=\n  ⟨[], by simp⟩\n```\n\n:::\n\nThat assignment can also be made local:\n\n```lean\ndef isPrefix (l₁ : List α) (l₂ : List α) : Prop :=\n  ∃ t, l₁ ++ t = l₂\n------\ndef instLe : LE (List α) :=\n  { le := isPrefix }\n\nsection\nattribute [local instance] instLe\n\nexample (as : List α) : as ≤ as :=\n  ⟨[], by simp⟩\n\nend\n\n/--\nerror: failed to synthesize\n  LE (List α)\n\nHint: Additional diagnostic information may be available using the\n`set_option diagnostics true` command.\n-/\n#guard_msgs in\nexample (as : List α) : as ≤ as :=\n  ⟨[], by simp⟩\n```\n\nIn {ref \"notation\"}[Notation] below, we will discuss Lean's\nmechanisms for defining notation, and see that they also support the\n{kw}`local` modifier. However, in {ref \"setting-options\"}[Setting Options], we will\ndiscuss Lean's mechanisms for setting options, which does _not_ follow\nthis pattern: options can _only_ be set locally, which is to say,\ntheir scope is always restricted to the current section or current\nfile.\n\n# More on Implicit Arguments\n%%%\ntag := \"more-on-implicit-arguments\"\n%%%\n\n:::setup\n\n```\nvariable (α : Type u) (β : α → Type v) (t : {x : α} → β x)\n```\n\n\nIn {ref \"implicit-arguments\"}[Implicit Arguments],\nwe saw that if Lean displays the type\nof a term {lean}`t` as {lean}`{x : α} → β x`, then the curly brackets\nindicate that {leanRef}`x` has been marked as an _implicit argument_ to\n{lean}`t`. This means that whenever you write {lean}`t`, a placeholder, or\n“hole,” is inserted, so that {lean}`t` is replaced by {lean}`@t _`. If you\ndon't want that to happen, you have to write {lean}`@t` instead.\n:::\n\n\n:::setup\n```\ndef f (x : Nat) {y : Nat} (z : Nat) : Nat := x + y + z\n-- Equivalent:\nexample := f 7\nexample := @f 7 _\n```\n\nNotice that implicit arguments are inserted eagerly. Suppose we define\na function {lean}`f : (x : Nat) → {y : Nat} → (z : Nat) → Nat`.\nThen, when we write the expression {lean}`f 7` without further\narguments, it is parsed as {lean}`@f 7 _`.\n:::\n\n:::setup\n```\ndef f (x : Nat) {{y : Nat}} (z : Nat) : Nat := x + y + z\n-- Just f 7\nexample := f 7\n-- These are equivalent:\nexample := @f 7 _ 3\nexample := f 7 3\n-- Alternative syntax:\ndef f' (x : Nat) ⦃y : Nat⦄ (z : Nat) : Nat := x + y + z\n```\n\nLean offers a weaker annotation which specifies that a placeholder should only be added\n_before_ a subsequent explicit argument. It can be written with double braces, so the type of {lean}`f` would be\n{lean}`f : (x : Nat) → {{y : Nat}} → (z : Nat) → Nat`.\nWith this annotation, the expression {lean}`f 7` would be parsed as is, whereas {lean}`f 7 3` would be\nparsed as {lean}`@f 7 _ 3`, just as it would be with the strong annotation.\nThis annotation can also be written as {lit}`⦃y : Nat⦄`, where the Unicode brackets are entered\nas {kbd}`\\{{` and {kbd}`\\}}`, respectively.\n:::\n\n\nTo illustrate the difference, consider the following example, which\nshows that a reflexive euclidean relation is both symmetric and\ntransitive.\n\n```lean\ndef reflexive {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ (a : α), r a a\n\ndef symmetric {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ {a b : α}, r a b → r b a\n\ndef transitive {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ {a b c : α}, r a b → r b c → r a c\n\ndef Euclidean {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ {a b c : α}, r a b → r a c → r b c\n\ntheorem th1 {α : Type u} {r : α → α → Prop}\n            (reflr : reflexive r) (euclr : Euclidean r)\n            : symmetric r :=\n  fun {a b : α} =>\n  fun (h : r a b) =>\n  show r b a from euclr h (reflr _)\n\ntheorem th2 {α : Type u} {r : α → α → Prop}\n            (symmr : symmetric r) (euclr : Euclidean r)\n            : transitive r :=\n  fun {a b c : α} =>\n  fun (rab : r a b) (rbc : r b c) =>\n  euclr (symmr rab) rbc\n\ntheorem th3 {α : Type u} {r : α → α → Prop}\n            (reflr : reflexive r) (euclr : Euclidean r)\n            : transitive r :=\n th2 (th1 reflr @euclr) @euclr\n\nvariable (r : α → α → Prop)\nvariable (euclr : Euclidean r)\n\n#check euclr\n```\n\nThe results are broken down into small steps: {leanRef}`th1` shows that a\nrelation that is reflexive and euclidean is symmetric, and {leanRef}`th2`\nshows that a relation that is symmetric and euclidean is\ntransitive. Then {leanRef}`th3` combines the two results. But notice that we\nhave to manually disable the implicit arguments in {leanRef}`euclr`, because\notherwise too many implicit arguments are inserted. The problem goes\naway if we use weak implicit arguments:\n\n```lean\ndef reflexive {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ (a : α), r a a\n\ndef symmetric {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ {{a b : α}}, r a b → r b a\n\ndef transitive {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ {{a b c : α}}, r a b → r b c → r a c\n\ndef Euclidean {α : Type u} (r : α → α → Prop) : Prop :=\n  ∀ {{a b c : α}}, r a b → r a c → r b c\n\ntheorem th1 {α : Type u} {r : α → α → Prop}\n            (reflr : reflexive r) (euclr : Euclidean r)\n            : symmetric r :=\n  fun {a b : α} =>\n  fun (h : r a b) =>\n  show r b a from euclr h (reflr _)\n\ntheorem th2 {α : Type u} {r : α → α → Prop}\n            (symmr : symmetric r) (euclr : Euclidean r)\n            : transitive r :=\n  fun {a b c : α} =>\n  fun (rab : r a b) (rbc : r b c) =>\n  euclr (symmr rab) rbc\n\ntheorem th3 {α : Type u} {r : α → α → Prop}\n            (reflr : reflexive r) (euclr : Euclidean r)\n            : transitive r :=\n  th2 (th1 reflr euclr) euclr\n\nvariable (r : α → α → Prop)\nvariable (euclr : Euclidean r)\n\n#check euclr  -- euclr : Euclidean r\n```\n\nThere is a third kind of implicit argument that is denoted with square\nbrackets, {lit}`[` and {lit}`]`. These are used for type classes, as\nexplained in the chapter on {ref \"type-classes\"}[type classes].\n\n# Notation\n%%%\ntag := \"notation\"\n%%%\n\nIdentifiers in Lean can include any alphanumeric characters, including\nGreek characters (other than ∀ , Σ , and λ , which, as we have seen,\nhave a special meaning in the dependent type theory). They can also\ninclude subscripts, which can be entered by typing {kbd}`\\_` followed by\nthe desired subscripted character.\n\nLean's parser is extensible, which is to say, we can define new notation.\n\nLean's syntax can be extended and customized by users at every level,\nranging from basic “mixfix” notations to custom elaborators.  In fact,\nall builtin syntax is parsed and processed using the same mechanisms\nand APIs open to users.  In this section, we will describe and explain\nthe various extension points.\n\nWhile introducing new notations is a relatively rare feature in\nprogramming languages and sometimes even frowned upon because of its\npotential to obscure code, it is an invaluable tool in formalization\nfor expressing established conventions and notations of the respective\nfield succinctly in code.  Going beyond basic notations, Lean's\nability to factor out common boilerplate code into (well-behaved)\nmacros and to embed entire custom domain specific languages (DSLs) to\ntextually encode subproblems efficiently and readably can be of great\nbenefit to both programmers and proof engineers alike.\n\n## Notations and Precedence\n%%%\ntag := \"notations-and-precedence\"\n%%%\n\nThe most basic syntax extension commands allow introducing new (or\noverloading existing) prefix, infix, and postfix operators.\n\n```lean\ninfixl:65   \" + \" => HAdd.hAdd  -- left-associative\ninfix:50    \" = \" => Eq         -- non-associative\ninfixr:80   \" ^ \" => HPow.hPow  -- right-associative\nprefix:100  \"-\"   => Neg.neg\npostfix:max \"⁻¹\"  => Inv.inv\n```\n\nAfter the initial command name describing the operator kind (its\n“{deftech}[fixity]”), we give the _parsing precedence_ of the operator preceded\nby a colon {lit}`:`, then a new or existing token surrounded by double\nquotes (the whitespace is used for pretty printing), then the function\nthis operator should be translated to after the arrow {lit}`=>`.\n\nThe precedence is a natural number describing how “tightly” an\noperator binds to its arguments, encoding the order of operations.  We\ncan make this more precise by looking at the commands the above unfold to:\n\n```lean\nnotation:65 lhs:65 \" + \" rhs:66 => HAdd.hAdd lhs rhs\nnotation:50 lhs:51 \" = \" rhs:51 => Eq lhs rhs\nnotation:80 lhs:81 \" ^ \" rhs:80 => HPow.hPow lhs rhs\nnotation:100 \"-\" arg:100 => Neg.neg arg\n -- `max` is a shorthand for precedence 1024:\nnotation:1024 arg:1024 \"⁻¹\" => Inv.inv arg\n```\n\n:::setup\n```\nvariable {p : Nat} {a b c : α} [Add α] [Pow α α]\n```\nIt turns out that all commands from the first code block are in fact\ncommand _macros_ translating to the more general {leanRef}`notation` command.\nWe will learn about writing such macros below.  Instead of a single\ntoken, the {leanRef}`notation` command accepts a mixed sequence of tokens and\nnamed term placeholders with precedences, which can be referenced on\nthe right-hand side of {lit}`=>` and will be replaced by the respective\nterm parsed at that position. A placeholder with precedence {lean}`p`\naccepts only notations with precedence at least {lean}`p` in that place.\nThus the string {lean}`a + b + c` cannot be parsed as the equivalent of\n{lean}`a + (b + c)` because the right-hand side operand of an {leanRef}`infixl` notation\nhas precedence one greater than the notation itself.  In contrast,\n{leanRef}`infixr` reuses the notation's precedence for the right-hand side\noperand, so {lean}`a ^ b ^ c` _can_ be parsed as {lean}`a ^ (b ^ c)`.  Note that\nif we used {leanRef}`notation` directly to introduce an infix notation like\n:::\n\n```lean\ndef wobble : α → β → γ := sorry\n------\nnotation:65 lhs:65 \" ~ \" rhs:65 => wobble lhs rhs\n```\n\n:::setup\n```\nvariable (a : α) (b : β) (c : γ)\ndef wobble : α → β → γ := sorry\nnotation:65 lhs:65 \" ~ \" rhs:65 => wobble lhs rhs\n\n```\n\nwhere the precedences do not sufficiently determine associativity,\nLean's parser will default to right associativity.  More precisely,\nLean's parser follows a local _longest parse_ rule in the presence of\nambiguous grammars: when parsing the right-hand side of {lit}`a ~` in\n{lean}`a ~ b ~ c`, it will continue parsing as long as possible (as the current\nprecedence allows), not stopping after {leanRef}`b` but parsing {leanRef}`~ c` as well.\nThus the term is equivalent to {lean}`a ~ (b ~ c)`.\n:::\n\nAs mentioned above, the {leanRef}`notation` command allows us to define\narbitrary _mixfix_ syntax freely mixing tokens and placeholders.\n\n```lean\nset_option quotPrecheck false\n------\nnotation:max \"(\" e \")\" => e\nnotation:10 Γ \" ⊢ \" e \" : \" τ => Typing Γ e τ\n```\n\nPlaceholders without precedence default to {lit}`0`, i.e. they accept notations of any precedence in their place.\nIf two notations overlap, we again apply the longest parse rule:\n\n```lean\nnotation:65 a \" + \" b:66 \" + \" c:66 => a + b - c\n#eval 1 + 2 + 3  -- 0\n```\n\nThe new notation is preferred to the binary notation since the latter,\nbefore chaining, would stop parsing after {leanRef}`1 + 2`.  If there are\nmultiple notations accepting the same longest parse, the choice will\nbe delayed until elaboration, which will fail unless exactly one\noverload is type-correct.\n\n# Coercions\n%%%\ntag := \"coercions\"\n%%%\n\nIn Lean, the type of natural numbers, {lean}`Nat`, is different from the\ntype of integers, {lean}`Int`. But there is a function {lean}`Int.ofNat` that\nembeds the natural numbers in the integers, meaning that we can view\nany natural number as an integer, when needed. Lean has mechanisms to\ndetect and insert _coercions_ of this sort. Coercions can be explicitly\nrequested using the overloaded {lit}`↑` operator.\n\n```lean\nvariable (m n : Nat)\nvariable (i j : Int)\n\n#check i + m      -- i + ↑m : Int\n\n#check i + m + j  -- i + ↑m + j : Int\n\n#check i + m + n  -- i + ↑m + ↑n : Int\n```\n\n# Displaying Information\n%%%\ntag := \"displaying-information\"\n%%%\n\nThere are a number of ways in which you can query Lean for information\nabout its current state and the objects and theorems that are\navailable in the current context. You have already seen two of the\nmost common ones, {kw}`#check` and {kw}`#eval`. Remember that {kw}`#check`\nis often used in conjunction with the {lit}`@` operator, which makes all\nof the arguments to a theorem or definition explicit. In addition, you\ncan use the {kw}`#print` command to get information about any\nidentifier. If the identifier denotes a definition or theorem, Lean\nprints the type of the symbol, and its definition. If it is a constant\nor an axiom, Lean indicates that fact, and shows the type.\n\n```lean\n-- examples with equality\n#check Eq\n\n#check @Eq\n\n#check Eq.symm\n\n#check @Eq.symm\n\n#print Eq.symm\n\n-- examples with And\n#check And\n\n#check And.intro\n\n#check @And.intro\n\n-- a user-defined function\ndef foo {α : Type u} (x : α) : α := x\n\n#check foo\n\n#check @foo\n\n#print foo\n```\n\n# Setting Options\n%%%\ntag := \"setting-options\"\n%%%\n\nLean maintains a number of internal variables that can be set by users\nto control its behavior. The syntax for doing so is as follows:\n\n\n{kw}`set_option`{lit}` <name> <value>`\n\n\nOne very useful family of options controls the way Lean's _pretty printer_ displays terms. The following options take an input of true or false:\n\n```\npp.explicit  : display implicit arguments\npp.universes : display hidden universe parameters\npp.notation  : display output using defined notations\n```\n\nAs an example, the following settings yield much longer output:\n\n```lean\nset_option pp.explicit true\nset_option pp.universes true\nset_option pp.notation false\n\n#check 2 + 2 = 4\n\n#reduce (fun x => x + 2) = (fun x => x + 3)\n\n#check (fun x => x + 1) 1\n```\n\nThe command {leanCommand}`set_option pp.all true` carries out these settings all\nat once, whereas {leanCommand}`set_option pp.all false` reverts to the previous\nvalues. Pretty printing additional information is often very useful\nwhen you are debugging a proof, or trying to understand a cryptic\nerror message. Too much information can be overwhelming, though, and\nLean's defaults are generally sufficient for ordinary interactions.\n\n:::comment\n```\n<!--\n# Elaboration Hints\n\nWhen you ask Lean to process an expression like `λ x y z, f (x + y) z`, you are leaving information implicit. For example, the types of `x`, `y`, and `z` have to be inferred from the context, the notation `+` may be overloaded, and there may be implicit arguments to `f` that need to be filled in as well. Moreover, we will see in :numref:`Chapter %s <type_classes>` that some implicit arguments are synthesized by a process known as _type class resolution_. And we have also already seen in the last chapter that some parts of an expression can be constructed by the tactic framework.\n\nInferring some implicit arguments is straightforward. For example, suppose a function `f` has type `Π {α : Type*}, α → α → α` and Lean is trying to parse the expression `f n`, where `n` can be inferred to have type `nat`. Then it is clear that the implicit argument `α` has to be `nat`. However, some inference problems are _higher order_. For example, the substitution operation for equality, `eq.subst`, has the following type:\n\n.. code-block:: text\n\n    eq.subst : ∀ {α : Sort u} {p : α → Prop} {a b : α},\n                 a = b → p a → p b\n\nNow suppose we are given `a b : ℕ` and `h₁ : a = b` and `h₂ : a * b > a`. Then, in the expression `eq.subst h₁ h₂`, `P` could be any of the following:\n\n-  `λ x, x * b > x`\n-  `λ x, x * b > a`\n-  `λ x, a * b > x`\n-  `λ x, a * b > a`\n\nIn other words, our intent may be to replace either the first or second `a` in `h₂`, or both, or neither. Similar ambiguities arise in inferring induction predicates, or inferring function arguments. Even second-order unification is known to be undecidable. Lean therefore relies on heuristics to fill in such arguments, and when it fails to guess the right ones, they need to be provided explicitly.\n\nTo make matters worse, sometimes definitions need to be unfolded, and sometimes expressions need to be reduced according to the computational rules of the underlying logical framework. Once again, Lean has to rely on heuristics to determine what to unfold or reduce, and when.\n\nThere are attributes, however, that can be used to provide hints to the elaborator. One class of attributes determines how eagerly definitions are unfolded: constants can be marked with the attribute `[reducible]`, `[semireducible]`, or `[irreducible]`. Definitions are marked `[semireducible]` by default. A definition with the `[reducible]` attribute is unfolded eagerly; if you think of a definition as serving as an abbreviation, this attribute would be appropriate. The elaborator avoids unfolding definitions with the `[irreducible]` attribute. Theorems are marked `[irreducible]` by default, because typically proofs are not relevant to the elaboration process.\n\nIt is worth emphasizing that these attributes are only hints to the elaborator. When checking an elaborated term for correctness, Lean's kernel will unfold whatever definitions it needs to unfold. As with other attributes, the ones above can be assigned with the `local` modifier, so that they are in effect only in the current section or file.\n\nLean also has a family of attributes that control the elaboration strategy. A definition or theorem can be marked `[elab_with_expected_type]`, `[elab_simple]`. or `[elab_as_eliminator]`. When applied to a definition `f`, these bear on elaboration of an expression `f a b c ...` in which `f` is applied to arguments. With the default attribute, `[elab_with_expected_type]`, the arguments `a`, `b`, `c`, ... are elaborating using information about their expected type, inferred from `f` and the previous arguments. In contrast, with `[elab_simple]`, the arguments are elaborated from left to right without propagating information about their types. The last attribute, `[elab_as_eliminator]`, is commonly used for eliminators like recursors, induction principles, and `eq.subst`. It uses a separate heuristic to infer higher-order parameters. We will consider such operations in more detail in the next chapter.\n\nOnce again, these attributes can be assigned and reassigned after an object is defined, and you can use the `local` modifier to limit their scope. Moreover, using the `@` symbol in front of an identifier in an expression instructs the elaborator to use the `[elab_simple]` strategy; the idea is that, when you provide the tricky parameters explicitly, you want the elaborator to weigh that information heavily. In fact, Lean offers an alternative annotation, `@@`, which leaves parameters before the first higher-order parameter implicit. For example, `@@eq.subst` leaves the type of the equation implicit, but makes the context of the substitution explicit.\n\n-->\n```\n:::\n\n# Using the Library\n%%%\ntag := \"using-the-library\"\n%%%\n\nTo use Lean effectively you will inevitably need to make use of\ndefinitions and theorems in the library. Recall that the {kw}`import`\ncommand at the beginning of a file imports previously compiled results\nfrom other files, and that importing is transitive; if you import\n{lit}`Foo` and {lit}`Foo` imports {lit}`Bar`, then the definitions and theorems\nfrom {lit}`Bar` are available to you as well. But the act of opening a\nnamespace, which provides shorter names, does not carry over. In each\nfile, you need to open the namespaces you wish to use.\n\nIn general, it is important for you to be familiar with the library\nand its contents, so you know what theorems, definitions, notations,\nand resources are available to you. Below we will see that Lean's\neditor modes can also help you find things you need, but studying the\ncontents of the library directly is often unavoidable. Lean's standard\nlibrary can be found online, on GitHub:\n\n- [https://github.com/leanprover/lean4/tree/master/src/Init](https://github.com/leanprover/lean4/tree/master/src/Init)\n\n- [https://github.com/leanprover/lean4/tree/master/src/Std](https://github.com/leanprover/lean4/tree/master/src/Std)\n\n\nYou can see the contents of these directories and files using GitHub's\nbrowser interface. If you have installed Lean on your own computer,\nyou can find the library in the {lit}`lean` folder, and explore it with\nyour file manager. Comment headers at the top of each file provide\nadditional information.\n\nLean's library developers follow general naming guidelines to make it\neasier to guess the name of a theorem you need, or to find it using\ntab completion in editors with a Lean mode that supports this, which\nis discussed in the next section. Identifiers are generally\n{lit}`camelCase`, and types are {lit}`CamelCase`. For theorem names,\nwe rely on descriptive names where the different components are separated\nby {lit}`_`s. Often the name of theorem simply describes the conclusion:\n\n```lean\n#check Nat.succ_ne_zero\n\n#check Nat.zero_add\n\n#check Nat.mul_one\n\n#check Nat.le_of_succ_le_succ\n```\n\n:::setup\n```\nopen Nat\n```\n\nRemember that identifiers in Lean can be organized into hierarchical\nnamespaces. For example, the theorem named {lean}`le_of_succ_le_succ` in the\nnamespace {lit}`Nat` has full name {lean}`Nat.le_of_succ_le_succ`, but the shorter\nname is made available by the command {kw}`open`{lit}` Nat` (for names not marked as\n{kw}`protected`). We will see in the chapters on {ref \"inductive-types\"}[inductive types]\nand {ref \"structures-and-records\"}[structures and records]\nthat defining structures and inductive data types in Lean generates\nassociated operations, and these are stored in\na namespace with the same name as the type under definition. For\nexample, the product type comes with the following operations:\n:::\n\n```lean\n#check @Prod.mk\n\n#check @Prod.fst\n\n#check @Prod.snd\n\n#check @Prod.rec\n```\n\nThe first is used to construct a pair, whereas the next two,\n{leanRef}`Prod.fst` and {leanRef}`Prod.snd`, project the two elements. The last,\n{leanRef}`Prod.rec`, provides another mechanism for defining functions on a\nproduct in terms of a function on the two components. Names like\n{leanRef}`Prod.rec` are _protected_, which means that one has to use the full\nname even when the {lit}`Prod` namespace is open.\n\nWith the propositions as types correspondence, logical connectives are\nalso instances of inductive types, and so we tend to use dot notation\nfor them as well:\n\n```lean\n#check @And.intro\n\n#check @And.casesOn\n\n#check @And.left\n\n#check @And.right\n\n#check @Or.inl\n\n#check @Or.inr\n\n#check @Or.elim\n\n#check @Exists.intro\n\n#check @Exists.elim\n\n#check @Eq.refl\n\n#check @Eq.subst\n```\n\n# Auto Bound Implicit Arguments\n%%%\ntag := \"auto-bound-implicit-arguments\"\n%%%\n\n:::leanFirst\nIn the previous section, we have shown how implicit arguments make functions more convenient to use.\nHowever, functions such as {leanRef}`compose` are still quite verbose to define. Note that the universe\npolymorphic {leanRef}`compose` is even more verbose than the one previously defined.\n\n```lean\nuniverse u v w\n\ndef compose {α : Type u} {β : Type v} {γ : Type w}\n    (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n```\n:::\n\n:::leanFirst\nYou can avoid the {kw}`universe` command by providing the universe parameters when defining {leanRef}`compose`.\n\n```lean\ndef compose.{u, v, w}\n    {α : Type u} {β : Type v} {γ : Type w}\n    (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n```\n:::\n\n::::leanFirst\nLean 4 supports a new feature called _auto bound implicit arguments_. It makes functions such as\n{leanRef}`compose` much more convenient to write. When Lean processes the header of a declaration,\nany unbound identifier is automatically added as an implicit argument. With this feature we can write {leanRef}`compose` as\n\n:::TODO\n\nUpdate and check details\n\n:::\n\n```lean\ndef compose (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n\n#check @compose -- @compose : {β : Sort u_1} → {γ : Sort u_2} → {α : Sort u_3} → (β → γ) → (α → β) → α → γ\n```\n\nNote that Lean inferred a more general type using {lean}`Sort` instead of {leanRef}`Type`.\n::::\n\nAlthough we love this feature and use it extensively when implementing Lean,\nwe realize some users may feel uncomfortable with it. Thus, you can disable it using\nthe command {leanCommand}`set_option autoImplicit false`.\n\n```lean\nset_option autoImplicit false\n\n/--\nerror: Unknown identifier `β`\n---\nerror: Unknown identifier `γ`\n---\nerror: Unknown identifier `α`\n---\nerror: Unknown identifier `β`\n---\nerror: Unknown identifier `α`\n---\nerror: Unknown identifier `γ`\n-/\n#guard_msgs in\ndef compose (g : β → γ) (f : α → β) (x : α) : γ :=\n  g (f x)\n```\n\n# Implicit Lambdas\n%%%\ntag := \"implicit-lambdas\"\n%%%\n\n:::TODO\nUpdate this text after archaeology\n:::\n\n:::leanFirst\nWhen the expected type of an expression is a function that is awaiting implicit\narguments, the elaborator automatically introduces the corresponding lambdas.\nFor example, {leanRef}`pure`'s type states that the first argument is an implicit type\n{leanRef}`α`, but {leanRef}`ReaderT.pure`'s first argument is the reader monad's context type {leanRef}`ρ`.\nIt is automatically surrounded with a {kw}`fun`{lit}` {α} => ...`, which allows the elaborator to\ncorrectly fill in the implicit arguments in the body.\n\n```lean\nvariable (ρ : Type) (m : Type → Type) [Monad m]\n------\ninstance : Monad (ReaderT ρ m) where\n  pure := ReaderT.pure\n  bind := ReaderT.bind\n```\n:::\n\nUsers can disable the implicit lambda feature by using {lit}`@` or writing\na lambda expression with {lit}`{}` or {lit}`[]` binder annotations.  Here are\nfew examples\n\n```lean\nset_option linter.unusedVariables false\nnamespace Ex2\n------\ndef id1 : {α : Type} → α → α :=\n  fun x => x\n\ndef listId : List ({α : Type} → α → α) :=\n  (fun x => x) :: []\n\n-- In this example, implicit lambda introduction has been disabled because\n-- we use `@` before {kw}`fun`\ndef id2 : {α : Type} → α → α :=\n  @fun α (x : α) => id1 x\n\ndef id3 : {α : Type} → α → α :=\n  @fun α x => id1 x\n\ndef id4 : {α : Type} → α → α :=\n  fun x => id1 x\n\n-- In this example, implicit lambda introduction has been disabled\n-- because we used the binder annotation `{...}`\ndef id5 : {α : Type} → α → α :=\n  fun {α} x => id1 x\n------\nend Ex2\n```\n\n# Sugar for Simple Functions\n%%%\ntag := \"sugar-for-simple-functions\"\n%%%\n\nLean includes a notation for describing simple functions using anonymous\nplaceholders rather than {kw}`fun`. When {lit}`·` occurs as part of a term,\nthe nearest enclosing parentheses become a function with the {lit}`·` as its argument.\nIf the parentheses include multiple placeholders without other intervening parentheses,\nthen they are made into arguments from left to right. Here are a few examples:\n\n```lean\nnamespace Ex3\n------\n#check (· + 1) -- fun x => x + 1 : Nat → Nat\n\n#check (2 - ·) -- fun x => 2 - x : Nat → Nat\n\n#eval [1, 2, 3, 4, 5].foldl (· * ·) 1 -- 120\n\ndef f (x y z : Nat) :=\n  x + y + z\n\n#check (f · 1 ·) -- fun x1 x2 => f x1 1 x2 : Nat → Nat → Nat\n\n#eval [(1, 2), (3, 4), (5, 6)].map (·.1) -- [1, 3, 5]\n------\nend Ex3\n```\n\nNested parentheses introduce new functions. In the following example, two different lambda expressions are created:\n\n```lean\n#check (Prod.mk · (· + 1)) -- fun x => (x, fun x => x + 1) : ?m.2 → ?m.2 × (Nat → Nat)\n```\n\n# Named Arguments\n%%%\ntag := \"named-arguments\"\n%%%\n\nNamed arguments enable you to specify an argument for a parameter by\nmatching the argument with its name rather than with its position in\nthe parameter list.  If you don't remember the order of the parameters\nbut know their names, you can send the arguments in any order. You may\nalso provide the value for an implicit parameter when Lean failed to\ninfer it. Named arguments also improve the readability of your code by\nidentifying what each argument represents.\n\n```lean\ndef sum (xs : List Nat) :=\n  xs.foldl (init := 0) (·+·)\n\n#eval sum [1, 2, 3, 4]\n-- 10\n\nexample {a b : Nat} {p : Nat → Nat → Nat → Prop}\n    (h₁ : p a b b) (h₂ : b = a) :\n    p a a b :=\n  Eq.subst (motive := fun x => p a x b) h₂ h₁\n```\n\nIn the following examples, we illustrate the interaction between named\nand default arguments.\n\n```lean\ndef f (x : Nat) (y : Nat := 1) (w : Nat := 2) (z : Nat) :=\n  x + y + w - z\n\nexample (x z : Nat) : f (z := z) x = x + 1 + 2 - z := rfl\n\nexample (x z : Nat) : f x (z := z) = x + 1 + 2 - z := rfl\n\nexample (x y : Nat) : f x y = fun z => x + y + 2 - z := rfl\n\nexample : f = (fun x z => x + 1 + 2 - z) := rfl\n\nexample (x : Nat) : f x = fun z => x + 1 + 2 - z := rfl\n\nexample (y : Nat) : f (y := 5) = fun x z => x + 5 + 2 - z := rfl\n\ndef g {α} [Add α] (a : α) (b? : Option α := none) (c : α) : α :=\n  match b? with\n  | none   => a + c\n  | some b => a + b + c\n\nvariable {α} [Add α]\n\nexample : g = fun (a c : α) => a + c := rfl\n\nexample (x : α) : g (c := x) = fun (a : α) => a + x := rfl\n\nexample (x : α) : g (b? := some x) = fun (a c : α) => a + x + c := rfl\n\nexample (x : α) : g x = fun (c : α) => x + c := rfl\n\nexample (x y : α) : g x y = fun (c : α) => x + y + c := rfl\n```\n\nYou can use {lit}`..` to provide missing explicit arguments as {lit}`_`.\nThis feature combined with named arguments is useful for writing patterns. Here is an example:\n\n```lean\ninductive Term where\n  | var    (name : String)\n  | num    (val : Nat)\n  | app    (fn : Term) (arg : Term)\n  | lambda (name : String) (type : Term) (body : Term)\n\ndef getBinderName : Term → Option String\n  | Term.lambda (name := n) .. => some n\n  | _ => none\n\ndef getBinderType : Term → Option Term\n  | Term.lambda (type := t) .. => some t\n  | _ => none\n```\n\nEllipses are also useful when explicit arguments can be automatically\ninferred by Lean, and we want to avoid a sequence of {lit}`_`s.\n\n```lean\nexample (f : Nat → Nat) (a b c : Nat) : f (a + b + c) = f (a + (b + c)) :=\n  congrArg f (Nat.add_assoc ..)\n```\n"
  },
  {
    "path": "book/TPiL/Intro.lean",
    "content": "import VersoManual\n\nimport TPiL.Examples\n\nopen TPiL\n\nopen Verso.Genre Manual\nopen Verso Code External\n\n#doc (Manual) \"Introduction\" =>\n%%%\ntag := \"Intro\"\nhtmlSplit := .never\n%%%\n\n# Computers and Theorem Proving\n%%%\ntag := \"computers-and-theorem-proving\"\n%%%\n\n_Formal verification_ involves the use of logical and computational methods to establish claims that are expressed in\nprecise mathematical terms. These can include ordinary mathematical theorems, as well as claims that pieces of hardware\nor software, network protocols, and mechanical and hybrid systems meet their specifications. In practice, there is not a\nsharp distinction between verifying a piece of mathematics and verifying the correctness of a system: formal\nverification requires describing hardware and software systems in mathematical terms, at which point establishing claims\nas to their correctness becomes a form of theorem proving. Conversely, the proof of a mathematical theorem may require a\nlengthy computation, in which case verifying the truth of the theorem requires verifying that the computation does what\nit is supposed to do.\n\nThe gold standard for supporting a mathematical claim is to provide a proof, and twentieth-century developments in logic\nshow most if not all conventional proof methods can be reduced to a small set of axioms and rules in any of a number of\nfoundational systems. With this reduction, there are two ways that a computer can help establish a claim: it can help\nfind a proof in the first place, and it can help verify that a purported proof is correct.\n\n_Automated theorem proving_ focuses on the “finding” aspect. Resolution theorem provers, tableau theorem provers, fast\nsatisfiability solvers, and so on provide means of establishing the validity of formulas in propositional and\nfirst-order logic. Other systems provide search procedures and decision procedures for specific languages and domains,\nsuch as linear or nonlinear expressions over the integers or the real numbers. Architectures like SMT (\"satisfiability\nmodulo theories”) combine domain-general search methods with domain-specific procedures. Computer algebra systems and\nspecialized mathematical software packages provide means of carrying out mathematical computations, establishing\nmathematical bounds, or finding mathematical objects. A calculation can be viewed as a proof as well, and these systems,\ntoo, help establish mathematical claims.\n\nAutomated reasoning systems strive for power and efficiency, often at the expense of guaranteed soundness. Such systems\ncan have bugs, and it can be difficult to ensure that the results they deliver are correct. In contrast, _interactive\ntheorem proving_ focuses on the “verification” aspect of theorem proving, requiring that every claim is supported by a\nproof in a suitable axiomatic foundation. This sets a very high standard: every rule of inference and every step of a\ncalculation has to be justified by appealing to prior definitions and theorems, all the way down to basic axioms and\nrules. In fact, most such systems provide fully elaborated “proof objects” that can be communicated to other systems and\nchecked independently. Constructing such proofs typically requires much more input and interaction from users, but it\nallows you to obtain deeper and more complex proofs.\n\nThe _Lean Theorem Prover_ aims to bridge the gap between interactive and automated theorem proving, by situating\nautomated tools and methods in a framework that supports user interaction and the construction of fully specified\naxiomatic proofs. The goal is to support both mathematical reasoning and reasoning about complex systems, and to verify\nclaims in both domains.\n\nLean's underlying logic has a computational interpretation, and Lean can be viewed equally well as a programming\nlanguage. More to the point, it can be viewed as a system for writing programs with a precise semantics, as well as\nreasoning about the functions that the programs compute. Lean also has mechanisms to serve as its own _metaprogramming\nlanguage_, which means that you can implement automation and extend the functionality of Lean using Lean itself. These\naspects of Lean are described in the free online book, [Functional Programming in Lean](https://lean-lang.org/functional_programming_in_lean/), though computational\naspects of the system will make an appearance here.\n\n# About Lean\n%%%\ntag := \"about-lean\"\n%%%\n\nThe _Lean_ project was launched by Leonardo de Moura at Microsoft Research Redmond in 2013. It is an ongoing, long-term\neffort, and much of the potential for automation will be realized only gradually over time. Lean is released under the\n[Apache 2.0 license](https://github.com/leanprover/lean4/blob/master/LICENSE), a permissive open source license that permits others to use and extend the code and\nmathematical libraries freely.\n\nTo install Lean in your computer consider using the [Quickstart](https://lean-lang.org/install/) instructions. The Lean source code, and instructions for building Lean, are available at\n[https://github.com/leanprover/lean4/](https://github.com/leanprover/lean4/).\n\nThis tutorial describes the current version of Lean, known as Lean 4.\n\n# About this Book\n%%%\ntag := \"about-this-book\"\n%%%\n\nThis book is designed to teach you to develop and verify proofs in Lean. Much of the background information you will\nneed in order to do this is not specific to Lean at all. To start with, you will learn the logical system that Lean is\nbased on, a version of _dependent type theory_ that is powerful enough to prove almost any conventional mathematical\ntheorem, and expressive enough to do it in a natural way. More specifically, Lean is based on a version of a system\nknown as the Calculus of Constructions with inductive types. Lean can not only define mathematical objects and express\nmathematical assertions in dependent type theory, but it also can be used as a language for writing proofs.\n\nBecause fully detailed axiomatic proofs are so complicated, the challenge of theorem proving is to have the computer\nfill in as many of the details as possible. You will learn various methods to support this in {ref \"dependent-type-theory\"}[dependent type\ntheory]. For example, term rewriting, and Lean's automated methods for simplifying terms and\nexpressions automatically. Similarly, methods of _elaboration_ and _type inference_, which can be used to support\nflexible forms of algebraic reasoning.\n\nFinally, you will learn about features that are specific to Lean, including the language you use to communicate\nwith the system, and the mechanisms Lean offers for managing complex theories and data.\n\nThroughout the text you will find examples of Lean code like the one below:\n\n```lean\ntheorem and_commutative (p q : Prop) : p ∧ q → q ∧ p :=\n  fun hpq : p ∧ q =>\n  have hp : p := And.left hpq\n  have hq : q := And.right hpq\n  show q ∧ p from And.intro hq hp\n```\n\nNext to every code example in this book, you will see a button that reads “Copy to clipboard”.\nPressing the button copies the example with enough surrounding context to make the code compile correctly.\nYou can paste the example code into [VS Code](https://code.visualstudio.com/) and modify the examples, and Lean will check the results and provide feedback continuously as you type.\nWe recommend running the examples and experimenting with the code on your own as you work through the chapters that follow.\nYou can open this book in VS Code by using the command “Lean 4: Docs: Show Documentation Resources” and selecting “Theorem Proving in Lean 4” in the tab that opens.\n\n# Acknowledgments\n%%%\ntag := \"acknowledgments\"\n%%%\n\nThis tutorial is an open access project maintained on Github. Many people have contributed to the effort, providing\ncorrections, suggestions, examples, and text. We are grateful to Ulrik Buchholz, Kevin Buzzard, Mario Carneiro, Nathan\nCarter, Eduardo Cavazos, Amine Chaieb, Joe Corneli, William DeMeo, Marcus Klaas de Vries, Ben Dyer, Gabriel Ebner,\nAnthony Hart, Simon Hudon, Sean Leather, Assia Mahboubi, Gihan Marasingha, Patrick Massot, Christopher John Mazey,\nSebastian Ullrich, Floris van Doorn, Daniel Velleman, Théo Zimmerman, Paul Chisholm, Chris Lovett, and Siddhartha Gadgil for their contributions.  Please see [lean prover](https://github.com/leanprover/) and [lean community](https://github.com/leanprover-community/) for an up to date list\nof our amazing contributors.\n"
  },
  {
    "path": "book/TPiL/PropositionsAndProofs.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre Manual\nopen TPiL\n\n\n\nset_option pp.rawOnError true\n\n#doc (Manual) \"Propositions and Proofs\" =>\n%%%\ntag := \"propositions-and-proofs\"\nhtmlSplit := .never\n%%%\n\nBy now, you have seen some ways of defining objects and functions in\nLean. In this chapter, we will begin to explain how to write\nmathematical assertions and proofs in the language of dependent type\ntheory as well.\n\n# Propositions as Types\n%%%\ntag := \"propositions-as-types\"\n%%%\n\nOne strategy for proving assertions about objects defined in the\nlanguage of dependent type theory is to layer an assertion language\nand a proof language on top of the definition language. But there is\nno reason to multiply languages in this way: dependent type theory is\nflexible and expressive, and there is no reason we cannot represent\nassertions and proofs in the same general framework.\n\nFor example, we could introduce a new type, {lean}`Prop`, to represent\npropositions, and introduce constructors to build new propositions\nfrom others.\n\n```lean\ndef Implies (p q : Prop) : Prop := p → q\n------\n#check And     -- And (a b : Prop) : Prop\n\n#check Or      -- Or (a b : Prop) : Prop\n\n#check Not     -- Not (a : Prop) : Prop\n\n#check Implies -- Implies (p q : Prop) : Prop\n\nvariable (p q r : Prop)\n\n#check And p q                      -- p ∧ q : Prop\n\n#check Or (And p q) r               -- p ∧ q ∨ r : Prop\n\n#check Implies (And p q) (And q p)  -- Implies (p ∧ q) (q ∧ p) : Prop\n```\n\n\n```setup\nvariable (p : Prop)\nstructure Proof (p : Prop) : Type where\n  proof : p\nvariable (t : p) (q r : Prop)\ndef Implies (p q : Prop) : Prop := p → q\nuniverse u\nvariable (t1 t2 : p) {α : Type u} {β : Type v}\n```\n\nWe could then introduce, for each element {lean}`p : Prop`, another type\n{lean}`Proof p`, for the type of proofs of {lean}`p`.  An “axiom” would be a\nconstant of such a type.\n\n\n```lean\ndef Implies (p q : Prop) : Prop := p → q\nstructure Proof (p : Prop) : Type where\n  proof : p\n------\n#check Proof   -- Proof (p : Prop) : Type\n\naxiom and_commut (p q : Prop) : Proof (Implies (And p q) (And q p))\n\nvariable (p q : Prop)\n\n#check and_commut p q     -- and_commut p q : Proof (Implies (p ∧ q) (q ∧ p))\n```\n\n\n\nIn addition to axioms, however, we would also need rules to build new\nproofs from old ones. For example, in many proof systems for\npropositional logic, we have the rule of _modus ponens_:\n\n> From a proof of {lean}`Implies p q` and a proof of {lean}`p`, we obtain a proof of {lean}`q`.\n\nWe could represent this as follows:\n\n```lean\ndef Implies (p q : Prop) : Prop := p → q\nstructure Proof (p : Prop) : Type where\n  proof : p\n------\naxiom modus_ponens (p q : Prop) :\n  Proof (Implies p q) → Proof p →\n  Proof q\n```\n\nSystems of natural deduction for propositional logic also typically rely on the following rule:\n\n> Suppose that, assuming {lean}`p` as a hypothesis, we have a proof of {lean}`q`. Then we can “cancel” the hypothesis and obtain a proof of {lean}`Implies p q`.\n\nWe could render this as follows:\n\n```lean\ndef Implies (p q : Prop) : Prop := p → q\nstructure Proof (p : Prop) : Type where\n  proof : p\n------\naxiom implies_intro (p q : Prop) :\n  (Proof p → Proof q) → Proof (Implies p q)\n```\n\nThis approach would provide us with a reasonable way of building assertions and proofs.\nDetermining that an expression {lean}`t` is a correct proof of assertion {lean}`p` would then\nsimply be a matter of checking that {lean}`t` has type {lean}`Proof p`.\n\nSome simplifications are possible, however. To start with, we can\navoid writing the term {lean}`Proof` repeatedly by conflating {lean}`Proof p`\nwith {lean}`p` itself. In other words, whenever we have {lean}`p : Prop`, we\ncan interpret {lean}`p` as a type, namely, the type of its proofs. We can\nthen read {lean}`t : p` as the assertion that {lean}`t` is a proof of {lean}`p`.\n\nMoreover, once we make this identification, the rules for implication\nshow that we can pass back and forth between {lean}`Implies p q` and\n{lean}`p → q`. In other words, implication between propositions {lean}`p` and {lean}`q`\ncorresponds to having a function that takes any element of {lean}`p` to an\nelement of {lean}`q`. As a result, the introduction of the connective\n{lean}`Implies` is entirely redundant: we can use the usual function space\nconstructor {lean}`p → q` from dependent type theory as our notion of\nimplication.\n\nThis is the approach followed in the Calculus of Constructions, and\nhence in Lean as well. The fact that the rules for implication in a\nproof system for natural deduction correspond exactly to the rules\ngoverning abstraction and application for functions is an instance of\nthe {deftech}_Curry-Howard isomorphism_, sometimes known as the\n{deftech}_propositions-as-types_ paradigm. In fact, the type {lean}`Prop` is\nsyntactic sugar for {lean}`Sort 0`, the very bottom of the type hierarchy\ndescribed in the last chapter. Moreover, {lean}`Type u` is also just\nsyntactic sugar for {lean}`Sort (u+1)`. {lean}`Prop` has some special\nfeatures, but like the other type universes, it is closed under the\narrow constructor: if we have {lean}`p q : Prop`, then {lean}`p → q : Prop`.\n\nThere are at least two ways of thinking about propositions as\ntypes. To some who take a constructive view of logic and mathematics,\nthis is a faithful rendering of what it means to be a proposition: a\nproposition {lean}`p` represents a sort of data type, namely, a\nspecification of the type of data that constitutes a proof. A proof of\n{lean}`p` is then simply an object {lean}`t : p` of the right type.\n\nThose not inclined to this ideology can view it, rather, as a simple\ncoding trick. To each proposition {lean}`p` we associate a type that is\nempty if {lean}`p` is false and has a single element, say {lit}`*`, if {lean}`p`\nis true. In the latter case, let us say that (the type associated\nwith) {lean}`p` is _inhabited_. It just so happens that the rules for\nfunction application and abstraction can conveniently help us keep\ntrack of which elements of {lean}`Prop` are inhabited. So constructing an\nelement {lean}`t : p` tells us that {lean}`p` is indeed true. You can think of\nthe inhabitant of {lean}`p` as being the “fact that {lean}`p` is true.” A\nproof of {lean}`p → q` uses “the fact that {lean}`p` is true” to obtain “the\nfact that {lean}`q` is true.”\n\nIndeed, if {lean}`p : Prop` is any proposition, Lean's kernel treats any\ntwo elements {lean}`t1 t2 : p` as being definitionally equal, much the\nsame way as it treats {lit}`(fun x => t) s` and {lit}`t[s/x]` as\ndefinitionally equal. This is known as {deftech}_proof irrelevance_, and is\nconsistent with the interpretation in the last paragraph. It means\nthat even though we can treat proofs {lean}`t : p` as ordinary objects in\nthe language of dependent type theory, they carry no information\nbeyond the fact that {lean}`p` is true.\n\nThe two ways we have suggested thinking about the\n{tech}[propositions-as-types] paradigm differ in a fundamental way. From the\nconstructive point of view, proofs are abstract mathematical objects\nthat are _denoted_ by suitable expressions in dependent type\ntheory. In contrast, if we think in terms of the coding trick\ndescribed above, then the expressions themselves do not denote\nanything interesting. Rather, it is the fact that we can write them\ndown and check that they are well-typed that ensures that the\nproposition in question is true. In other words, the expressions\n_themselves_ are the proofs.\n\nIn the exposition below, we will slip back and forth between these two\nways of talking, at times saying that an expression “constructs” or\n“produces” or “returns” a proof of a proposition, and at other times\nsimply saying that it “is” such a proof. This is similar to the way\nthat computer scientists occasionally blur the distinction between\nsyntax and semantics by saying, at times, that a program “computes” a\ncertain function, and at other times speaking as though the program\n“is” the function in question.\n\nIn any case, all that really matters is the bottom line. To formally\nexpress a mathematical assertion in the language of dependent type\ntheory, we need to exhibit a term {lean}`p : Prop`. To _prove_ that\nassertion, we need to exhibit a term {lean}`t : p`. Lean's task, as a\nproof assistant, is to help us to construct such a term, {lean}`t`, and to\nverify that it is well-formed and has the correct type.\n\n# Working with Propositions as Types\n%%%\ntag := \"working-with-propositions-as-types\"\n%%%\n\nIn the {tech}[propositions-as-types] paradigm, theorems involving only {lit}`→`\ncan be proved using lambda abstraction and application. In Lean, the\n{kw}`theorem` command introduces a new theorem:\n\n```lean\nset_option linter.unusedVariables false\n---\nvariable {p : Prop}\nvariable {q : Prop}\n\ntheorem t1 : p → q → p := fun hp : p => fun hq : q => hp\n```\n\nCompare this proof to the expression {lean}`fun x : α => fun y : β => x`\nof type {lean}`α → β → α`, where {lean}`α` and {lean}`β` are data types.\nThis describes the function that takes arguments {leanRef}`x` and {leanRef}`y`\nof type {lean}`α` and {lean}`β`, respectively, and returns {leanRef}`x`.\nThe proof of {lean}`t1` has the same form, the only difference being that\n{lean}`p` and {lean}`q` are elements of {lean}`Prop` rather than {lean}`Type`.\nIntuitively, our proof of\n{lean}`p → q → p` assumes {lean}`p` and {lean}`q` are true, and uses the first\nhypothesis (trivially) to establish that the conclusion, {lean}`p`, is\ntrue.\n\nNote that the {kw}`theorem` command is really a version of the\n{kw}`def` command: under the propositions and types\ncorrespondence, proving the theorem {lean}`p → q → p` is really the same\nas defining an element of the associated type. To the kernel type\nchecker, there is no difference between the two.\n\nThere are a few pragmatic differences between definitions and\ntheorems, however. In normal circumstances, it is never necessary to\nunfold the “definition” of a theorem; by {tech}[proof irrelevance], any two\nproofs of that theorem are definitionally equal. Once the proof of a\ntheorem is complete, typically we only need to know that the proof\nexists; it doesn't matter what the proof is. In light of that fact,\nLean tags proofs as _irreducible_, which serves as a hint to the\nparser (more precisely, the _elaborator_) that there is generally no\nneed to unfold them when processing a file. In fact, Lean is generally\nable to process and check proofs in parallel, since assessing the\ncorrectness of one proof does not require knowing the details of\nanother. Additionally, {ref \"variables-and-sections\"}[section variables]\nthat are referred to in the body of a definition are automatically added as\nparameters, but only the variables referred to in a theorem's type are added.\nThis is because the way in which a statement is proved should not influence\nthe statement that is being proved.\n\nAs with definitions, the {kw}`#print` command will show you the proof of\na theorem:\n\n```lean\nset_option linter.unusedVariables false\nvariable {p : Prop}\nvariable {q : Prop}\n------\ntheorem t1 : p → q → p := fun hp : p => fun hq : q => hp\n\n#print t1 -- theorem t1 : ∀ {p q : Prop}, p → q → p := fun {p q} hp hq => hp\n```\n\nNotice that the lambda abstractions {leanRef}`hp : p` and {leanRef}`hq : q` can be\nviewed as temporary assumptions in the proof of {lean}`t1`.  Lean also\nallows us to specify the type of the final term {leanRef}`hp`, explicitly,\nwith a {kw}`show` statement:\n\n```lean\nset_option linter.unusedVariables false\nvariable {p : Prop}\nvariable {q : Prop}\n------\ntheorem t1 : p → q → p :=\n  fun hp : p =>\n  fun hq : q =>\n  show p from hp\n```\n\nAdding such extra information can improve the clarity of a proof and\nhelp detect errors when writing a proof. The {kw}`show` command does\nnothing more than annotate the type, and, internally, all the\npresentations of {leanRef}`t1` that we have seen produce the same term.\n\nAs with ordinary definitions, we can move the lambda-abstracted\nvariables to the left of the colon:\n\n```lean\nset_option linter.unusedVariables false\nvariable {p : Prop}\nvariable {q : Prop}\n------\ntheorem t1 (hp : p) (hq : q) : p := hp\n\n#print t1    -- theorem t1 : ∀ {p q : Prop}, p → q → p := fun {p q} hp hq => hp\n```\n\nWe can use the theorem {leanRef}`t1` just as a function application:\n\n```lean\nset_option linter.unusedVariables false\nvariable {p : Prop}\nvariable {q : Prop}\n------\ntheorem t1 (hp : p) (hq : q) : p := hp\n\naxiom hp : p\n\ntheorem t2 : q → p := t1 hp\n```\n\nThe {kw}`axiom` declaration postulates the existence of an\nelement of the given type and may compromise logical consistency. For\nexample, we can use it to postulate that the empty type {lean}`False` has an\nelement:\n\n```lean\naxiom unsound : False\n-- Everything follows from false\ntheorem ex : 1 = 0 :=\n  False.elim unsound\n```\n\n:::setup\n```\nvariable {p q : Prop} (hp : p) {t1 : p → q → p}\n```\nDeclaring an “axiom” {lean}`hp : p` is tantamount to declaring that {lean}`p`\nis true, as witnessed by {lean}`hp`. Applying the theorem\n{lean}`t1 : p → q → p` to the fact {lean}`hp : p` that {lean}`p` is true yields the theorem\n{lean}`t1 hp : q → p`.\n\n:::\n\nRecall that we can also write theorem {leanRef}`t1` as follows:\n\n```lean\nset_option linter.unusedVariables false\n------\ntheorem t1 {p q : Prop} (hp : p) (hq : q) : p := hp\n\n#print t1\n```\n\nThe type of {leanRef}`t1` is now {lean}`∀ {p q : Prop}, p → q → p`. We can read\nthis as the assertion “for every pair of propositions {lean}`p`{lit}` `{lean}`q`, we have\n{lean}`p → q → p`.” For example, we can move all parameters to the right\nof the colon:\n\n```lean\nset_option linter.unusedVariables false\n------\ntheorem t1 : ∀ {p q : Prop}, p → q → p :=\n  fun {p q : Prop} (hp : p) (hq : q) => hp\n```\n\nIf {lean}`p` and {lean}`q` have been declared as {ref \"variables-and-sections\"}[variables], Lean will\ngeneralize them for us automatically:\n\n```lean\nvariable {p q : Prop}\n\ntheorem t1 : p → q → p := fun (hp : p) (hq : q) => hp\n```\n\nWhen we generalize {leanRef}`t1` in such a way, we can then apply it to\ndifferent pairs of propositions, to obtain different instances of the\ngeneral theorem.\n\n```lean\nset_option linter.unusedVariables false\n------\ntheorem t1 (p q : Prop) (hp : p) (hq : q) : p := hp\n\nvariable (p q r s : Prop)\n\n#check t1 p q                -- t1 p q : p → q → p\n#check t1 r s                -- t1 r s : r → s → r\n#check t1 (r → s) (s → r)    -- t1 (r → s) (s → r) : (r → s) → (s → r) → r → s\n\nvariable (h : r → s)\n\n#check t1 (r → s) (s → r) h  -- t1 (r → s) (s → r) h : (s → r) → r → s\n```\n\nOnce again, using the {tech}[propositions-as-types] correspondence, the\nvariable {leanRef}`h` of type {leanRef}`r → s` can be viewed as the hypothesis, or\npremise, that {leanRef}`r → s` holds.\n\nAs another example, let us consider the composition function discussed\nin the last chapter, now with propositions instead of types.\n\n```lean\nvariable (p q r s : Prop)\n\ntheorem t2 (h₁ : q → r) (h₂ : p → q) : p → r :=\n  fun h₃ : p =>\n  show r from h₁ (h₂ h₃)\n```\n\nAs a theorem of propositional logic, what does {leanRef}`t2` say?\n\nNote that it is often useful to use numeric Unicode subscripts,\nentered as {kbd}`\\0`, {kbd}`\\1`, {kbd}`\\2`, ..., for hypotheses, as we did in\nthis example.\n\n# Propositional Logic\n%%%\ntag := \"propositional-logic\"\n%%%\n\nLean defines all the standard logical connectives and notation. The propositional connectives come with the following notation:\n\n:::table +header\n*\n * ASCII\n * Unicode\n * Editor shortcut\n * Definition\n\n*\n * {lean}`True`\n * {empty}[]\n * {empty}[]\n * {lean}`True`\n\n*\n * {lean}`False`\n * {empty}[]\n * {empty}[]\n * {lean}`False`\n\n*\n * {lean}`Not`\n * {lit}`¬`\n * {kbd}`\\not`, {kbd}`\\neg`\n * {lean}`Not`\n\n*\n * {lit}`/\\`\n * {lit}`∧`\n * {kbd}`\\and`\n * {lean}`And`\n\n*\n * {lit}`\\/`\n * {lit}`∨`\n * {kbd}`\\or`\n * {lean}`Or`\n\n*\n * {lit}`->`\n * {lit}`→`\n * {kbd}`\\to`, {kbd}`\\r`, {kbd}`\\imp`\n * {empty}[]\n\n*\n * {lit}`<->`\n * {lit}`↔`\n * {kbd}`\\iff`, {kbd}`\\lr`\n * {lean}`Iff`\n\n:::\n\nThey all take values in {lean}`Prop`.\n\n```lean\nvariable (p q : Prop)\n\n#check p → q → p ∧ q\n\n#check ¬p → p ↔ False\n\n#check p ∨ q → q ∨ p\n```\n\n:::setup\n```\nvariable (p q r a b c d e : Prop)\n```\n\nThe order of operations is as follows: unary negation {lit}`¬` binds most\nstrongly, then {lit}`∧`, then {lit}`∨`, then {lit}`→`, and finally {lit}`↔`. For\nexample, {lean}`a ∧ b → c ∨ d ∧ e` means {lean}`(a ∧ b) → (c ∨ (d ∧ e))`.\nRemember that {lit}`→` associates to the right (nothing changes\nnow that the arguments are elements of {lean}`Prop`, instead of some other\n{lean}`Type`), as do the other binary connectives. So if we have\n{lean}`p q r : Prop`, the expression {lean}`p → q → r` reads “if {lean}`p`, then if {lean}`q`,\nthen {lean}`r`.” This is just the “curried” form of {lean}`p ∧ q → r`.\n\n:::\n\nIn the last chapter we observed that lambda abstraction can be viewed\nas an “introduction rule” for {lit}`→`. In the current setting, it shows\nhow to “introduce” or establish an implication. Application can be\nviewed as an “elimination rule,” showing how to “eliminate” or use an\nimplication in a proof. The other propositional connectives are\ndefined in Lean's library, and are automatically imported. Each connective\ncomes with its canonical introduction and elimination rules.\n\n## Conjunction\n%%%\ntag := \"conjunction\"\n%%%\n\n:::setup\n```\nvariable (p q : Prop) (h1 : p) (h2 : q)\n```\n\nThe expression {lean}`And.intro h1 h2` builds a proof of {lean}`p ∧ q` using\nproofs {lean}`h1 : p` and {lean}`h2 : q`. It is common to describe\n{lean}`And.intro` as the _and-introduction_ rule. In the next example we\nuse {lean}`And.intro` to create a proof of {lean}`p → q → p ∧ q`.\n\n:::\n\n```lean\nvariable (p q : Prop)\n\nexample (hp : p) (hq : q) : p ∧ q := And.intro hp hq\n\n#check fun (hp : p) (hq : q) => And.intro hp hq\n```\n\nThe {kw}`example` command states a theorem without naming it or storing\nit in the permanent context. Essentially, it just checks that the\ngiven term has the indicated type. It is convenient for illustration,\nand we will use it often.\n\n:::setup\n```\nvariable (p q : Prop) (h : p ∧ q)\n```\n\nThe expression {lean}`And.left h` creates a proof of {lean}`p` from a proof\n{lean}`h : p ∧ q`. Similarly, {lean}`And.right h` is a proof of {lean}`q`. They\nare commonly known as the left and right _and-elimination_ rules.\n\n:::\n\n```lean\nvariable (p q : Prop)\n\nexample (h : p ∧ q) : p := And.left h\nexample (h : p ∧ q) : q := And.right h\n```\n\nWe can now prove {lean}`p ∧ q → q ∧ p` with the following proof term.\n\n```lean\nvariable (p q : Prop)\n\nexample (h : p ∧ q) : q ∧ p :=\n  And.intro (And.right h) (And.left h)\n```\n\n:::setup\n```\nvariable (p q : Prop) (hp : p) (hq : q) (α β : Type) (a : α) (b : β)\n\n```\nNotice that and-introduction and and-elimination are similar to the\npairing and projection operations for the Cartesian product. The\ndifference is that given {lean}`hp : p` and {lean}`hq : q`, {lean}`And.intro hp hq` has type\n{lean}`p ∧ q : Prop`, while given {lean}`a : α` and {lean}`b : β`, {lean}`Prod.mk a b` has type\n{lean}`α × β : Type`. {lean}`Prod` cannot be used with {lean}`Prop`s, and {lean}`And` cannot be used with {lean}`Type`s.\nThe similarity between {lit}`∧` and {lit}`×` is another instance\nof the {tech}[Curry-Howard isomorphism], but in contrast to implication and\nthe function space constructor, {lit}`∧` and {lit}`×` are treated separately\nin Lean. With the analogy, however, the proof we have just constructed\nis similar to a function that swaps the elements of a pair.\n\nWe will see in {ref \"structures-and-records\"}[Structures and Records] that certain\ntypes in Lean are _structures_, which is to say, the type is defined\nwith a single canonical _constructor_ which builds an element of the\ntype from a sequence of suitable arguments. For every {lean}`p q : Prop`,\n{lean}`p ∧ q` is an example: the canonical way to construct an element is\nto apply {lean}`And.intro` to suitable arguments {lean}`hp : p` and\n{lean}`hq : q`. Lean allows us to use _anonymous constructor_ notation\n{lit}`⟨arg1, arg2, ...⟩` in situations like these, when the relevant type is an\ninductive type and can be inferred from the context. In particular, we\ncan often write {lean (type := \"p ∧ q\")}`⟨hp, hq⟩` instead of {lean}`And.intro hp hq`:\n\n:::\n\n```lean\nvariable (p q : Prop)\nvariable (hp : p) (hq : q)\n\n#check (⟨hp, hq⟩ : p ∧ q)\n```\n\nThese angle brackets are obtained by typing {kbd}`\\<` and {kbd}`\\>`, respectively.\n\n:::setup\n```\ninductive Foo where | mk\ninductive Bar where | mk : Foo → Bar\nvariable (e : Foo)\ndef Foo.bar (x : Foo) : Bar := .mk x\n```\n\nLean provides another useful syntactic gadget. Given an expression\n{lean}`e` of an inductive type {lean}`Foo` (possibly applied to some\narguments), the notation {lean}`e.bar` is shorthand for {lean}`Foo.bar e`.\nThis provides a convenient way of accessing functions without opening\na namespace.  For example, the following two expressions mean the same\nthing:\n\n:::\n\n```lean\nvariable (xs : List Nat)\n\n#check List.length xs\n\n#check xs.length\n```\n\n:::setup\n```\nvariable (p q : Prop) (h : p ∧ q)\n```\n\n\nAs a result, given {lean}`h : p ∧ q`, we can write {lean}`h.left` for\n{lean}`And.left h` and {lean}`h.right` for {lean}`And.right h`. We can therefore\nrewrite the sample proof above conveniently as follows:\n\n:::\n\n\n```lean\nvariable (p q : Prop)\n\nexample (h : p ∧ q) : q ∧ p :=\n  ⟨h.right, h.left⟩\n```\n\nThere is a fine line between brevity and obfuscation, and omitting\ninformation in this way can sometimes make a proof harder to read. But\nfor straightforward constructions like the one above, when the type of\n{leanRef}`h` and the goal of the construction are salient, the notation is\nclean and effective.\n\nIt is common to iterate constructions like “And.” Lean also allows you\nto flatten nested constructors that associate to the right, so that\nthese two proofs are equivalent:\n\n```lean\nvariable (p q : Prop)\n\nexample (h : p ∧ q) : q ∧ p ∧ q :=\n  ⟨h.right, ⟨h.left, h.right⟩⟩\n\nexample (h : p ∧ q) : q ∧ p ∧ q :=\n  ⟨h.right, h.left, h.right⟩\n```\n\nThis is often useful as well.\n\n## Disjunction\n%%%\ntag := \"disjunction\"\n%%%\n\n:::setup\n```\nvariable (p q : Prop) (hp : p) (hq : q)\n```\n\n\nThe expression {lean}`Or.intro_left q hp` creates a proof of {lean}`p ∨ q`\nfrom a proof {lean}`hp : p`. Similarly, {lean}`Or.intro_right p hq` creates a\nproof for {lean}`p ∨ q` using a proof {lean}`hq : q`. These are the left and\nright _or-introduction_ rules.\n:::\n\n```lean\nvariable (p q : Prop)\nexample (hp : p) : p ∨ q := Or.intro_left q hp\nexample (hq : q) : p ∨ q := Or.intro_right p hq\n```\n\n:::setup\n```\nvariable (p q r : Prop) (hpq : p ∨ q) (hpr : p → r) (hqr : q → r)\n```\n\nThe _or-elimination_ rule is slightly more complicated. The idea is\nthat we can prove {lean}`r` from {lean}`p ∨ q`, by showing that {lean}`r` follows\nfrom {lean}`p` and that {lean}`r` follows from {lean}`q`.  In other words, it is a\nproof by cases. In the expression {lean}`Or.elim hpq hpr hqr`, {lean}`Or.elim`\ntakes three arguments, {lean}`hpq : p ∨ q`, {lean}`hpr : p → r` and\n{lean}`hqr : q → r`, and produces a proof of {lean}`r`. In the following example, we use\n{lean}`Or.elim` to prove {lean}`p ∨ q → q ∨ p`.\n:::\n\n```lean\nvariable (p q r : Prop)\n\nexample (h : p ∨ q) : q ∨ p :=\n  Or.elim h\n    (fun hp : p =>\n      show q ∨ p from Or.intro_right q hp)\n    (fun hq : q =>\n      show q ∨ p from Or.intro_left p hq)\n```\n\nIn most cases, the first argument of {lean}`Or.intro_right` and\n{lean}`Or.intro_left` can be inferred automatically by Lean. Lean\ntherefore provides {lean}`Or.inr` and {lean}`Or.inl` which can be viewed as\nshorthand for {lean}`Or.intro_right _` and {lean}`Or.intro_left _`. Thus the\nproof term above could be written more concisely:\n\n```lean\nvariable (p q r : Prop)\n\nexample (h : p ∨ q) : q ∨ p :=\n  Or.elim h (fun hp => Or.inr hp) (fun hq => Or.inl hq)\n```\n\nNotice that there is enough information in the full expression for\nLean to infer the types of {leanRef}`hp` and {leanRef}`hq` as well.  But using the\ntype annotations in the longer version makes the proof more readable,\nand can help catch and debug errors.\n\n:::setup\n```\nvariable (h : p ∨ q)\n```\n\nBecause {lean}`Or` has two constructors, we cannot use anonymous\nconstructor notation. But we can still write {lean}`h.elim` instead of\n{lean}`Or.elim h`:\n:::\n\n```lean\nvariable (p q r : Prop)\n\nexample (h : p ∨ q) : q ∨ p :=\n  h.elim (fun hp => Or.inr hp) (fun hq => Or.inl hq)\n```\n\nOnce again, you should exercise judgment as to whether such\nabbreviations enhance or diminish readability.\n\n## Negation and Falsity\n%%%\ntag := \"negation-and-falsity\"\n%%%\n\n:::setup\n```\nvariable (p q : Prop) (hnp : ¬ p) (hp : p)\n```\n\nNegation, {lean}`¬p`, is actually defined to be {lean}`p → False`, so we\nobtain {lean}`¬p` by deriving a contradiction from {lean}`p`. Similarly, the\nexpression {lean}`hnp hp` produces a proof of {lean}`False` from {lean}`hp : p`\nand {lean}`hnp : ¬p`. The next example uses both these rules to produce a\nproof of {lean}`(p → q) → ¬q → ¬p`. (The symbol {lit}`¬` is produced by\ntyping {kbd}`\\not` or {kbd}`\\neg`.)\n\n:::\n\n```lean\nvariable (p q : Prop)\n\nexample (hpq : p → q) (hnq : ¬q) : ¬p :=\n  fun hp : p =>\n  show False from hnq (hpq hp)\n```\n\nThe connective {lean}`False` has a single elimination rule,\n{lean}`False.elim`, which expresses the fact that anything follows from a\ncontradiction. This rule is sometimes called _ex falso_ (short for _ex\nfalso sequitur quodlibet_), or the _principle of explosion_.\n\n```lean\nvariable (p q : Prop)\n\nexample (hp : p) (hnp : ¬p) : q := False.elim (hnp hp)\n```\n\nThe arbitrary fact, {lean}`q`, that follows from falsity is an implicit\nargument in {lean}`False.elim` and is inferred automatically. This\npattern, deriving an arbitrary fact from contradictory hypotheses, is\nquite common, and is represented by {lean}`absurd`.\n\n```lean\nvariable (p q : Prop)\n\nexample (hp : p) (hnp : ¬p) : q := absurd hp hnp\n```\n\nHere, for example, is a proof of {lean}`¬p → q → (q → p) → r`:\n\n```lean\nvariable (p q r : Prop)\n\nexample (hnp : ¬p) (hq : q) (hqp : q → p) : r :=\n  absurd (hqp hq) hnp\n```\n\nIncidentally, just as {lean}`False` has only an elimination rule, {lean}`True`\nhas only an introduction rule, {lean}`True.intro : True`.  In other words,\n{lean}`True` is simply true, and has a canonical proof, {lean}`True.intro`.\n\n## Logical Equivalence\n%%%\ntag := \"logical-equivalence\"\n%%%\n\n:::setup\n\n```\nvariable (p q : Prop) (h1 : p → q) (h2 : q → p) (h : p ↔ q)\n```\n\nThe expression {lean}`Iff.intro h1 h2` produces a proof of {lean}`p ↔ q` from\n{lean}`h1 : p → q` and {lean}`h2 : q → p`.  The expression {lean}`Iff.mp h`\nproduces a proof of {lean}`p → q` from {lean}`h : p ↔ q`. Similarly,\n{lean}`Iff.mpr h` produces a proof of {lean}`q → p` from {lean}`h : p ↔ q`. Here is a proof\nof {lean}`p ∧ q ↔ q ∧ p`:\n\n:::\n```lean\nvariable (p q : Prop)\n\ntheorem and_swap : p ∧ q ↔ q ∧ p :=\n  Iff.intro\n    (fun h : p ∧ q =>\n     show q ∧ p from And.intro (And.right h) (And.left h))\n    (fun h : q ∧ p =>\n     show p ∧ q from And.intro (And.right h) (And.left h))\n\n#check and_swap p q    -- and_swap p q : p ∧ q ↔ q ∧ p\n\nvariable (h : p ∧ q)\nexample : q ∧ p := Iff.mp (and_swap p q) h\n```\n\nWe can use the anonymous constructor notation to construct a proof of\n{lean}`p ↔ q` from proofs of the forward and backward directions, and we\ncan also use {lit}`.` notation with {lit}`mp` and {lit}`mpr`. The previous\nexamples can therefore be written concisely as follows:\n\n```lean\nvariable (p q : Prop)\n\ntheorem and_swap : p ∧ q ↔ q ∧ p :=\n  ⟨ fun h => ⟨h.right, h.left⟩, fun h => ⟨h.right, h.left⟩ ⟩\n\nexample (h : p ∧ q) : q ∧ p := (and_swap p q).mp h\n```\n\n# Introducing Auxiliary Subgoals\n%%%\ntag := \"introducing-auxiliary-subgoals\"\n%%%\n\nThis is a good place to introduce another device Lean offers to help\nstructure long proofs, namely, the {kw}`have` construct, which\nintroduces an auxiliary subgoal in a proof. Here is a small example,\nadapted from the last section:\n\n```lean\nvariable (p q : Prop)\n\nexample (h : p ∧ q) : q ∧ p :=\n  have hp : p := h.left\n  have hq : q := h.right\n  show q ∧ p from And.intro hq hp\n```\n\n:::setup\n```\nvariable (p q : Prop) (s : p) (t : q)\n```\n\nInternally, the expression {lean}`have h : p := s; t` produces the term\n{lean}`(fun (h : p) => t) s`. In other words, {lean}`s` is a proof of {lean}`p`,\n{lean}`t` is a proof of the desired conclusion assuming {leanRef}`h : p`, and the\ntwo are combined by a lambda abstraction and application. This simple\ndevice is extremely useful when it comes to structuring long proofs,\nsince we can use intermediate {kw}`have`'s as stepping stones leading to\nthe final goal.\n:::\n\nLean also supports a structured way of reasoning backwards from a\ngoal, which models the “suffices to show” construction in ordinary\nmathematics. The next example simply permutes the last two lines in\nthe previous proof.\n\n```lean\nvariable (p q : Prop)\n\nexample (h : p ∧ q) : q ∧ p :=\n  have hp : p := h.left\n  suffices hq : q from And.intro hq hp\n  show q from And.right h\n```\n\nWriting {leanRef}`suffices hq : q` leaves us with two goals. First, we have\nto show that it indeed suffices to show {lean}`q`, by proving the original\ngoal of {leanRef}`q ∧ p` with the additional hypothesis {leanRef}`hq : q`. Finally,\nwe have to show {leanRef}`q`.\n\n# Classical Logic\n%%%\ntag := \"classical-logic\"\n%%%\n\nThe introduction and elimination rules we have seen so far are all\nconstructive, which is to say, they reflect a computational\nunderstanding of the logical connectives based on the\n{tech}[propositions-as-types] correspondence. Ordinary classical logic adds to\nthis the law of the excluded middle, {lean}`p ∨ ¬p`. To use this\nprinciple, you have to open the classical namespace.\n\n```lean\nopen Classical\n\nvariable (p : Prop)\n\n#check em p\n```\n\n:::setup\n```\nvariable (p q RH : Prop)\n```\n\nIntuitively, the constructive “Or” is very strong: asserting {lean}`p ∨ q`\namounts to knowing which is the case. If {lean}`RH` represents the Riemann\nhypothesis, a classical mathematician is willing to assert\n{lean}`RH ∨ ¬RH`, even though we cannot yet assert either disjunct.\n\n:::\n\nOne consequence of the law of the excluded middle is the principle of\ndouble-negation elimination:\n\n```lean\nopen Classical\n\ntheorem dne {p : Prop} (h : ¬¬p) : p :=\n  Or.elim (em p)\n    (fun hp : p => hp)\n    (fun hnp : ¬p => absurd hnp h)\n```\n\n:::setup\n```\nopen Classical\nvariable (p : Prop)\ntheorem dne {p : Prop} (h : ¬¬p) : p :=\n  Or.elim (em p)\n    (fun hp : p => hp)\n    (fun hnp : ¬p => absurd hnp h)\n```\n\n\nDouble-negation elimination allows one to prove any proposition,\n{lean}`p`, by assuming {lean}`¬p` and deriving {lean}`False`, because that amounts\nto proving {lean}`¬¬p`. In other words, double-negation elimination allows\none to carry out a proof by contradiction, something which is not\ngenerally possible in constructive logic. As an exercise, you might\ntry proving the converse, that is, showing that {lean}`em` can be proved\nfrom {lean}`dne`.\n\n\n\nThe classical axioms also give you access to additional patterns of\nproof that can be justified by appeal to {lean}`em`.  For example, one can\ncarry out a proof by cases:\n:::\n\n```lean\nopen Classical\nvariable (p : Prop)\n\nexample (h : ¬¬p) : p :=\n  byCases\n    (fun h1 : p => h1)\n    (fun h1 : ¬p => absurd h1 h)\n```\n\nOr you can carry out a proof by contradiction:\n\n```lean\nopen Classical\nvariable (p : Prop)\n\nexample (h : ¬¬p) : p :=\n  byContradiction\n    (fun h1 : ¬p =>\n     show False from h h1)\n```\n\nIf you are not used to thinking constructively, it may take some time\nfor you to get a sense of where classical reasoning is used.  It is\nneeded in the following example because, from a constructive\nstandpoint, knowing that {lean}`p` and {lean}`q` are not both true does not\nnecessarily tell you which one is false:\n\n```lean\nopen Classical\nvariable (p q : Prop)\n------\nexample (h : ¬(p ∧ q)) : ¬p ∨ ¬q :=\n  Or.elim (em p)\n    (fun hp : p =>\n      Or.inr\n        (show ¬q from\n          fun hq : q =>\n          h ⟨hp, hq⟩))\n    (fun hp : ¬p =>\n      Or.inl hp)\n```\n\nWe will see later that there _are_ situations in constructive logic\nwhere principles like excluded middle and double-negation elimination\nare permissible, and Lean supports the use of classical reasoning in\nsuch contexts without relying on excluded middle.\n\nThe full list of axioms that are used in Lean to support classical\nreasoning are discussed in {ref \"axioms-and-computation\"}[Axioms and Computation].\n\n# Examples of Propositional Validities\n%%%\ntag := \"examples-of-propositional-validities\"\n%%%\n\n:::setup\n```\nvariable (p q r s : Prop)\n```\n\n\nLean's standard library contains proofs of many valid statements of\npropositional logic, all of which you are free to use in proofs of\nyour own. The following list includes a number of common identities.\n\nCommutativity:\n\n1. {lean}`p ∧ q ↔ q ∧ p`\n2. {lean}`p ∨ q ↔ q ∨ p`\n\nAssociativity:\n\n3. {lean}`(p ∧ q) ∧ r ↔ p ∧ (q ∧ r)`\n4. {lean}`(p ∨ q) ∨ r ↔ p ∨ (q ∨ r)`\n\nDistributivity:\n\n5. {lean}`p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r)`\n6. {lean}`p ∨ (q ∧ r) ↔ (p ∨ q) ∧ (p ∨ r)`\n\nOther properties:\n\n7. {lean}`(p → (q → r)) ↔ (p ∧ q → r)`\n8. {lean}`((p ∨ q) → r) ↔ (p → r) ∧ (q → r)`\n9. {lean}`¬(p ∨ q) ↔ ¬p ∧ ¬q`\n10. {lean}`¬p ∨ ¬q → ¬(p ∧ q)`\n11. {lean}`¬(p ∧ ¬p)`\n12. {lean}`p ∧ ¬q → ¬(p → q)`\n13. {lean}`¬p → (p → q)`\n14. {lean}`(¬p ∨ q) → (p → q)`\n15. {lean}`p ∨ False ↔ p`\n16. {lean}`p ∧ False ↔ False`\n17. {lean}`¬(p ↔ ¬p)`\n18. {lean}`(p → q) → (¬q → ¬p)`\n\nThese require classical reasoning:\n\n19. {lean}`(p → r ∨ s) → ((p → r) ∨ (p → s))`\n20. {lean}`¬(p ∧ q) → ¬p ∨ ¬q`\n21. {lean}`¬(p → q) → p ∧ ¬q`\n22. {lean}`(p → q) → (¬p ∨ q)`\n23. {lean}`(¬q → ¬p) → (p → q)`\n24. {lean}`p ∨ ¬p`\n25. {lean}`(((p → q) → p) → p)`\n\nThe {lean}`sorry` identifier magically produces a proof of anything, or\nprovides an object of any data type at all. Of course, it is unsound\nas a proof method—for example, you can use it to prove {lean}`False`—and\nLean produces severe warnings when files use or import theorems\nwhich depend on it. But it is very useful for building long proofs\nincrementally. Start writing the proof from the top down, using\n{lean}`sorry` to fill in subproofs. Make sure Lean accepts the term with\nall the {lean}`sorry`'s; if not, there are errors that you need to\ncorrect. Then go back and replace each {lean}`sorry` with an actual proof,\nuntil no more remain.\n\nHere is another useful trick. Instead of using {lean}`sorry`, you can use\nan underscore {lit}`_` as a placeholder. Recall this tells Lean that\nthe argument is implicit, and should be filled in automatically. If\nLean tries to do so and fails, it returns with an error message “don't\nknow how to synthesize placeholder,” followed by the type of\nthe term it is expecting, and all the objects and hypotheses available\nin the context. In other words, for each unresolved placeholder, Lean\nreports the subgoal that needs to be filled at that point. You can\nthen construct a proof by incrementally filling in these placeholders.\n\n:::\n\nFor reference, here are two sample proofs of validities taken from the\nlist above.\n\n```lean\nopen Classical\n\n-- distributivity\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) :=\n  Iff.intro\n    (fun h : p ∧ (q ∨ r) =>\n      have hp : p := h.left\n      Or.elim (h.right)\n        (fun hq : q =>\n          show (p ∧ q) ∨ (p ∧ r) from Or.inl ⟨hp, hq⟩)\n        (fun hr : r =>\n          show (p ∧ q) ∨ (p ∧ r) from Or.inr ⟨hp, hr⟩))\n    (fun h : (p ∧ q) ∨ (p ∧ r) =>\n      Or.elim h\n        (fun hpq : p ∧ q =>\n          have hp : p := hpq.left\n          have hq : q := hpq.right\n          show p ∧ (q ∨ r) from ⟨hp, Or.inl hq⟩)\n        (fun hpr : p ∧ r =>\n          have hp : p := hpr.left\n          have hr : r := hpr.right\n          show p ∧ (q ∨ r) from ⟨hp, Or.inr hr⟩))\n\n-- an example that requires classical reasoning\nexample (p q : Prop) : ¬(p ∧ ¬q) → (p → q) :=\n  fun h : ¬(p ∧ ¬q) =>\n  fun hp : p =>\n  show q from\n    Or.elim (em q)\n      (fun hq : q => hq)\n      (fun hnq : ¬q => absurd (And.intro hp hnq) h)\n```\n\n# Exercises\n%%%\ntag := none\n%%%\n\nProve the following identities, replacing the {lean}`sorry` placeholders with actual proofs.\n\n```lean\nvariable (p q r : Prop)\n\n-- commutativity of ∧ and ∨\nexample : p ∧ q ↔ q ∧ p := sorry\nexample : p ∨ q ↔ q ∨ p := sorry\n\n-- associativity of ∧ and ∨\nexample : (p ∧ q) ∧ r ↔ p ∧ (q ∧ r) := sorry\nexample : (p ∨ q) ∨ r ↔ p ∨ (q ∨ r) := sorry\n\n-- distributivity\nexample : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := sorry\nexample : p ∨ (q ∧ r) ↔ (p ∨ q) ∧ (p ∨ r) := sorry\n\n-- other properties\nexample : (p → (q → r)) ↔ (p ∧ q → r) := sorry\nexample : ((p ∨ q) → r) ↔ (p → r) ∧ (q → r) := sorry\nexample : ¬(p ∨ q) ↔ ¬p ∧ ¬q := sorry\nexample : ¬p ∨ ¬q → ¬(p ∧ q) := sorry\nexample : ¬(p ∧ ¬p) := sorry\nexample : p ∧ ¬q → ¬(p → q) := sorry\nexample : ¬p → (p → q) := sorry\nexample : (¬p ∨ q) → (p → q) := sorry\nexample : p ∨ False ↔ p := sorry\nexample : p ∧ False ↔ False := sorry\nexample : (p → q) → (¬q → ¬p) := sorry\n```\n\nProve the following identities, replacing the {lean}`sorry` placeholders\nwith actual proofs. These require classical reasoning.\n\n```lean\nopen Classical\n\nvariable (p q r : Prop)\n\nexample : (p → q ∨ r) → ((p → q) ∨ (p → r)) := sorry\nexample : ¬(p ∧ q) → ¬p ∨ ¬q := sorry\nexample : ¬(p → q) → p ∧ ¬q := sorry\nexample : (p → q) → (¬p ∨ q) := sorry\nexample : (¬q → ¬p) → (p → q) := sorry\nexample : p ∨ ¬p := sorry\nexample : (((p → q) → p) → p) := sorry\n```\n\nProve {lean}`¬(p ↔ ¬p)` without using classical logic.\n"
  },
  {
    "path": "book/TPiL/QuantifiersEquality.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre\nopen Verso.Genre.Manual hiding tactic\nopen TPiL\n\n#doc (Manual) \"Quantifiers and Equality\" =>\n%%%\ntag := \"quantifiers-and-equality\"\n%%%\n\n```setup\nvariable {α : Type u} (p : α → Prop) (x y t : α) (r : α → α → Prop) {β : α → Type v}\n```\n\nThe last chapter introduced you to methods that construct proofs of\nstatements involving the propositional connectives. In this chapter,\nwe extend the repertoire of logical constructions to include the\nuniversal and existential quantifiers, and the equality relation.\n\n# The Universal Quantifier\n%%%\ntag := \"the-universal-quantifier\"\n%%%\n\nNotice that if {lean}`α` is any type, we can represent a unary predicate\n{lean}`p` on {lean}`α` as an object of type {lean}`α → Prop`. In that case, given\n{lean}`x : α`, {lean}`p x` denotes the assertion that {lean}`p` holds of\n{lean}`x`. Similarly, an object {lean}`r : α → α → Prop` denotes a binary\nrelation on {lean}`α`: given {lean}`x y : α`, {lean}`r x y` denotes the assertion\nthat {lean}`x` is related to {lean}`y`.\n\nThe universal quantifier, {lean}`∀ x : α, p x` is supposed to denote the\nassertion that “for every {lean}`x : α`, {lean}`p x`” holds. As with the\npropositional connectives, in systems of natural deduction, “forall”\nis governed by an introduction and elimination rule. Informally, the\nintroduction rule states:\n\n> Given a proof of {lean}`p x`, in a context where {lean}`x : α` is arbitrary, we obtain a proof {lean}`∀ x : α, p x`.\n\nThe elimination rule states:\n\n> Given a proof {lean}`∀ x : α, p x` and any term {lean}`t : α`, we obtain a proof of {lean}`p t`.\n\nAs was the case for implication, the propositions-as-types\ninterpretation now comes into play. Remember the introduction and\nelimination rules for dependent arrow types:\n\n```setup\nvariable {α : Type u} (p : α → Prop) (x y : α) (r : α → α → Prop) {β : α → Type v} {t : {x : α} → β x}\n```\n> Given a term {lean}`t` of type {lean}`β x`, in a context where {lean}`x : α` is arbitrary, we have {lean}`(fun x : α => t) : (x : α) → β x`.\n\n```setup\nvariable {α : Type u} (p : α → Prop) (x y : α) (r : α → α → Prop) {β : α → Type v} {t : α} {s : (x : α) → β x}\n```\n\nThe elimination rule states:\n\n> Given a term {lean}`s : (x : α) → β x` and any term {lean}`t : α`, we have {lean}`s t : β t`.\n\nIn the case where {lean}`p x` has type {lean}`Prop`, if we replace\n{lean}`(x : α) → β x` with {lean}`∀ x : α, p x`, we can read these as the correct rules\nfor building proofs involving the universal quantifier.\n\n:::setup\n```\nvariable {α : Type u} {β : Type v} {p : {x : α} → Prop} (q : Prop)\n```\nThe Calculus of Constructions therefore identifies dependent arrow\ntypes with forall-expressions in this way. If {lean}`p` is any expression,\n{lean}`∀ x : α, p` is nothing more than alternative notation for\n{lean}`(x : α) → p`, with the idea that the former is more natural than the latter\nin cases where {lean}`p` is a proposition. Typically, the expression {lean}`p`\nwill depend on {leanRef}`x : α`. Recall that, in the case of ordinary\nfunction spaces, we could interpret {lean}`α → β` as the special case of\n{lean}`(x : α) → β` in which {lean}`β` does not depend on {leanRef}`x`. Similarly, we\ncan think of an implication {lean}`p → q` between propositions as the\nspecial case of {lean}`∀ x : p, q` in which the expression {lean}`q` does not\ndepend on {leanRef}`x`.\n:::\n\nHere is an example of how the {tech}[propositions-as-types] correspondence gets put into practice.\n\n```lean\nexample (α : Type) (p q : α → Prop) :\n    (∀ x : α, p x ∧ q x) → ∀ y : α, p y :=\n  fun h : ∀ x : α, p x ∧ q x =>\n  fun y : α =>\n  show p y from (h y).left\n```\n\nAs a notational convention, we give the universal quantifier the\nwidest scope possible, so parentheses are needed to limit the\nquantifier over {leanRef}`x` to the hypothesis in the example above. The\ncanonical way to prove {lean}`∀ y : α, p y` is to take an arbitrary {leanRef}`y`,\nand prove {leanRef}`p y`. This is the introduction rule. Now, given that\n{leanRef}`h` has type {leanRef}`∀ x : α, p x ∧ q x`, the expression {leanRef}`h y` has type\n{leanRef}`p`{lit}` `{leanRef}`y`{lit}`  ∧  `{leanRef}`q`{lit}` `{leanRef}`y`. This is the elimination rule. Taking the left conjunct\ngives the desired conclusion, {leanRef}`p y`.\n\n:::setup\n```\nvariable {x z : α}\n```\n\nRemember that expressions which differ up to renaming of bound\nvariables are considered to be equivalent. So, for example, we could\nhave used the same variable, {lean}`x`, in both the hypothesis and\nconclusion, and instantiated it by a different variable, {lean}`z`, in the\nproof:\n:::\n\n```lean\nexample (α : Type) (p q : α → Prop) :\n    (∀ x : α, p x ∧ q x) → ∀ x : α, p x :=\n  fun h : ∀ x : α, p x ∧ q x =>\n  fun z : α =>\n  show p z from And.left (h z)\n```\n\nAs another example, here is how we can express the fact that a relation, {lean}`r`, is transitive:\n\n```lean\nvariable (α : Type) (r : α → α → Prop)\nvariable (trans_r : ∀ x y z, r x y → r y z → r x z)\n\nvariable (a b c : α)\nvariable (hab : r a b) (hbc : r b c)\n\n#check trans_r    -- trans_r : ∀ (x y z : α), r x y → r y z → r x z\n\n#check trans_r a b c -- trans_r a b c : r a b → r b c → r a c\n\n#check trans_r a b c hab -- trans_r a b c hab : r b c → r a c\n\n#check trans_r a b c hab hbc -- trans_r a b c hab hbc : r a c\n```\n\nThink about what is going on here. When we instantiate {leanRef}`trans_r` at\nthe values {leanRef}`a b c`, we end up with a proof of {leanRef}`r`{lit}` `{leanRef}`a b`{lit}`  →  `{leanRef}`r`{lit}` `{leanRef}`b c`{lit}`  →  `{leanRef}`r`{lit}` `{leanRef}`a`{lit}` `{leanRef}`c`.\nApplying this to the “hypothesis” {leanRef}`hab : r a b`, we get a proof\nof the implication {leanRef}`r`{lit}` `{leanRef}`b c`{lit}`  →  `{leanRef}`r`{lit}` `{leanRef}`a`{lit}` `{leanRef}`c`. Finally, applying it to the\nhypothesis {leanRef}`hbc` yields a proof of the conclusion {leanRef}`r`{lit}` `{leanRef}`a`{lit}` `{leanRef}`c`.\n\nIn situations like this, it can be tedious to supply the arguments\n{leanRef}`a b c`, when they can be inferred from {leanRef}`hab hbc`. For that reason, it\nis common to make these arguments implicit:\n\n```lean\nvariable (α : Type) (r : α → α → Prop)\nvariable (trans_r : ∀ {x y z}, r x y → r y z → r x z)\n\nvariable (a b c : α)\nvariable (hab : r a b) (hbc : r b c)\n\n#check trans_r\n\n#check trans_r hab\n\n#check trans_r hab hbc\n```\n\nThe advantage is that we can simply write {leanRef}`trans_r hab hbc` as a\nproof of {leanRef}`r`{lit}` `{leanRef}`a`{lit}` `{leanRef}`c`. A disadvantage is that Lean does not have enough\ninformation to infer the types of the arguments in the expressions\n{leanRef}`trans_r` and {leanRef}`trans_r hab`. The output of the first {kw}`#check`\ncommand is {lit}`r ?m.1 ?m.2 → r ?m.2 ?m.3 → r ?m.1 ?m.3`, indicating\nthat the implicit arguments are unspecified in this case.\n\nHere is an example of how we can carry out elementary reasoning with an equivalence relation:\n\n```lean\nvariable (α : Type) (r : α → α → Prop)\n\nvariable (refl_r : ∀ x, r x x)\nvariable (symm_r : ∀ {x y}, r x y → r y x)\nvariable (trans_r : ∀ {x y z}, r x y → r y z → r x z)\n\nexample (a b c d : α) (hab : r a b) (hcb : r c b) (hcd : r c d) : r a d :=\n  trans_r (trans_r hab (symm_r hcb)) hcd\n```\n\nTo get used to using universal quantifiers, you should try some of the\nexercises at the end of this section.\n\n:::setup\n```\nuniverse i j\nvariable (α : Sort i) (β : {x : α} → Sort j) {x : α}\n```\n\nIt is the typing rule for dependent arrow types, and the universal\nquantifier in particular, that distinguishes {lean}`Prop` from other\ntypes.  Suppose we have {lean}`α : Sort i` and {lean}`β : Sort j`, where the\nexpression {lean}`β` may depend on a variable {lean}`x : α`. Then\n{lean}`(x : α) → β` is an element of {lean}`Sort (imax i j)`, where {lit}`imax i j` is the\nmaximum of {lit}`i` and {lit}`j` if {lit}`j` is not {lit}`0`, and {lit}`0` otherwise.\n\nThe idea is as follows. If {lit}`j` is not {lit}`0`, then {lean}`(x : α) → β` is\nan element of {lean}`Sort (max i j)`. In other words, the type of\ndependent functions from {lean}`α` to {lean}`β` “lives” in the universe whose\nindex is the maximum of {lit}`i` and {lit}`j`. Suppose, however, that {lean}`β`\nis of {lean}`Sort 0`, that is, an element of {lean}`Prop`. In that case,\n{lean}`(x : α) → β` is an element of {lean}`Sort 0` as well, no matter which\ntype universe {lean}`α` lives in. In other words, if {lean}`β` is a\nproposition depending on {lean}`α`, then {lean}`∀ x : α, β` is again a\nproposition. This reflects the interpretation of {lean}`Prop` as the type\nof propositions rather than data, and it is what makes {lean}`Prop`\n{deftech}_impredicative_.\n\nThe term “{deftech}[predicative]” stems from foundational developments around the\nturn of the twentieth century, when logicians such as Poincaré and\nRussell blamed set-theoretic paradoxes on the “vicious circles” that\narise when we define a property by quantifying over a collection that\nincludes the very property being defined. Notice that if {lean}`α` is any\ntype, we can form the type {lean}`α → Prop` of all predicates on {lean}`α`\n(the “power type of {lean}`α`”). The impredicativity of {lean}`Prop` means that we\ncan form propositions that quantify over {lean}`α → Prop`. In particular,\nwe can define predicates on {lean}`α` by quantifying over all predicates\non {lean}`α`, which is exactly the type of circularity that was once\nconsidered problematic.\n:::\n\n# Equality\n%%%\ntag := \"equality\"\n%%%\n\nLet us now turn to one of the most fundamental relations defined in\nLean's library, namely, the equality relation. In the chapter on {ref \"inductive-types\"}[inductive types],\nwe will explain _how_ equality is defined from the primitives of Lean's logical framework.\nIn the meanwhile, here we explain how to use it.\n\nOf course, a fundamental property of equality is that it is an equivalence relation:\n\n```lean\n#check Eq.refl    -- Eq.refl.{u_1} {α : Sort u_1} (a : α) : a = a\n\n#check Eq.symm    -- Eq.symm.{u} {α : Sort u} {a b : α} (h : a = b) : b = a\n\n#check Eq.trans   -- Eq.trans.{u} {α : Sort u} {a b c : α} (h₁ : a = b) (h₂ : b = c) : a = c\n```\n\nWe can make the output easier to read by telling Lean not to insert\nthe implicit arguments (which are displayed here as metavariables).\n\n```lean\nuniverse u\n\n#check @Eq.refl.{u}   -- @Eq.refl : ∀ {α : Sort u} (a : α), a = a\n\n#check @Eq.symm.{u}   -- @Eq.symm : ∀ {α : Sort u} {a b : α}, a = b → b = a\n\n#check @Eq.trans.{u}  -- @Eq.trans : ∀ {α : Sort u} {a b c : α}, a = b → b = c → a = c\n```\n\nThe inscription {lit}`.{u}` tells Lean to instantiate the constants at the universe {lit}`u`.\n\nThus, for example, we can specialize the example from the previous section to the equality relation:\n\n```lean\nvariable (α : Type) (a b c d : α)\nvariable (hab : a = b) (hcb : c = b) (hcd : c = d)\n\nexample : a = d :=\n  Eq.trans (Eq.trans hab (Eq.symm hcb)) hcd\n```\n\nWe can also use the projection notation:\n\n```lean\nvariable (α : Type) (a b c d : α)\nvariable (hab : a = b) (hcb : c = b) (hcd : c = d)\n------\nexample : a = d := (hab.trans hcb.symm).trans hcd\n```\n\nReflexivity is more powerful than it looks. Recall that terms in the\nCalculus of Constructions have a computational interpretation, and\nthat the logical framework treats terms with a common reduct as the\nsame. As a result, some nontrivial identities can be proved by\nreflexivity:\n\n```lean\nvariable (α β : Type)\n\nexample (f : α → β) (a : α) : (fun x => f x) a = f a := Eq.refl _\nexample (a : α) (b : β) : (a, b).1 = a := Eq.refl _\nexample : 2 + 3 = 5 := Eq.refl _\n```\n\nThis feature of the framework is so important that the library defines a notation {lean}`rfl` for {lean}`Eq.refl _`:\n\n```lean\nvariable (α β : Type)\n------\nexample (f : α → β) (a : α) : (fun x => f x) a = f a := rfl\nexample (a : α) (b : β) : (a, b).1 = a := rfl\nexample : 2 + 3 = 5 := rfl\n```\n\n:::setup\n```\nvariable {a b : α} {p : α → Prop} {h1 : a = b} {h2 : p a}\n```\n\nEquality is much more than an equivalence relation, however. It has\nthe important property that every assertion respects the equivalence,\nin the sense that we can substitute equal expressions without changing\nthe truth value. That is, given {lean}`h1 : a = b` and {lean}`h2 : p a`, we\ncan construct a proof for {lean}`p b` using substitution:\n{lean}`Eq.subst h1 h2`.\n:::\n\n```lean\nexample (α : Type) (a b : α) (p : α → Prop)\n        (h1 : a = b) (h2 : p a) : p b :=\n  Eq.subst h1 h2\n\nexample (α : Type) (a b : α) (p : α → Prop)\n    (h1 : a = b) (h2 : p a) : p b :=\n  h1 ▸ h2\n```\n\nThe triangle in the second presentation is a macro built on top of\n{lean}`Eq.subst` and {lean}`Eq.symm`, and you can enter it by typing {kbd}`\\t`.\n\nThe rule {lean}`Eq.subst` is used to define the following auxiliary rules,\nwhich carry out more explicit substitutions. They are designed to deal\nwith applicative terms, that is, terms of form {lean}`s t`. Specifically,\n{lean}`congrArg` can be used to replace the argument, {lean}`congrFun` can be\nused to replace the term that is being applied, and {lean}`congr` can be\nused to replace both at once.\n\n```lean\nvariable (α : Type)\nvariable (a b : α)\nvariable (f g : α → Nat)\nvariable (h₁ : a = b)\nvariable (h₂ : f = g)\n\nexample : f a = f b := congrArg f h₁\nexample : f a = g a := congrFun h₂ a\nexample : f a = g b := congr h₂ h₁\n```\n\nLean's library contains a large number of common identities, such as these:\n\n```lean\nvariable (a b c : Nat)\n\nexample : a + 0 = a := Nat.add_zero a\nexample : 0 + a = a := Nat.zero_add a\nexample : a * 1 = a := Nat.mul_one a\nexample : 1 * a = a := Nat.one_mul a\nexample : a + b = b + a := Nat.add_comm a b\nexample : a + b + c = a + (b + c) := Nat.add_assoc a b c\nexample : a * b = b * a := Nat.mul_comm a b\nexample : a * b * c = a * (b * c) := Nat.mul_assoc a b c\nexample : a * (b + c) = a * b + a * c := Nat.mul_add a b c\nexample : a * (b + c) = a * b + a * c := Nat.left_distrib a b c\nexample : (a + b) * c = a * c + b * c := Nat.add_mul a b c\nexample : (a + b) * c = a * c + b * c := Nat.right_distrib a b c\n```\n\nNote that {lean}`Nat.mul_add` and {lean}`Nat.add_mul` are alternative names\nfor {lean}`Nat.left_distrib` and {lean}`Nat.right_distrib`, respectively.  The\nproperties above are stated for the natural numbers (type {lean}`Nat`).\n\nHere is an example of a calculation in the natural numbers that uses\nsubstitution combined with associativity and distributivity.\n\n```lean\nexample (x y : Nat) :\n    (x + y) * (x + y) =\n    x * x + y * x + x * y + y * y :=\n  have h1 : (x + y) * (x + y) = (x + y) * x + (x + y) * y :=\n    Nat.mul_add (x + y) x y\n  have h2 : (x + y) * (x + y) = x * x + y * x + (x * y + y * y) :=\n    (Nat.add_mul x y x) ▸ (Nat.add_mul x y y) ▸ h1\n  h2.trans (Nat.add_assoc (x * x + y * x) (x * y) (y * y)).symm\n```\n\n:::setup\n```\nvariable {α : Type u}\n```\n\n```lean (show := false)\nexample {α : Type u} {x y : α} {h : x = y} {p : α → Prop} {e : p x} : p y := h ▸ e\n```\n\n\nNotice that the second implicit parameter to {lean}`Eq.subst`, which\nprovides the context in which the substitution is to occur, has type\n{lean}`α → Prop`.  Inferring this predicate therefore requires an instance\nof _higher-order unification_. In full generality, the problem of\ndetermining whether a higher-order unifier exists is undecidable, and\nLean can at best provide imperfect and approximate solutions to the\nproblem. As a result, {lean}`Eq.subst` doesn't always do what you want it\nto.  The macro {leanRef}`h ▸ e` uses more effective heuristics for computing\nthis implicit parameter, and often succeeds in situations where\napplying {lean}`Eq.subst` fails.\n\n:::\n\nBecause equational reasoning is so common and important, Lean provides\na number of mechanisms to carry it out more effectively. The next\nsection offers syntax that allow you to write calculational proofs in\na more natural and perspicuous way. But, more importantly, equational\nreasoning is supported by a term rewriter, a simplifier, and other\nkinds of automation. The term rewriter and simplifier are described\nbriefly in the next section, and then in greater detail in the next\nchapter.\n\n# Calculational Proofs\n%%%\ntag := \"calculational-proofs\"\n%%%\n\nA calculational proof is just a chain of intermediate results that are\nmeant to be composed by basic principles such as the transitivity of\nequality. In Lean, a calculational proof starts with the keyword\n{kw}`calc`, and has the following syntax:\n\n```\ncalc\n  <expr>_0  'op_1'  <expr>_1  ':='  <proof>_1\n  '_'       'op_2'  <expr>_2  ':='  <proof>_2\n  ...\n  '_'       'op_n'  <expr>_n  ':='  <proof>_n\n```\n\nNote that the {kw}`calc` relations all have the same indentation. Each\n{lit}`<proof>_i` is a proof for {lit}`<expr>_{i-1} op_i <expr>_i`.\n\nWe can also use {lit}`_` in the first relation (right after {lit}`<expr>_0`)\nwhich is useful to align the sequence of relation/proof pairs:\n\n```\ncalc <expr>_0\n    '_' 'op_1' <expr>_1 ':=' <proof>_1\n    '_' 'op_2' <expr>_2 ':=' <proof>_2\n    ...\n    '_' 'op_n' <expr>_n ':=' <proof>_n\n```\n\nHere is an example:\n\n```lean\nvariable (a b c d e : Nat)\n\ntheorem T\n    (h1 : a = b)\n    (h2 : b = c + 1)\n    (h3 : c = d)\n    (h4 : e = 1 + d) :\n    a = e :=\n  calc\n    a = b      := h1\n    _ = c + 1  := h2\n    _ = d + 1  := congrArg Nat.succ h3\n    _ = 1 + d  := Nat.add_comm d 1\n    _ = e      := Eq.symm h4\n```\n\nThis style of writing proofs is most effective when it is used in\nconjunction with the {tactic}`simp` and {tactic}`rw` tactics, which are\ndiscussed in greater detail in the next chapter. For example, using\n{tactic}`rw` for rewrite, the proof above could be written\nas follows:\n\n```lean\nvariable (a b c d e : Nat)\n------\ntheorem T\n    (h1 : a = b)\n    (h2 : b = c + 1)\n    (h3 : c = d)\n    (h4 : e = 1 + d) :\n    a = e :=\n  calc\n    a = b      := by rw [h1]\n    _ = c + 1  := by rw [h2]\n    _ = d + 1  := by rw [h3]\n    _ = 1 + d  := by rw [Nat.add_comm]\n    _ = e      := by rw [h4]\n```\n\nEssentially, the {kw}`rw` tactic uses a given equality (which can be a\nhypothesis, a theorem name, or a complex term) to “rewrite” the\ngoal. If doing so reduces the goal to an identity {lean}`t = t`, the\ntactic applies reflexivity to prove it.\n\nRewrites can be applied sequentially, so that the proof above can be\nshortened to this:\n\n```lean\nvariable (a b c d e : Nat)\n------\ntheorem T\n    (h1 : a = b)\n    (h2 : b = c + 1)\n    (h3 : c = d)\n    (h4 : e = 1 + d) :\n    a = e :=\n  calc\n    a = d + 1  := by rw [h1, h2, h3]\n    _ = 1 + d  := by rw [Nat.add_comm]\n    _ = e      := by rw [h4]\n```\n\nOr even this:\n\n```lean\nvariable (a b c d e : Nat)\n------\ntheorem T\n    (h1 : a = b)\n    (h2 : b = c + 1)\n    (h3 : c = d)\n    (h4 : e = 1 + d) :\n    a = e :=\n  by rw [h1, h2, h3, Nat.add_comm, h4]\n```\n\n\nThe {kw}`simp` tactic, instead, rewrites the goal by applying the given\nidentities repeatedly, in any order, anywhere they are applicable in a\nterm. It also uses other rules that have been previously declared to\nthe system, and applies commutativity wisely to avoid looping. As a\nresult, we can also prove the theorem as follows:\n\n```lean\nvariable (a b c d e : Nat)\n------\ntheorem T\n    (h1 : a = b)\n    (h2 : b = c + 1)\n    (h3 : c = d)\n    (h4 : e = 1 + d) :\n    a = e :=\n  by simp [h1, h2, h3, Nat.add_comm, h4]\n```\n\nWe will discuss variations of {kw}`rw` and {kw}`simp` in the next chapter.\n\nThe {kw}`calc` command can be configured for any relation that supports\nsome form of transitivity. It can even combine different relations.\n\n```lean\nvariable (a b c d : Nat)\nexample (h1 : a = b) (h2 : b ≤ c) (h3 : c + 1 < d) : a < d :=\n  calc\n    a = b     := h1\n    _ < b + 1 := Nat.lt_succ_self b\n    _ ≤ c + 1 := Nat.succ_le_succ h2\n    _ < d     := h3\n```\n\nYou can “teach” {kw}`calc` new transitivity theorems by adding new instances\nof the {lean}`Trans` type class. Type classes are introduced later, but the following\nsmall example demonstrates how to extend the {kw}`calc` notation using new {lean}`Trans` instances.\n\n```lean\ndef divides (x y : Nat) : Prop :=\n  ∃ k, k*x = y\n\ndef divides_trans (h₁ : divides x y) (h₂ : divides y z) : divides x z :=\n  let ⟨k₁, d₁⟩ := h₁\n  let ⟨k₂, d₂⟩ := h₂\n  ⟨k₁ * k₂, by rw [Nat.mul_comm k₁ k₂, Nat.mul_assoc, d₁, d₂]⟩\n\ndef divides_mul (x : Nat) (k : Nat) : divides x (k*x) :=\n  ⟨k, rfl⟩\n\ninstance : Trans divides divides divides where\n  trans := divides_trans\n\nexample (h₁ : divides x y) (h₂ : y = z) : divides x (2*z) :=\n  calc\n    divides x y     := h₁\n    _ = z           := h₂\n    divides _ (2*z) := divides_mul ..\n\ninfix:50 \" | \" => divides\n\nexample (h₁ : divides x y) (h₂ : y = z) : divides x (2*z) :=\n  calc\n    x | y   := h₁\n    _ = z   := h₂\n    _ | 2*z := divides_mul ..\n```\n\nThe example above also makes it clear that you can use {kw}`calc` even if you do not have an infix\nnotation for your relation. Lean already includes the standard Unicode notation for divisibility\n(using {lit}`∣`, which can be entered as {kbd}`\\dvd` or {kbd}`\\mid`), so the example above uses the ordinary\nvertical bar to avoid a conflict. In practice, this is not a good idea, as it risks confusion with\nthe ASCII {lit}`|` used in the {kw}`match`{lit}`  ...  `{kw}`with` expression.\n\nWith {kw}`calc`, we can write the proof in the last section in a more\nnatural and perspicuous way.\n\n```lean\nvariable (x y : Nat)\n\nexample : (x + y) * (x + y) = x * x + y * x + x * y + y * y :=\n  calc\n    (x + y) * (x + y) = (x + y) * x + (x + y) * y  :=\n      by rw [Nat.mul_add]\n    _ = x * x + y * x + (x + y) * y                :=\n      by rw [Nat.add_mul]\n    _ = x * x + y * x + (x * y + y * y)            :=\n      by rw [Nat.add_mul]\n    _ = x * x + y * x + x * y + y * y              :=\n      by rw [←Nat.add_assoc]\n```\n\nThe alternative {kw}`calc` notation is worth considering here. When the\nfirst expression is taking this much space, using {lit}`_` in the first\nrelation naturally aligns all relations:\n\n```lean\nvariable (x y : Nat)\n\nexample : (x + y) * (x + y) = x * x + y * x + x * y + y * y :=\n  calc (x + y) * (x + y)\n    _ = (x + y) * x + (x + y) * y       :=\n      by rw [Nat.mul_add]\n    _ = x * x + y * x + (x + y) * y     :=\n      by rw [Nat.add_mul]\n    _ = x * x + y * x + (x * y + y * y) :=\n      by rw [Nat.add_mul]\n    _ = x * x + y * x + x * y + y * y   :=\n      by rw [←Nat.add_assoc]\n```\n\nHere the left arrow before {lean}`Nat.add_assoc` tells rewrite to use the\nidentity in the opposite direction. (You can enter it with {kbd}`\\l` or\nuse the ASCII equivalent, {lit}`<-`.) If brevity is what we are after,\nboth {tactic}`rw` and {tactic}`simp` can do the job on their own:\n\n```lean\nvariable (x y : Nat)\nexample : (x + y) * (x + y) = x * x + y * x + x * y + y * y := by\n  rw [Nat.mul_add, Nat.add_mul, Nat.add_mul, ←Nat.add_assoc]\n\nexample : (x + y) * (x + y) = x * x + y * x + x * y + y * y := by\n  simp [Nat.mul_add, Nat.add_mul, Nat.add_assoc]\n```\n\n# The Existential Quantifier\n%%%\ntag := \"the-existential-quantifier\"\n%%%\n\nFinally, consider the existential quantifier, which can be written as\neither {lean}`exists x : α, p x` or {lean}`∃ x : α, p x`.  Both versions are\nactually notationally convenient abbreviations for a more long-winded\nexpression, {lean}`Exists (fun x : α => p x)`, defined in Lean's library.\n\nAs you should by now expect, the library includes both an introduction\nrule and an elimination rule. The introduction rule is\nstraightforward: to prove {lean}`∃ x : α, p x`, it suffices to provide a\nsuitable term {lean}`t` and a proof of {lean}`p t`. Here are some examples:\n\n```lean\nexample : ∃ x : Nat, x > 0 :=\n  have h : 1 > 0 := Nat.zero_lt_succ 0\n  Exists.intro 1 h\n\nexample (x : Nat) (h : x > 0) : ∃ y, y < x :=\n  Exists.intro 0 h\n\nexample (x y z : Nat) (hxy : x < y) (hyz : y < z) : ∃ w, x < w ∧ w < z :=\n  Exists.intro y (And.intro hxy hyz)\n\n#check @Exists.intro -- @Exists.intro : ∀ {α : Sort u_1} {p : α → Prop} (w : α), p w → Exists p\n```\n\n:::setup\n```\nvariable {t : α} {p : α → Prop} (h : p t)\n```\nWe can use the anonymous constructor notation {lean (type := \"Exists (fun x : α => p x)\")}`⟨t, h⟩` for\n{lean}`Exists.intro t h`, when the type is clear from the context.\n:::\n\n```lean\nexample : ∃ x : Nat, x > 0 :=\n  have h : 1 > 0 := Nat.zero_lt_succ 0\n  ⟨1, h⟩\n\nexample (x : Nat) (h : x > 0) : ∃ y, y < x :=\n  ⟨0, h⟩\n\nexample (x y z : Nat) (hxy : x < y) (hyz : y < z) : ∃ w, x < w ∧ w < z :=\n  ⟨y, hxy, hyz⟩\n```\n\n:::setup\n```\nvariable (p : α → Prop) (g : Nat → Nat → Nat) (hg : g 0 0 = 0)\n```\n\nNote that {lean}`Exists.intro` has implicit arguments: Lean has to infer\nthe predicate {lean}`p : α → Prop` in the conclusion {lean}`∃ x, p x`.  This\nis not a trivial affair. For example, if we have\n{lean}`hg : g 0 0 = 0` and write {lean}`Exists.intro 0 hg`, there are many possible values\nfor the predicate {lean}`p`, corresponding to the theorems {lean}`∃ x, g x x = x`,\n{lean}`∃ x, g x x = 0`, {lean}`∃ x, g x 0 = x`, etc. Lean uses the\ncontext to infer which one is appropriate. This is illustrated in the\nfollowing example, in which we set the option {option}`pp.explicit` to true\nto ask Lean's pretty-printer to show the implicit arguments.\n:::\n\n```lean\nvariable (g : Nat → Nat → Nat)\n\ntheorem gex1 (hg : g 0 0 = 0) : ∃ x, g x x = x := ⟨0, hg⟩\ntheorem gex2 (hg : g 0 0 = 0) : ∃ x, g x 0 = x := ⟨0, hg⟩\ntheorem gex3 (hg : g 0 0 = 0) : ∃ x, g 0 0 = x := ⟨0, hg⟩\ntheorem gex4 (hg : g 0 0 = 0) : ∃ x, g x x = 0 := ⟨0, hg⟩\n\nset_option pp.explicit true  -- display implicit arguments\n\n#print gex1\n\n#print gex2\n\n#print gex3\n\n#print gex4\n```\n\n:::setup\n```\nvariable (q : Prop) (α : Type u) (p : α → Prop) (w : α) (x : α)\n```\n\nWe can view {lean}`Exists.intro` as an information-hiding operation, since\nit hides the witness to the body of the assertion. The existential\nelimination rule, {lean}`Exists.elim`, performs the opposite operation. It\nallows us to prove a proposition {lean}`q` from {lean}`∃ x : α, p x`, by\nshowing that {lean}`q` follows from {lean}`p w` for an arbitrary value\n{lean}`w`. Roughly speaking, since we know there is an {lean}`x` satisfying\n{lean}`p x`, we can give it a name, say, {lean}`w`. If {lean}`q` does not mention\n{lean}`w`, then showing that {lean}`q` follows from {lean}`p w` is tantamount to\nshowing that {lean}`q` follows from the existence of any such {lean}`x`. Here\nis an example:\n:::\n\n```lean\nvariable (α : Type) (p q : α → Prop)\n\nexample (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=\n  Exists.elim h\n    (fun w =>\n     fun hw : p w ∧ q w =>\n     show ∃ x, q x ∧ p x from ⟨w, hw.right, hw.left⟩)\n```\n\n:::setup\n```\nvariable {α : Type u} (p : α → Prop) {β : α → Type} (a : α) (h : p a) (h' : β a)\n```\n\nIt may be helpful to compare the exists-elimination rule to the\nor-elimination rule: the assertion {lean}`∃ x : α, p x` can be thought of\nas a big disjunction of the propositions {lean}`p a`, as {lean}`a` ranges over\nall the elements of {lean}`α`. Note that the anonymous constructor\nnotation {leanRef}`⟨w, hw.right, hw.left⟩` abbreviates a nested constructor\napplication; we could equally well have written {lit}`⟨`{leanRef}`w`{lit}`, ⟨`{leanRef}`hw.right`{lit}`, `{leanRef}`hw.left`{lit}`⟩⟩`.\n\nNotice that an existential proposition is very similar to a sigma\ntype, as described in dependent types section.  The difference is that\nexistential propositions are _propositions_, while sigma types are _types_.\nOtherwise, they are very similar. Given a predicate {lean}`p : α → Prop` and a family of types {lean}`β : α → Type`,\nfor a term {lean}`a : α` with {lean}`h : p a` and {lean}`h' : β a`, the term {lean}`Exists.intro a h` has\ntype {lean}`(∃ x : α, p x) : Prop`, while {lean}`Sigma.mk a h'` has type\n{lean}`(Σ x : α, β x)`. The similarity between {lit}`∃` and {lit}`Σ` is another\ninstance of the {tech}[Curry-Howard isomorphism].\n:::\n\nLean provides a more convenient way to eliminate from an existential\nquantifier with the {kw}`match` expression:\n\n```lean\nvariable (α : Type) (p q : α → Prop)\n\nexample (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=\n  match h with\n  | ⟨w, hw⟩ => ⟨w, hw.right, hw.left⟩\n```\n\nThe {kw}`match` expression is part of Lean's function definition system,\nwhich provides convenient and expressive ways of defining complex\nfunctions.  Once again, it is the {tech}[Curry-Howard isomorphism] that allows\nus to co-opt this mechanism for writing proofs as well.  The {kw}`match`\nstatement “destructs” the existential assertion into the components\n{leanRef}`w` and {leanRef}`hw`, which can then be used in the body of the statement\nto prove the proposition. We can annotate the types used in the match\nfor greater clarity:\n\n```lean\nvariable (α : Type) (p q : α → Prop)\n------\nexample (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=\n  match h with\n  | ⟨(w : α), (hw : p w ∧ q w)⟩ => ⟨w, hw.right, hw.left⟩\n```\n\nWe can even use the match statement to decompose the conjunction at the same time:\n\n```lean\nvariable (α : Type) (p q : α → Prop)\n------\nexample (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=\n  match h with\n  | ⟨w, hpw, hqw⟩ => ⟨w, hqw, hpw⟩\n```\n\nLean also provides a pattern-matching {kw}`let` expression:\n\n```lean\nvariable (α : Type) (p q : α → Prop)\n------\nexample (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=\n  let ⟨w, hpw, hqw⟩ := h\n  ⟨w, hqw, hpw⟩\n```\n\nThis is essentially just alternative notation for the {kw}`match`\nconstruct above. Lean will even allow us to use an implicit {kw}`match`\nin the {kw}`fun` expression:\n\n```lean\nvariable (α : Type) (p q : α → Prop)\n------\nexample : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x :=\n  fun ⟨w, hpw, hqw⟩ => ⟨w, hqw, hpw⟩\n```\n\nWe will see in {ref \"induction-and-recursion\"}[Induction and Recursion] that all these variations are\ninstances of a more general pattern-matching construct.\n\n:::setup\n```\ndef IsEven (a : Nat) := ∃ b, a = 2 * b\nvariable (a : Nat)\n```\n\nIn the following example, we define {lean}`IsEven a` as {lean}`∃ b, a = 2 * b`,\nand then we show that the sum of two even numbers is an even number.\n:::\n\n```lean\ndef IsEven (a : Nat) := ∃ b, a = 2 * b\n\ntheorem even_plus_even (h1 : IsEven a) (h2 : IsEven b) :\n    IsEven (a + b) :=\n  Exists.elim h1 (fun w1 (hw1 : a = 2 * w1) =>\n  Exists.elim h2 (fun w2 (hw2 : b = 2 * w2) =>\n    Exists.intro (w1 + w2)\n      (calc a + b\n        _ = 2 * w1 + 2 * w2 := by rw [hw1, hw2]\n        _ = 2 * (w1 + w2)   := by rw [Nat.mul_add])))\n```\n\nUsing the various gadgets described in this chapter—the match\nstatement, anonymous constructors, and the {tactic}`rewrite` tactic, we can\nwrite this proof concisely as follows:\n\n```lean\ndef IsEven (a : Nat) := ∃ b, a = 2 * b\n------\ntheorem even_plus_even (h1 : IsEven a) (h2 : IsEven b) :\n    IsEven (a + b) :=\n  match h1, h2 with\n  | ⟨w1, hw1⟩, ⟨w2, hw2⟩ =>\n    ⟨w1 + w2, by rw [hw1, hw2, Nat.mul_add]⟩\n```\n\n:::leanFirst\nJust as the constructive “or” is stronger than the classical “or,” so,\ntoo, is the constructive “exists” stronger than the classical\n“exists”. For example, the following implication requires classical\nreasoning because, from a constructive standpoint, knowing that it is\nnot the case that every {leanRef}`x` satisfies {leanRef}`¬ p` is not the same as\nhaving a particular {leanRef}`x` that satisfies {leanRef}`p`.\n\n```lean\nopen Classical\nvariable (p : α → Prop)\n\nexample (h : ¬ ∀ x, ¬ p x) : ∃ x, p x :=\n  byContradiction\n    (fun h1 : ¬ ∃ x, p x =>\n      have h2 : ∀ x, ¬ p x :=\n        fun x =>\n        fun h3 : p x =>\n        have h4 : ∃ x, p x := ⟨x, h3⟩\n        show False from h1 h4\n      show False from h h2)\n```\n:::\n\nWhat follows are some common identities involving the existential\nquantifier. In the exercises below, we encourage you to prove as many\nas you can. We also leave it to you to determine which are\nnonconstructive, and hence require some form of classical reasoning.\n\n```lean\nopen Classical\n\nvariable (α : Type) (p q : α → Prop)\nvariable (r : Prop)\n\nexample : (∃ x : α, r) → r := sorry\nexample (a : α) : r → (∃ x : α, r) := sorry\nexample : (∃ x, p x ∧ r) ↔ (∃ x, p x) ∧ r := sorry\nexample : (∃ x, p x ∨ q x) ↔ (∃ x, p x) ∨ (∃ x, q x) := sorry\n\nexample : (∀ x, p x) ↔ ¬ (∃ x, ¬ p x) := sorry\nexample : (∃ x, p x) ↔ ¬ (∀ x, ¬ p x) := sorry\nexample : (¬ ∃ x, p x) ↔ (∀ x, ¬ p x) := sorry\nexample : (¬ ∀ x, p x) ↔ (∃ x, ¬ p x) := sorry\n\nexample : (∀ x, p x → r) ↔ (∃ x, p x) → r := sorry\nexample (a : α) : (∃ x, p x → r) ↔ (∀ x, p x) → r := sorry\nexample (a : α) : (∃ x, r → p x) ↔ (r → ∃ x, p x) := sorry\n```\n\nNotice that the second example and the last two examples require the\nassumption that there is at least one element {leanRef}`a` of type {leanRef}`α`.\n\nHere are solutions to two of the more difficult ones:\n\n```lean\nopen Classical\n\nvariable (α : Type) (p q : α → Prop)\nvariable (a : α)\nvariable (r : Prop)\n\nexample : (∃ x, p x ∨ q x) ↔ (∃ x, p x) ∨ (∃ x, q x) :=\n  Iff.intro\n    (fun ⟨a, (h1 : p a ∨ q a)⟩ =>\n      Or.elim h1\n        (fun hpa : p a => Or.inl ⟨a, hpa⟩)\n        (fun hqa : q a => Or.inr ⟨a, hqa⟩))\n    (fun h : (∃ x, p x) ∨ (∃ x, q x) =>\n      Or.elim h\n        (fun ⟨a, hpa⟩ => ⟨a, (Or.inl hpa)⟩)\n        (fun ⟨a, hqa⟩ => ⟨a, (Or.inr hqa)⟩))\n\nexample : (∃ x, p x → r) ↔ (∀ x, p x) → r :=\n  Iff.intro\n    (fun ⟨b, (hb : p b → r)⟩ =>\n     fun h2 : ∀ x, p x =>\n     show r from hb (h2 b))\n    (fun h1 : (∀ x, p x) → r =>\n     show ∃ x, p x → r from\n       byCases\n         (fun hap : ∀ x, p x => ⟨a, λ h' => h1 hap⟩)\n         (fun hnap : ¬ ∀ x, p x =>\n          byContradiction\n            (fun hnex : ¬ ∃ x, p x → r =>\n              have hap : ∀ x, p x :=\n                fun x =>\n                byContradiction\n                  (fun hnp : ¬ p x =>\n                    have hex : ∃ x, p x → r := ⟨x, (fun hp => absurd hp hnp)⟩\n                    show False from hnex hex)\n              show False from hnap hap)))\n```\n\n# More on the Proof Language\n%%%\ntag := \"more-on-the-proof-language\"\n%%%\n\nWe have seen that keywords like {kw}`fun`, {kw}`have`, and {kw}`show` make\nit possible to write formal proof terms that mirror the structure of\ninformal mathematical proofs. In this section, we discuss some\nadditional features of the proof language that are often convenient.\n\nTo start with, we can use anonymous {kw}`have` expressions to introduce an\nauxiliary goal without having to label it. We can refer to the last\nexpression introduced in this way using the keyword {lit}`this`:\n\n```lean\nvariable (f : Nat → Nat)\nvariable (h : ∀ x : Nat, f x ≤ f (x + 1))\n\nexample : f 0 ≤ f 3 :=\n  have : f 0 ≤ f 1 := h 0\n  have : f 0 ≤ f 2 := Nat.le_trans this (h 1)\n  show f 0 ≤ f 3 from Nat.le_trans this (h 2)\n```\n\nOften proofs move from one fact to the next, so this can be effective\nin eliminating the clutter of lots of labels.\n\nWhen the goal can be inferred, we can also ask Lean instead to fill in\nthe proof by writing {kw}`by assumption`:\n\n```lean\nvariable (f : Nat → Nat)\nvariable (h : ∀ x : Nat, f x ≤ f (x + 1))\n------\nexample : f 0 ≤ f 3 :=\n  have : f 0 ≤ f 1 := h 0\n  have : f 0 ≤ f 2 := Nat.le_trans (by assumption) (h 1)\n  show f 0 ≤ f 3 from Nat.le_trans (by assumption) (h 2)\n```\n\nThis tells Lean to use the {leanRef}`assumption` tactic, which, in turn,\nproves the goal by finding a suitable hypothesis in the local\ncontext. We will learn more about the {leanRef}`assumption` tactic in the\nnext chapter.\n\n:::setup\n```\nvariable {p : Prop} (prf : p)\n```\nWe can also ask Lean to fill in the proof by writing {lean}`‹p›`, where\n{lean}`p` is the proposition whose proof we want Lean to find in the\ncontext.  You can type these corner quotes using {kbd}`\\f<` and {kbd}`\\f>`,\nrespectively. The letter “f” is for “French,” since the Unicode\nsymbols can also be used as French quotation marks. In fact, the\nnotation is defined in Lean as follows:\n:::\n\n```lean\nnotation \"‹\" p \"›\" => show p by assumption\n```\n\nThis approach is more robust than using {leanRef}`by assumption`, because the\ntype of the assumption that needs to be inferred is given\nexplicitly. It also makes proofs more readable. Here is a more\nelaborate example:\n\n```lean\nvariable (f : Nat → Nat)\nvariable (h : ∀ x : Nat, f x ≤ f (x + 1))\n\nexample : f 0 ≥ f 1 → f 1 ≥ f 2 → f 0 = f 2 :=\n  fun _ : f 0 ≥ f 1 =>\n  fun _ : f 1 ≥ f 2 =>\n  have : f 0 ≥ f 2 := Nat.le_trans ‹f 1 ≥ f 2› ‹f 0 ≥ f 1›\n  have : f 0 ≤ f 2 := Nat.le_trans (h 0) (h 1)\n  show f 0 = f 2 from Nat.le_antisymm this ‹f 0 ≥ f 2›\n```\n\nKeep in mind that you can use the French quotation marks in this way\nto refer to _anything_ in the context, not just things that were\nintroduced anonymously. Its use is also not limited to propositions,\nthough using it for data is somewhat odd:\n\n```lean\nexample (n : Nat) : Nat := ‹Nat›\n```\n\nLater, we show how you can extend the proof language using the Lean macro system.\n\n# Exercises\n%%%\ntag := none\n%%%\n\n1. Prove these equivalences:\n\n    ```lean\n    variable (α : Type) (p q : α → Prop)\n\n    example : (∀ x, p x ∧ q x) ↔ (∀ x, p x) ∧ (∀ x, q x) := sorry\n    example : (∀ x, p x → q x) → (∀ x, p x) → (∀ x, q x) := sorry\n    example : (∀ x, p x) ∨ (∀ x, q x) → ∀ x, p x ∨ q x := sorry\n    ```\n\n  You should also try to understand why the reverse implication is not derivable in the last example.\n\n2. It is often possible to bring a component of a formula outside a\n   universal quantifier, when it does not depend on the quantified\n   variable. Try proving these (one direction of the second of these\n   requires classical logic):\n\n    ```lean\n    variable (α : Type) (p q : α → Prop)\n    variable (r : Prop)\n\n    example : α → ((∀ x : α, r) ↔ r) := sorry\n    example : (∀ x, p x ∨ r) ↔ (∀ x, p x) ∨ r := sorry\n    example : (∀ x, r → p x) ↔ (r → ∀ x, p x) := sorry\n    ```\n\n3. Consider the “barber paradox,” that is, the claim that in a certain\n   town there is a (male) barber that shaves all and only the men who\n   do not shave themselves. Prove that this is a contradiction:\n\n    ```lean\n    variable (men : Type) (barber : men)\n    variable (shaves : men → men → Prop)\n\n    example (h : ∀ x : men, shaves barber x ↔ ¬ shaves x x) : False :=\n      sorry\n    ```\n\n4. ::::setup\n   ```\n   variable {n : Nat}\n   ```\n   :::leanFirst\n   Remember that, without any parameters, an expression of type\n   {lean}`Prop` is just an assertion. Fill in the definitions of {leanRef}`prime`\n   and {leanRef}`Fermat_prime` below, and construct each of the given\n   assertions. For example, you can say that there are infinitely many\n   primes by asserting that for every natural number {lean}`n`, there is a\n   prime number greater than {lean}`n`. Goldbach's weak conjecture states\n   that every odd number greater than 5 is the sum of three\n   primes. Look up the definition of a Fermat prime or any of the\n   other statements, if necessary.\n\n    ```lean\n    def even (n : Nat) : Prop := sorry\n\n    def prime (n : Nat) : Prop := sorry\n\n    def infinitely_many_primes : Prop := sorry\n\n    def Fermat_prime (n : Nat) : Prop := sorry\n\n    def infinitely_many_Fermat_primes : Prop := sorry\n\n    def goldbach_conjecture : Prop := sorry\n\n    def Goldbach's_weak_conjecture : Prop := sorry\n\n    def Fermat's_last_theorem : Prop := sorry\n    ```\n   :::\n   ::::\n\n5. Prove as many of the identities listed in the Existential\n   Quantifier section as you can.\n"
  },
  {
    "path": "book/TPiL/StructuresAndRecords.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre Manual\nopen TPiL\n\n#doc (Manual) \"Structures and Records\" =>\n%%%\ntag := \"structures-and-records\"\n%%%\n\nWe have seen that Lean's foundational system includes inductive\ntypes. We have, moreover, noted that it is a remarkable fact that it\nis possible to construct a substantial edifice of mathematics based on\nnothing more than the type universes, dependent arrow types, and inductive types;\neverything else follows from those. The Lean standard library contains\nmany instances of inductive types (e.g., {lean}`Nat`, {lean}`Prod`, {lean}`List`),\nand even the logical connectives are defined using inductive types.\n\nRecall that a non-recursive inductive type that contains only one\nconstructor is called a _structure_ or _record_. The product type is a\nstructure, as is the dependent product (Sigma) type.\nIn general, whenever we define a structure {lit}`S`, we usually\ndefine _projection_ functions that allow us to “destruct” each\ninstance of {lit}`S` and retrieve the values that are stored in its\nfields. The functions {lean}`Prod.fst` and {lean}`Prod.snd`, which return the\nfirst and second elements of a pair, are examples of such projections.\n\nWhen writing programs or formalizing mathematics, it is not uncommon\nto define structures containing many fields. The {kw}`structure`\ncommand, available in Lean, provides infrastructure to support this\nprocess. When we define a structure using this command, Lean\nautomatically generates all the projection functions. The\n{kw}`structure` command also allows us to define new structures based on\npreviously defined ones. Moreover, Lean provides convenient notation\nfor defining instances of a given structure.\n\n# Declaring Structures\n%%%\ntag := \"declaring-structures\"\n%%%\n\nThe structure command is essentially a “front end” for defining\ninductive data types. Every {kw}`structure` declaration introduces a\nnamespace with the same name. The general form is as follows:\n\n```\n    structure <name> <parameters> <parent-structures> where\n      <constructor> :: <fields>\n```\n\nMost parts are optional. Here is an example:\n\n```lean\nstructure Point (α : Type u) where\n  mk ::\n  x : α\n  y : α\n```\n\n:::setup\n```\nstructure Point (α : Type u) where\n  mk ::\n  x : α\n  y : α\nvariable (p : Point α) (a b : α)\n```\nValues of type {leanRef}`Point` are created using {lean}`Point.mk a b`, and the\nfields of a point {lean}`p` are accessed using {lean}`Point.x p` and\n{lean}`Point.y p` (but {lean}`p.x` and {lean}`p.y` also work, see below).\nThe structure command also generates useful recursors and\ntheorems. Here are some of the constructions generated for the\ndeclaration above.\n:::\n\n```lean\nstructure Point (α : Type u) where\n  mk ::\n  x : α\n  y : α\n------\n-- a Type\n#check Point\n\n-- the eliminator\n#check @Point.rec\n\n-- the constructor\n#check @Point.mk -- @Point.mk : {α : Type u_1} → α → α → Point α\n\n-- a projection\n#check @Point.x -- @Point.x : {α : Type u_1} → Point α → α\n\n-- a projection\n#check @Point.y -- @Point.y : {α : Type u_1} → Point α → α\n```\n\nIf the constructor name is not provided, then a constructor is named\n{lit}`mk` by default.\n\n:::leanFirst\nHere are some simple theorems and expressions that use the generated\nconstructions. As usual, you can avoid the prefix {leanRef}`Point` by using\nthe command {leanRef}`open Point`.\n\n```lean\nstructure Point (α : Type u) where\n  x : α\n  y : α\n------\n#eval Point.x (Point.mk 10 20) -- 10\n\n#eval Point.y (Point.mk 10 20) -- 20\n\nopen Point\n\nexample (a b : α) : x (mk a b) = a :=\n  rfl\n\nexample (a b : α) : y (mk a b) = b :=\n  rfl\n```\n:::\n\n\n:::setup\n```\nstructure Point (α : Type u) where\n  x : α\n  y : α\nvariable (p : Point Nat)\n```\n\n\nGiven {lean}`p : Point Nat`, the dot notation {lean}`p.x` is shorthand for\n{lean}`Point.x p`. This provides a convenient way of accessing the fields\nof a structure.\n:::\n\n```lean\nstructure Point (α : Type u) where\n x : α\n y : α\n------\ndef p := Point.mk 10 20\n\n#check p.x  -- p.x : Nat\n#eval p.x   -- 10\n#eval p.y   -- 20\n```\n\n:::leanFirst\nThe dot notation is convenient not just for accessing the projections\nof a record, but also for applying functions defined in a namespace\nwith the same name. Recall from the {ref \"conjunction\"}[Conjunction section] if {leanRef}`p`\nhas type {leanRef}`Point`, the expression {lit}`p.foo` is interpreted as\n{lit}`Point.foo p`, assuming that the first non-implicit argument to\n{lit}`foo` has type {leanRef}`Point`. The expression {leanRef}`p.add q` is therefore\nshorthand for {lit}`Point.add p q` in the example below.\n\n```lean\nstructure Point (α : Type u) where\n  x : α\n  y : α\nderiving Repr\n\ndef Point.add (p q : Point Nat) :=\n  mk (p.x + q.x) (p.y + q.y)\n\ndef p : Point Nat := Point.mk 1 2\ndef q : Point Nat := Point.mk 3 4\n\n#eval p.add q  -- { x := 4, y := 6 }\n```\n:::\n\n:::setup\n```\nstructure Point (α : Type u) where\n  x : α\n  y : α\nderiving Repr\n\nvariable {α : Type u}\n```\n\nIn the next chapter, you will learn how to define a function like\n{leanRef}`add` so that it works generically for elements of {lean}`Point α`\nrather than just {lean}`Point Nat`, assuming {lean}`α` has an associated\naddition operation.\n:::\n\n:::leanFirst\nMore generally, given an expression {lit}`p.foo x y z` where {lit}`p : Point`,\nLean will insert {lit}`p` at the first argument to {lit}`Point.foo` of type\n{lit}`Point`. For example, with the definition of scalar multiplication\nbelow, {leanRef}`p.smul 3` is interpreted as {leanRef}`Point.smul 3 p`.\n\n```lean\nstructure Point (α : Type u) where\n x : α\n y : α\n deriving Repr\n------\ndef Point.smul (n : Nat) (p : Point Nat) :=\n  Point.mk (n * p.x) (n * p.y)\n\ndef p : Point Nat := Point.mk 1 2\n\n#eval p.smul 3  -- { x := 3, y := 6 }\n\nexample {p : Point Nat} : p.smul 3 = Point.smul 3 p := rfl\n```\n:::\n\nIt is common to use a similar trick with the {name}`List.map` function,\nwhich takes a list as its second non-implicit argument:\n\n```lean\n#check @List.map\n\ndef xs : List Nat := [1, 2, 3]\ndef f : Nat → Nat := fun x => x * x\n\n#eval xs.map f  -- [1, 4, 9]\n\nexample {xs : List α} {f : α → β} :\n    xs.map f = List.map f xs :=\n  rfl\n```\n\nHere {leanRef}`xs.map f` is interpreted as {leanRef}`List.map f xs`.\n\n# Objects\n%%%\ntag := \"objects\"\n%%%\n\nWe have been using constructors to create elements of a structure\ntype. For structures containing many fields, this is often\ninconvenient, because we have to remember the order in which the\nfields were defined. Lean therefore provides the following alternative\nnotations for defining elements of a structure type.\n\n```\n    { (<field-name> := <expr>)* : structure-type }\n    or\n    { (<field-name> := <expr>)* }\n```\n\nThe suffix {lit}`: structure-type` can be omitted whenever the name of\nthe structure can be inferred from the expected type. For example, we\nuse this notation to define “points.” The order that the fields are\nspecified does not matter, so all the expressions below define the\nsame point.\n\n```lean\nstructure Point (α : Type u) where\n  x : α\n  y : α\n\n#check { x := 10, y := 20 : Point Nat }  -- { x := 10, y := 20 } : Point Nat\n\n#check { y := 20, x := 10 : Point _ } -- { x := 10, y := 20 } : Point Nat\n\n#check ({ x := 10, y := 20 } : Point Nat) -- { x := 10, y := 20 } : Point Nat\n\nexample : Point Nat :=\n  { y := 20, x := 10 }\n```\n\nFields can be marked as implicit using curly braces.\nImplicit fields become implicit parameters to the constructor.\n\nIf the value of a field is not specified, Lean tries to infer it. If\nthe unspecified fields cannot be inferred, Lean flags an error\nindicating the corresponding placeholder could not be synthesized.\n\n```lean\nstructure MyStruct where\n    {α : Type u}\n    {β : Type v}\n    a : α\n    b : β\n\n#check { a := 10, b := true : MyStruct }\n```\n\n_Record update_ is another common operation which amounts to creating\na new record object by modifying the value of one or more fields in an\nold one. Lean allows you to specify that unassigned fields in the\nspecification of a record should be taken from a previously defined\nstructure object {lit}`s` by adding the annotation {lit}`s `{kw}`with` before the field\nassignments. If more than one record object is provided, then they are\nvisited in order until Lean finds one that contains the unspecified\nfield. Lean raises an error if any of the field names remain\nunspecified after all the objects are visited.\n\n```lean\nstructure Point (α : Type u) where\n  x : α\n  y : α\nderiving Repr\n\ndef p : Point Nat :=\n  { x := 1, y := 2 }\n\n#eval { p with y := 3 }  -- { x := 1, y := 3 }\n\n#eval { p with x := 4 }  -- { x := 4, y := 2 }\n\nstructure Point3 (α : Type u) where\n  x : α\n  y : α\n  z : α\n\ndef q : Point3 Nat :=\n  { x := 5, y := 5, z := 5 }\n\ndef r : Point3 Nat :=\n  { p, q with x := 6 }\n\nexample : r.x = 6 := rfl\nexample : r.y = 2 := rfl\nexample : r.z = 5 := rfl\n```\n\n# Inheritance\n%%%\ntag := \"inheritance\"\n%%%\n\nWe can _extend_ existing structures by adding new fields. This feature\nallows us to simulate a form of _inheritance_.\n\n```lean\nstructure Point (α : Type u) where\n  x : α\n  y : α\n\ninductive Color where\n  | red | green | blue\n\nstructure ColorPoint (α : Type u) extends Point α where\n  c : Color\n```\n\nIn the next example, we define a structure using multiple inheritance,\nand then define an object using objects of the parent structures.\n\n```lean\nstructure Point (α : Type u) where\n  x : α\n  y : α\n  z : α\n\nstructure RGBValue where\n  red : Nat\n  green : Nat\n  blue : Nat\n\nstructure RedGreenPoint (α : Type u) extends Point α, RGBValue where\n  no_blue : blue = 0\n\ndef p : Point Nat :=\n  { x := 10, y := 10, z := 20 }\n\ndef rgp : RedGreenPoint Nat :=\n  { p with red := 200, green := 40, blue := 0, no_blue := rfl }\n\nexample : rgp.x   = 10 := rfl\nexample : rgp.red = 200 := rfl\n```\n"
  },
  {
    "path": "book/TPiL/Tactics.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre\nopen Manual hiding tactic\nopen TPiL\n\n#doc (Manual) \"Tactics\" =>\n\nIn this chapter, we describe an alternative approach to constructing\nproofs, using _tactics_.  A proof term is a representation of a\nmathematical proof; tactics are commands, or instructions, that\ndescribe how to build such a proof. Informally, you might begin a\nmathematical proof by saying “to prove the forward direction, unfold\nthe definition, apply the previous lemma, and simplify.” Just as these\nare instructions that tell the reader how to find the relevant proof,\ntactics are instructions that tell Lean how to construct a proof\nterm. They naturally support an incremental style of writing proofs,\nin which you decompose a proof and work on goals one step at a time.\n\nWe will describe proofs that consist of sequences of tactics as\n“tactic-style” proofs, to contrast with the ways of writing proof\nterms we have seen so far, which we will call “term-style”\nproofs. Each style has its own advantages and disadvantages. For\nexample, tactic-style proofs can be harder to read, because they\nrequire the reader to predict or guess the results of each\ninstruction. But they can also be shorter and easier to\nwrite. Moreover, tactics offer a gateway to using Lean's automation,\nsince automated procedures are themselves tactics.\n\n# Entering Tactic Mode\n%%%\ntag := \"entering-tactic-mode\"\n%%%\n\n\n:::leanFirst\nConceptually, stating a theorem or introducing a {kw}`have` statement\ncreates a goal, namely, the goal of constructing a term with the\nexpected type. For example, the following creates the goal of\nconstructing a term of type {leanRef}`p ∧ q ∧ p`, in a context with constants\n{leanRef}`p q : Prop`, {leanRef}`hp : p` and {leanRef}`hq : q`:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  --                                   PROOF_STATE: X      ^\n  sorry\n```\n:::\n\nYou can write this goal as follows:\n\n```proofState X\np : Prop\nq : Prop\nhp : p\nhq : q\n⊢ p ∧ q ∧ p\n```\n\n\nIndeed, if you replace the “sorry” by an underscore in the example\nabove, Lean will report that it is exactly this goal that has been\nleft unsolved.\n\nOrdinarily, you meet such a goal by writing an explicit term. But\nwherever a term is expected, Lean allows us to insert instead a\n{lit}`by <tactics>` block, where {lit}`<tactics>` is a sequence of commands,\nseparated by semicolons or line breaks. You can prove the theorem above\nin that way:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p :=\n  by apply And.intro\n     exact hp\n     apply And.intro\n     exact hq\n     exact hp\n```\n\nWe often put the {leanRef}`by` keyword on the preceding line, and write the\nexample above as:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro\n-- ^ PROOF_STATE: intro\n  exact hp\n  apply And.intro\n  exact hq\n  exact hp\n```\n\nThe {leanRef}`apply` tactic applies an expression, viewed as denoting a\nfunction with zero or more arguments. It unifies the conclusion with\nthe expression in the current goal, and creates new goals for the\nremaining arguments, provided that no later arguments depend on\nthem. In the example above, the command {leanRef}`apply And.intro` yields two\nsubgoals:\n\n```proofState intro\ncase left\np : Prop\nq : Prop\nhp : p\nhq : q\n⊢ p\n\ncase right\np : Prop\nq : Prop\nhp : p\nhq : q\n⊢ q ∧ p\n```\n\nThe first goal is met with the command {leanRef}`exact hp`. The {leanRef}`exact`\ncommand is just a variant of {leanRef}`apply` which signals that the\nexpression given should fill the goal exactly. It is good form to use\nit in a tactic proof, since its failure signals that something has\ngone wrong. It is also more robust than {leanRef}`apply`, since the\nelaborator takes the expected type, given by the target of the goal,\ninto account when processing the expression that is being applied. In\nthis case, however, {leanRef}`apply` would work just as well.\n\nYou can see the resulting proof term with the {kw}`#print` command:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro\n  exact hp\n  apply And.intro\n  exact hq\n  exact hp\n------\n#print test\n```\n\n::: TODO\nCheck these. Vim?\n:::\nYou can write a tactic script incrementally. In VS Code, you can open\na window to display messages by pressing {kbd}[`Ctrl` `Shift` `Enter`], and\nthat window will then show you the current goal whenever the cursor is\nin a tactic block. If the proof is incomplete, the token {kw}`by` is\ndecorated with a red squiggly line, and the error message contains the\nremaining goals.\n\nTactic commands can take compound expressions, not just single\nidentifiers. The following is a shorter version of the preceding\nproof:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro hp\n  exact And.intro hq hp\n```\n\nUnsurprisingly, it produces exactly the same proof term:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n apply And.intro hp\n exact And.intro hq hp\n------\n#print test\n```\n\nMultiple tactic applications can be written in a single line by concatenating with a semicolon.\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro hp; exact And.intro hq hp\n```\n\nTactics that may produce multiple subgoals often tag them. For\nexample, the tactic {leanRef}`apply And.intro` tagged the first subgoal as\n{goal intro}`left`, and the second as {goal intro}`right`. In the case of the {leanRef}`apply`\ntactic, the tags are inferred from the parameters' names used in the\n{leanRef}`And.intro` declaration. You can structure your tactics using the\nnotation {kw}`case`{lit}` <tag> => <tactics>`. The following is a structured\nversion of our first tactic proof in this chapter.\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro\n  case left => exact hp\n  case right =>\n    apply And.intro\n    case left => exact hq\n    case right => exact hp\n```\n\n:::leanFirst\n\nYou can solve the subgoal {goal intro2}`right` before {goal intro2}`left` using the {leanRef}`case`\nnotation:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro\n  -- ^ PROOF_STATE: intro2\n  case right =>\n    apply And.intro\n    case left => exact hq\n  --          ^ PROOF_STATE: leftBranch\n    case right => exact hp\n  case left => exact hp\n```\n:::\n\nNote that Lean hides the other goals inside the {leanRef}`case` block. After {leanRef}`case left =>`,\nthe proof state is:\n\n```proofState leftBranch\np : Prop\nq : Prop\nhp : p\nhq : q\n⊢ q\n```\n\nWe say that {leanRef}`case` is “focusing” on the selected goal.  Moreover, Lean flags an error\nif the selected goal is not fully solved at the end of the {leanRef}`case`\nblock.\n\nFor simple subgoals, it may not be worth selecting a subgoal using its\ntag, but you may still want to structure the proof. Lean also provides\nthe “bullet” notation {lit}`. <tactics>` (or {lit}`· <tactics>`) for\nstructuring proofs:\n\n```lean\ntheorem test (p q : Prop) (hp : p) (hq : q) : p ∧ q ∧ p := by\n  apply And.intro\n  . exact hp\n  . apply And.intro\n    . exact hq\n    . exact hp\n```\n\n# Basic Tactics\n%%%\ntag := \"basic-tactics\"\n%%%\n\n:::leanFirst\nIn addition to {leanRef}`apply` and {leanRef}`exact`, another useful tactic is\n{leanRef}`intro`, which introduces a hypothesis. What follows is an example\nof an identity from propositional logic that we proved in a previous\nchapter, now proved using tactics.\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  . intro h\n    apply Or.elim (And.right h)\n    . intro hq\n      apply Or.inl\n      apply And.intro\n      . exact And.left h\n      . exact hq\n    . intro hr\n      apply Or.inr\n      apply And.intro\n      . exact And.left h\n      . exact hr\n  . intro h\n    apply Or.elim h\n    . intro hpq\n      apply And.intro\n      . exact And.left hpq\n      . apply Or.inl\n        exact And.right hpq\n    . intro hpr\n      apply And.intro\n      . exact And.left hpr\n      . apply Or.inr\n        exact And.right hpr\n```\n:::\n\nThe {leanRef}`intro` command can more generally be used to introduce a variable of any type:\n\n```lean\nexample (α : Type) : α → α := by\n  intro a\n  exact a\n\nexample (α : Type) : ∀ x : α, x = x := by\n  intro x\n  exact Eq.refl x\n```\n\nYou can use it to introduce several variables:\n\n```lean\nexample : ∀ a b c : Nat, a = b → a = c → c = b := by\n  intro a b c h₁ h₂\n  exact Eq.trans (Eq.symm h₂) h₁\n```\n\n:::setup\n```\nvariable {α : Sort u} {p : Prop} {e : p}\n```\n\nAs the {leanRef}`apply` tactic is a command for constructing function\napplications interactively, the {leanRef}`intro` tactic is a command for\nconstructing function abstractions interactively (i.e., terms of the\nform {lean (type := \"∀ (x : α), p\")}`fun x => e`).  As with lambda abstraction notation, the\n{leanRef}`intro` tactic allows us to use an implicit {kw}`match`.\n:::\n\n```lean\nexample (p q : α → Prop) : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x := by\n  intro ⟨w, hpw, hqw⟩\n  exact ⟨w, hqw, hpw⟩\n```\n\nYou can also provide multiple alternatives like in the {kw}`match` expression.\n\n```lean\nexample (p q : α → Prop) : (∃ x, p x ∨ q x) → ∃ x, q x ∨ p x := by\n  intro\n  | ⟨w, Or.inl h⟩ => exact ⟨w, Or.inr h⟩\n  | ⟨w, Or.inr h⟩ => exact ⟨w, Or.inl h⟩\n```\n\n::::leanFirst\nThe {leanRef}`intros` tactic can be used without any arguments, in which\ncase, it chooses names and introduces as many variables as it can. You\nwill see an example of this in a moment.\n\n:::leanFirst\nThe {leanRef}`assumption` tactic looks through the assumptions in context of\nthe current goal, and if there is one matching the conclusion, it\napplies it.\n\n```lean\nvariable (x y z w : Nat)\n\nexample (h₁ : x = y) (h₂ : y = z) (h₃ : z = w) : x = w := by\n  apply Eq.trans h₁\n  apply Eq.trans h₂\n  assumption   -- applied h₃\n```\n:::\n\nIt will unify metavariables in the conclusion if necessary:\n\n```lean\nvariable (x y z w : Nat)\n\nexample (h₁ : x = y) (h₂ : y = z) (h₃ : z = w) : x = w := by\n  apply Eq.trans\n  assumption      -- solves x = ?b with h₁\n  apply Eq.trans\n  assumption      -- solves y = ?h₂.b with h₂\n  assumption      -- solves z = w with h₃\n```\n\nThe following example uses the {leanRef}`intros` command to introduce the three variables and two hypotheses automatically:\n\n```lean\nexample : ∀ a b c : Nat, a = b → a = c → c = b := by\n  intros\n  apply Eq.trans\n  apply Eq.symm\n  assumption\n  assumption\n```\n::::\n\n:::leanFirst\nNote that names automatically generated by Lean are inaccessible by default. The motivation is to\nensure your tactic proofs do not rely on automatically generated names, and are consequently more robust.\nHowever, you can use the combinator {leanRef}`unhygienic` to disable this restriction.\n\n```lean\nexample : ∀ a b c : Nat, a = b → a = c → c = b := by unhygienic\n  intros\n  apply Eq.trans\n  apply Eq.symm\n  exact a_2\n  exact a_1\n```\n:::\n\n:::leanFirst\nYou can also use the {leanRef}`rename_i` tactic to rename the most recent inaccessible names in your context.\nIn the following example, the tactic {leanRef}`rename_i h1 _ h2` renames two of the last three hypotheses in\nyour context.\n\n```lean\nexample : ∀ a b c d : Nat, a = b → a = d → a = c → c = b := by\n  intros\n  rename_i h1 _ h2\n  apply Eq.trans\n  apply Eq.symm\n  exact h2\n  exact h1\n```\n:::\n\n:::leanFirst\nThe {leanRef}`rfl` tactic solves goals that are reflexive relations applied to definitionally equal arguments.\nEquality is reflexive:\n\n```lean\nexample (y : Nat) : (fun x : Nat => 0) y = 0 := by\n  rfl\n```\n:::\n\n:::leanFirst\nThe {leanRef}`repeat` combinator can be used to apply a tactic several times:\n\n```lean\nexample : ∀ a b c : Nat, a = b → a = c → c = b := by\n  intros\n  apply Eq.trans\n  apply Eq.symm\n  repeat assumption\n```\n:::\n\n:::leanFirst\nAnother tactic that is sometimes useful is the {leanRef}`revert` tactic,\nwhich is, in a sense, an inverse to {leanRef}`intro`:\n\n```lean\nexample (x : Nat) : x = x := by\n  revert x\n  -- ^ PROOF_STATE: afterRevert\n  intro y\n  -- ^ PROOF_STATE: afterRevertIntro\n  rfl\n```\n\nAfter {leanRef}`revert x`, the proof state is:\n\n```proofState afterRevert\n⊢ ∀ (x : Nat), x = x\n```\n\nAfter {leanRef}`intro y`, it is:\n\n```proofState afterRevertIntro\ny : Nat\n⊢ y = y\n```\n\n:::\n\nMoving a hypothesis into the goal yields an implication:\n\n```lean\nexample (x y : Nat) (h : x = y) : y = x := by\n  revert h\n  -- ^ PROOF_STATE: afterRevertH\n  intro h₁\n  -- ^ PROOF_STATE: afterRevertHIntro\n  -- goal is x y : Nat, h₁ : x = y ⊢ y = x\n  apply Eq.symm\n  assumption\n```\n\nAfter {leanRef}`revert h`, the proof state is:\n\n```proofState afterRevertH\nx : Nat\ny : Nat\n⊢ x = y → y = x\n```\n\nAfter {leanRef}`intro h₁`, it is:\n\n```proofState afterRevertHIntro\nx : Nat\ny : Nat\nh₁ : x = y\n⊢ y = x\n```\n\n:::leanFirst\nBut {leanRef}`revert` is even more clever, in that it will revert not only an\nelement of the context but also all the subsequent elements of the\ncontext that depend on it. For example, reverting {leanRef (in := \"revert x\")}`x` in the example\nabove brings {leanRef}`h` along with it:\n\n```lean\nexample (x y : Nat) (h : x = y) : y = x := by\n  revert x\n  -- ^ PROOF_STATE: afterRevertXH\n  intros\n  apply Eq.symm\n  assumption\n```\n\nAfter {leanRef}`revert x`, the goal is:\n\n```proofState afterRevertXH\ny : Nat\n⊢ ∀ (x : Nat), x = y → y = x\n```\n\n:::\n\nYou can also revert multiple elements of the context at once:\n\n```lean\nexample (x y : Nat) (h : x = y) : y = x := by\n  revert x y\n  -- ^ PROOF_STATE: revertXY\n  intros\n  apply Eq.symm\n  assumption\n```\n\nAfter {leanRef}`revert x y`, the goal is:\n\n```proofState revertXY\n⊢ ∀ (x y : Nat), x = y → y = x\n```\n\n:::leanFirst\nYou can only {leanRef}`revert` an element of the local context, that is, a\nlocal variable or hypothesis. But you can replace an arbitrary\nexpression in the goal by a fresh variable using the {leanRef}`generalize`\ntactic:\n\n```lean (showProofStates := \"afterGen afterRevert afterIntro\")\nexample : 3 = 3 := by\n  generalize 3 = x\n  -- ^ PROOF_STATE: afterGen\n  revert x\n  -- ^ PROOF_STATE: afterRevert\n  intro y\n  -- ^ PROOF_STATE: afterIntro\n  rfl\n```\n\nIn particular, after {leanRef}`generalize`, the goal is\n\n```proofState afterGen\nx : Nat\n⊢ x = x\n```\n\n:::\n\nThe mnemonic in the notation above is that you are generalizing the\ngoal by setting {leanRef}`3` to an arbitrary variable {leanRef (in := \"revert x\")}`x`. Be careful: not\nevery generalization preserves the validity of the goal. Here,\n{leanRef}`generalize` replaces a goal that could be proved using\n{tactic}`rfl` with one that is not provable:\n\n```lean (showProofStates := \"afterGen\")\nexample : 2 + 3 = 5 := by\n  generalize 3 = x\n  -- ^ PROOF_STATE: afterGen\n  sorry\n```\n\nIn this example, the {leanRef}`sorry` tactic is the analogue of the {lean}`sorry`\nproof term. It closes the current goal, producing the usual warning\nthat {lean}`sorry` has been used. To preserve the validity of the previous\ngoal, the {leanRef}`generalize` tactic allows us to record the fact that\n{leanRef}`3` has been replaced by {leanRef}`x`. All you need to do is to provide a\nlabel, and {leanRef}`generalize` uses it to store the assignment in the local\ncontext:\n\n```lean\nexample : 2 + 3 = 5 := by\n  generalize h : 3 = x\n  -- ^ PROOF_STATE: afterGen\n  rw [← h]\n```\n\nFollowing {leanRef}`generalize h : 3 = x`, {leanRef}`h` is a proof that {leanRef}`3 = x`:\n\n```proofState afterGen\nx : Nat\nh : 3 = x\n⊢ 2 + x = 5\n```\n\nHere the rewriting tactic {leanRef}`rw` uses {leanRef}`h` to replace\n{leanRef}`x` by {leanRef}`3` again. The {leanRef}`rw` tactic will be discussed below.\n\n# More Tactics\n%%%\ntag := \"more-tactics\"\n%%%\n\n:::leanFirst\nSome additional tactics are useful for constructing and destructing\npropositions and data. For example, when applied to a goal of the form\n{leanRef}`p ∨ q`, you use tactics such as {leanRef}`apply Or.inl` and\n{leanRef}`apply Or.inr`.  Conversely, the {leanRef}`cases` tactic can be used to decompose a\ndisjunction:\n\n```lean\nexample (p q : Prop) : p ∨ q → q ∨ p := by\n  intro h\n  cases h with\n  | inl hp => apply Or.inr; exact hp\n  | inr hq => apply Or.inl; exact hq\n```\n:::\n\nNote that the syntax is similar to the one used in {kw}`match` expressions.\nThe new subgoals can be solved in any order:\n\n```lean\nexample (p q : Prop) : p ∨ q → q ∨ p := by\n  intro h\n  cases h with\n  | inr hq => apply Or.inl; exact hq\n  | inl hp => apply Or.inr; exact hp\n```\n\nYou can also use a (unstructured) {leanRef}`cases` without the {leanRef}`with` and a tactic\nfor each alternative:\n\n```lean\nexample (p q : Prop) : p ∨ q → q ∨ p := by\n  intro h\n  cases h\n  apply Or.inr\n  assumption\n  apply Or.inl\n  assumption\n```\n\nThe (unstructured) {leanRef}`cases` is particularly useful when you can close several\nsubgoals using the same tactic:\n\n```lean\nexample (p : Prop) : p ∨ p → p := by\n  intro h\n  cases h\n  repeat assumption\n```\n\nYou can also use the combinator {lit}`tac1 `{tactic}`<;>`{lit}` tac2` to apply {lit}`tac2` to each\nsubgoal produced by tactic {lit}`tac1`:\n\n```lean\nexample (p : Prop) : p ∨ p → p := by\n  intro h\n  cases h <;> assumption\n```\n\n:::leanFirst\nYou can combine the unstructured {leanRef}`cases` tactic with the {leanRef}`case` and {leanRef}`.` notation:\n\n```lean\nexample (p q : Prop) : p ∨ q → q ∨ p := by\n  intro h\n  cases h\n  . apply Or.inr\n    assumption\n  . apply Or.inl\n    assumption\n\nexample (p q : Prop) : p ∨ q → q ∨ p := by\n  intro h\n  cases h\n  case inr h =>\n    apply Or.inl\n    assumption\n  case inl h =>\n    apply Or.inr\n    assumption\n\nexample (p q : Prop) : p ∨ q → q ∨ p := by\n  intro h\n  cases h\n  case inr h =>\n    apply Or.inl\n    assumption\n  . apply Or.inr\n    assumption\n```\n:::\n\n\nThe {leanRef}`cases` tactic can also be used to\ndecompose a conjunction:\n\n```lean\nexample (p q : Prop) : p ∧ q → q ∧ p := by\n  intro h\n  cases h with\n  | intro hp hq => constructor; exact hq; exact hp\n  --             ^ PROOF_STATE: afterIntroCase\n```\n\n\nIn this example, there is only one goal after the {leanRef}`cases` tactic is\napplied, with {leanRef}`h`{lit}`  :  `{leanRef}`p ∧ q` replaced by a pair of assumptions,\n{leanRef}`hp`{lit}`  :  `{leanRef}`p` and {leanRef}`hq`{lit}`  :  `{leanRef}`q`:\n\n```proofState afterIntroCase\ncase intro\np : Prop\nq : Prop\nhp : p\nhq : q\n⊢ q ∧ p\n```\n\nThe {leanRef}`constructor` tactic applies the unique\nconstructor for conjunction, {lean}`And.intro`.\n\nWith these tactics, an\nexample from the previous section can be rewritten as follows:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  . intro h\n    cases h with\n    | intro hp hqr =>\n      cases hqr\n      . apply Or.inl; constructor <;> assumption\n      . apply Or.inr; constructor <;> assumption\n  . intro h\n    cases h with\n    | inl hpq =>\n      cases hpq with\n      | intro hp hq =>\n        constructor; exact hp; apply Or.inl; exact hq\n    | inr hpr =>\n      cases hpr with\n      | intro hp hr =>\n        constructor; exact hp; apply Or.inr; exact hr\n```\n\nYou will see in {ref \"inductive-types\"}[Inductive Types] that\nthese tactics are quite general. The {leanRef}`cases` tactic can be used to\ndecompose any element of an inductively defined type; {leanRef}`constructor`\nalways applies the first applicable constructor of an inductively defined type.\nFor example, you can use {leanRef}`cases` and {leanRef}`constructor` with an existential quantifier:\n\n```lean\nexample (p q : Nat → Prop) : (∃ x, p x) → ∃ x, p x ∨ q x := by\n  intro h\n  cases h with\n  | intro x px => constructor; apply Or.inl; exact px\n```\n\nHere, the {leanRef}`constructor` tactic leaves the first component of the\nexistential assertion, the value of {leanRef}`x`, implicit. It is represented\nby a metavariable, which should be instantiated later on. In the\nprevious example, the proper value of the metavariable is determined\nby the tactic {leanRef}`exact px`, since {leanRef}`px` has type {leanRef}`p x`. If you want\nto specify a witness to the existential quantifier explicitly, you can\nuse the {tactic}`exists` tactic instead:\n\n```lean\nexample (p q : Nat → Prop) : (∃ x, p x) → ∃ x, p x ∨ q x := by\n  intro h\n  cases h with\n  | intro x px => exists x; apply Or.inl; exact px\n```\n\nHere is another example:\n\n```lean\nexample (p q : Nat → Prop) : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x := by\n  intro h\n  cases h with\n  | intro x hpq =>\n    cases hpq with\n    | intro hp hq =>\n      exists x\n```\n\nThese tactics can be used on data just as well as propositions. In the\nnext example, they are used to define functions which swap the\ncomponents of the product and sum types:\n\n```lean\ndef swap_pair : α × β → β × α := by\n  intro p\n  cases p\n  constructor <;> assumption\n\ndef swap_sum : Sum α β → Sum β α := by\n  intro p\n  cases p\n  . apply Sum.inr; assumption\n  . apply Sum.inl; assumption\n```\n\nNote that up to the names we have chosen for the variables, the\ndefinitions are identical to the proofs of the analogous propositions\nfor conjunction and disjunction. The {leanRef}`cases` tactic will also do a\ncase distinction on a natural number:\n\n```lean\nopen Nat\nexample (P : Nat → Prop)\n    (h₀ : P 0) (h₁ : ∀ n, P (succ n))\n    (m : Nat) : P m := by\n  cases m with\n  | zero    => exact h₀\n  | succ m' => exact h₁ m'\n```\n\nThe {leanRef}`cases` tactic, and its companion, the {tactic}`induction` tactic, are discussed in greater detail in\nthe {ref \"tactics-for-inductive-types\"}[Tactics for Inductive Types] section.\n\n:::leanFirst\nThe {leanRef}`contradiction` tactic searches for a contradiction among the hypotheses of the current goal:\n\n```lean\nexample (p q : Prop) : p ∧ ¬ p → q := by\n  intro h\n  cases h\n  contradiction\n```\n:::\n\n:::leanFirst\nYou can also use {tactic}`match` in tactic blocks.\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  . intro h\n    match h with\n    | ⟨_, Or.inl _⟩ =>\n      apply Or.inl; constructor <;> assumption\n    | ⟨_, Or.inr _⟩ =>\n      apply Or.inr; constructor <;> assumption\n  . intro h\n    match h with\n    | Or.inl ⟨hp, hq⟩ =>\n      constructor; exact hp; apply Or.inl; exact hq\n    | Or.inr ⟨hp, hr⟩ =>\n      constructor; exact hp; apply Or.inr; exact hr\n```\n:::\n\n:::leanFirst\nYou can “combine” {leanRef}`intro` with {tactic}`match` and write the previous examples as follows:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  . intro\n    | ⟨hp, Or.inl hq⟩ =>\n      apply Or.inl; constructor <;> assumption\n    | ⟨hp, Or.inr hr⟩ =>\n      apply Or.inr; constructor <;> assumption\n  . intro\n    | Or.inl ⟨hp, hq⟩ =>\n      constructor; assumption; apply Or.inl; assumption\n    | Or.inr ⟨hp, hr⟩ =>\n      constructor; assumption; apply Or.inr; assumption\n```\n:::\n\n# Structuring Tactic Proofs\n%%%\ntag := \"structuring-tactic-proofs\"\n%%%\n\nTactics often provide an efficient way of building a proof, but long\nsequences of instructions can obscure the structure of the\nargument. In this section, we describe some means that help provide\nstructure to a tactic-style proof, making such proofs more readable\nand robust.\n\n:::leanFirst\nOne thing that is nice about Lean's proof-writing syntax is that it is\npossible to mix term-style and tactic-style proofs, and pass between\nthe two freely. For example, the tactics {leanRef}`apply` and {leanRef}`exact`\nexpect arbitrary terms, which you can write using {kw}`have`, {kw}`show`,\nand so on. Conversely, when writing an arbitrary Lean term, you can\nalways invoke the tactic mode by inserting a {kw}`by`\nblock. The following is a somewhat toy example:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) → (p ∧ q) ∨ (p ∧ r) := by\n  intro h\n  exact\n    have hp : p := h.left\n    have hqr : q ∨ r := h.right\n    show (p ∧ q) ∨ (p ∧ r) by\n      cases hqr with\n      | inl hq => exact Or.inl ⟨hp, hq⟩\n      | inr hr => exact Or.inr ⟨hp, hr⟩\n```\n:::\n\nThe following is a more natural example:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  . intro h\n    cases h.right with\n    | inl hq => exact Or.inl ⟨h.left, hq⟩\n    | inr hr => exact Or.inr ⟨h.left, hr⟩\n  . intro h\n    cases h with\n    | inl hpq => exact ⟨hpq.left, Or.inl hpq.right⟩\n    | inr hpr => exact ⟨hpr.left, Or.inr hpr.right⟩\n```\n\n:::leanFirst\nIn fact, there is a {tactic}`show` tactic, which is similar to the\n{kw}`show` expression in a proof term. It simply declares the type of the\ngoal that is about to be solved, while remaining in tactic\nmode.\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  . intro h\n    cases h.right with\n    | inl hq =>\n      show (p ∧ q) ∨ (p ∧ r)\n      exact Or.inl ⟨h.left, hq⟩\n    | inr hr =>\n      show (p ∧ q) ∨ (p ∧ r)\n      exact Or.inr ⟨h.left, hr⟩\n  . intro h\n    cases h with\n    | inl hpq =>\n      show p ∧ (q ∨ r)\n      exact ⟨hpq.left, Or.inl hpq.right⟩\n    | inr hpr =>\n      show p ∧ (q ∨ r)\n      exact ⟨hpr.left, Or.inr hpr.right⟩\n```\n:::\n\nThe {tactic}`show` tactic can actually be used to rewrite a goal to something definitionally equivalent:\n\n```lean\nexample (n : Nat) : n + 1 = Nat.succ n := by\n  show Nat.succ n = Nat.succ n\n  rfl\n```\n\nThere is also a {tactic}`have` tactic, which introduces a new subgoal, just as when writing proof terms:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) → (p ∧ q) ∨ (p ∧ r) := by\n  intro ⟨hp, hqr⟩\n  show (p ∧ q) ∨ (p ∧ r)\n  cases hqr with\n  | inl hq =>\n    have hpq : p ∧ q := And.intro hp hq\n    apply Or.inl\n    exact hpq\n  | inr hr =>\n    have hpr : p ∧ r := And.intro hp hr\n    apply Or.inr\n    exact hpr\n```\n\n:::leanFirst\nAs with proof terms, you can omit the label in the {tactic}`have` tactic, in\nwhich case, the default label {leanRef}`this` is used:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) → (p ∧ q) ∨ (p ∧ r) := by\n  intro ⟨hp, hqr⟩\n  show (p ∧ q) ∨ (p ∧ r)\n  cases hqr with\n  | inl hq =>\n    have : p ∧ q := And.intro hp hq\n    apply Or.inl\n    exact this\n  | inr hr =>\n    have : p ∧ r := And.intro hp hr\n    apply Or.inr\n    exact this\n```\n:::\n\n:::leanFirst\nThe types in a {tactic}`have` tactic can be omitted, so you can write\n{lit}`have hp := h.left` and {lit}`have hqr := h.right`.  In fact, with this\nnotation, you can even omit both the type and the label, in which case\nthe new fact is introduced with the label {leanRef}`this`:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) → (p ∧ q) ∨ (p ∧ r) := by\n  intro ⟨hp, hqr⟩\n  cases hqr with\n  | inl hq =>\n    have := And.intro hp hq\n    apply Or.inl; exact this\n  | inr hr =>\n    have := And.intro hp hr\n    apply Or.inr; exact this\n```\n:::\n\nLean also has a {tactic}`let` tactic, which is similar to the {tactic}`have`\ntactic, but is used to introduce local definitions instead of\nauxiliary facts. It is the tactic analogue of a {kw}`let` in a proof\nterm:\n\n```lean\nexample : ∃ x, x + 2 = 8 := by\n  let a : Nat := 3 * 2\n  exists a\n```\n\nAs with {tactic}`have`, you can leave the type implicit by writing\n{lit}`let a := 3 * 2`. The difference between {tactic}`let` and {tactic}`have` is that\n{tactic}`let` introduces a local definition in the context, so that the\ndefinition of the local declaration can be unfolded in the proof.\n\nWe have used {leanRef}`.` to create nested tactic blocks.  In a nested block,\nLean focuses on the first goal, and generates an error if it has not\nbeen fully solved at the end of the block. This can be helpful in\nindicating the separate proofs of multiple subgoals introduced by a\ntactic. The notation {leanRef}`.` is whitespace sensitive and relies on the indentation\nto detect whether the tactic block ends. Alternatively, you can\ndefine tactic blocks using curly braces and semicolons:\n\n```lean\nexample (p q r : Prop) : p ∧ (q ∨ r) ↔ (p ∧ q) ∨ (p ∧ r) := by\n  apply Iff.intro\n  { intro h;\n    cases h.right;\n    { show (p ∧ q) ∨ (p ∧ r);\n      exact Or.inl ⟨h.left, ‹q›⟩ }\n    { show (p ∧ q) ∨ (p ∧ r);\n      exact Or.inr ⟨h.left, ‹r›⟩ } }\n  { intro h;\n    cases h;\n    { show p ∧ (q ∨ r);\n      rename_i hpq;\n      exact ⟨hpq.left, Or.inl hpq.right⟩ }\n    { show p ∧ (q ∨ r);\n      rename_i hpr;\n      exact ⟨hpr.left, Or.inr hpr.right⟩ } }\n```\n\nIt is useful to use indentation to structure proof: every time a tactic\nleaves more than one subgoal, we separate the remaining subgoals by\nenclosing them in blocks and indenting.  Thus if the application of\ntheorem {lit}`foo` to a single goal produces four subgoals, one would\nexpect the proof to look like this:\n\n```\n  apply foo\n  . <proof of first goal>\n  . <proof of second goal>\n  . <proof of third goal>\n  . <proof of final goal>\n```\n\nor\n\n```\n  apply foo\n  case <tag of first goal>  => <proof of first goal>\n  case <tag of second goal> => <proof of second goal>\n  case <tag of third goal>  => <proof of third goal>\n  case <tag of final goal>  => <proof of final goal>\n```\n\nor\n\n```\n  apply foo\n  { <proof of first goal>  }\n  { <proof of second goal> }\n  { <proof of third goal>  }\n  { <proof of final goal>  }\n```\n\n# Tactic Combinators\n%%%\ntag := \"tactic-combinators\"\n%%%\n\n_Tactic combinators_ are operations that form new tactics from old\nones. A sequencing combinator is already implicit in the {kw}`by` block:\n\n```lean\nexample (p q : Prop) (hp : p) : p ∨ q :=\n  by apply Or.inl; assumption\n```\n\nHere, {leanRef}`apply Or.inl; assumption` is functionally equivalent to a\nsingle tactic which first applies {leanRef}`apply Or.inl` and then applies\n{leanRef}`assumption`.\n\nIn {lit}`t₁ `{tactic}`<;>`{lit}` t₂`, the {leanRef}`<;>` operator provides a _parallel_ version of the sequencing operation:\n{lit}`t₁` is applied to the current goal, and then {lit}`t₂` is applied to _all_ the resulting subgoals:\n\n```lean\nexample (p q : Prop) (hp : p) (hq : q) : p ∧ q :=\n  by constructor <;> assumption\n```\n\nThis is especially useful when the resulting goals can be finished off\nin a uniform way, or, at least, when it is possible to make progress\non all of them uniformly.\n\nThe {tactic}`first`{lit}` | t₁ | t₂ | ... | tₙ` applies each {lit}`tᵢ` until one succeeds, or else fails:\n\n```lean\nexample (p q : Prop) (hp : p) : p ∨ q := by\n  first | apply Or.inl; assumption | apply Or.inr; assumption\n\nexample (p q : Prop) (hq : q) : p ∨ q := by\n  first | apply Or.inl; assumption | apply Or.inr; assumption\n```\n\nIn the first example, the left branch succeeds, whereas in the second one, it is the right one that succeeds.\nIn the next three examples, the same compound tactic succeeds in each case:\n\n```lean\nexample (p q r : Prop) (hp : p) : p ∨ q ∨ r := by\n  repeat (first | apply Or.inl; assumption | apply Or.inr | assumption)\n\nexample (p q r : Prop) (hq : q) : p ∨ q ∨ r := by\n  repeat (first | apply Or.inl; assumption | apply Or.inr | assumption)\n\nexample (p q r : Prop) (hr : r) : p ∨ q ∨ r := by\n  repeat (first | apply Or.inl; assumption | apply Or.inr | assumption)\n```\n\nThe tactic tries to solve the left disjunct immediately by assumption;\nif that fails, it tries to focus on the right disjunct; and if that\ndoesn't work, it invokes the assumption tactic.\n\n:::leanFirst\nYou will have no doubt noticed by now that tactics can fail. Indeed,\nit is the “failure” state that causes the _first_ combinator to\nbacktrack and try the next tactic. The {leanRef}`try` combinator builds a\ntactic that always succeeds, though possibly in a trivial way:\n{tactic}`try`{lit}` t` executes {lit}`t` and reports success, even if {lit}`t` fails. It is\nequivalent to {tactic}`first`{lit}` | t | `{tactic}`skip`, where {tactic}`skip` is a tactic that does\nnothing (and succeeds in doing so). In the next example, the second\n{leanRef}`constructor` succeeds on the right conjunct {leanRef}`q ∧ r` (remember that\ndisjunction and conjunction associate to the right) but fails on the\nfirst. The {leanRef}`try` tactic ensures that the sequential composition\nsucceeds:\n\n```lean\nexample (p q r : Prop) (hp : p) (hq : q) (hr : r) : p ∧ q ∧ r := by\n  constructor <;> (try constructor) <;> assumption\n```\n:::\n\nBe careful: {tactic}`repeat`{lit}` (`{tactic}`try`{lit}` t)` will loop forever, because the inner tactic never fails.\n\nIn a proof, there are often multiple goals outstanding. Parallel\nsequencing is one way to arrange it so that a single tactic is applied\nto multiple goals, but there are other ways to do this. For example,\n{tactic}`all_goals`{lit}` t` applies {lit}`t` to all open goals:\n\n```lean\nexample (p q r : Prop) (hp : p) (hq : q) (hr : r) : p ∧ q ∧ r := by\n  constructor\n  all_goals (try constructor)\n  all_goals assumption\n```\n\nIn this case, the {tactic}`any_goals` tactic provides a more robust solution.\nIt is similar to {tactic}`all_goals`, except it succeeds if its argument\nsucceeds on at least one goal:\n\n```lean\nexample (p q r : Prop) (hp : p) (hq : q) (hr : r) : p ∧ q ∧ r := by\n  constructor\n  any_goals constructor\n  any_goals assumption\n```\n\nThe first tactic in the {kw}`by` block below repeatedly splits\nconjunctions:\n\n```lean\nexample (p q r : Prop) (hp : p) (hq : q) (hr : r) :\n      p ∧ ((p ∧ q) ∧ r) ∧ (q ∧ r ∧ p) := by\n  repeat (any_goals constructor)\n  all_goals assumption\n```\n\nIn fact, we can compress the full tactic down to one line:\n\n```lean\nexample (p q r : Prop) (hp : p) (hq : q) (hr : r) :\n      p ∧ ((p ∧ q) ∧ r) ∧ (q ∧ r ∧ p) := by\n  repeat (any_goals (first | constructor | assumption))\n```\n\nThe combinator {tactic}`focus`{lit}` t` ensures that {lit}`t` only effects the current\ngoal, temporarily hiding the others from the scope. So, if {lit}`t`\nordinarily only effects the current goal, {tactic}`focus`{lit}` (`{tactic}`all_goals`{lit}` t)` has\nthe same effect as {lit}`t`.\n\n# Rewriting\n%%%\ntag := \"rewriting\"\n%%%\n\nThe {tactic}`rw` tactic and the {tactic}`simp` tactic\nwere introduced briefly in {ref \"calculational-proofs\"}[Calculational Proofs]. In this\nsection and the next, we discuss them in greater detail.\n\n:::setup\n```\nvariable (x y : α) (h : x = y)\ntheorem add_comm : ∀ (x y : Nat), x + y = y + x := by omega\n```\n\nThe {tactic}`rw` tactic provides a basic mechanism for applying\nsubstitutions to goals and hypotheses, providing a convenient and\nefficient way of working with equality. The most basic form of the\ntactic is {tactic}`rw`{lit}` [t]`, where {lit}`t` is a term whose type asserts an\nequality. For example, {lit}`t` can be a hypothesis {lean}`h : x = y` in the\ncontext; it can be a general lemma, like\n{lean}`add_comm : ∀ x y, x + y = y + x`, in which the rewrite tactic tries to find suitable\ninstantiations of {lean}`x` and {lean}`y`; or it can be any compound term\nasserting a concrete or general equation. In the following example, we\nuse this basic form to rewrite the goal using a hypothesis.\n\n:::\n\n```lean\nvariable (k : Nat) (f : Nat → Nat)\n\nexample (h₁ : f 0 = 0) (h₂ : k = 0) : f k = 0 := by\n  rw [h₂] -- replace k with 0\n  rw [h₁] -- replace f 0 with 0\n```\n\n:::setup\n```\nvariable (t : α)\n```\n\nIn the example above, the first use of {leanRef}`rw` replaces {leanRef}`k` with\n{leanRef}`0` in the goal {leanRef}`f k = 0`. Then, the second one replaces {leanRef}`f 0`\nwith {leanRef}`0`. The tactic automatically closes any goal of the form\n{lean}`t = t`. Here is an example of rewriting using a compound expression:\n:::\n\n```lean\nexample (x y : Nat) (p : Nat → Prop) (q : Prop) (h : q → x = y)\n        (h' : p y) (hq : q) : p x := by\n  rw [h hq]; assumption\n```\n\nHere, {leanRef}`h hq` establishes the equation {leanRef}`x = y`.\n\nMultiple rewrites can be combined using the notation {tactic}`rw`{lit}` [t_1, ..., t_n]`,\nwhich is just shorthand for {tactic}`rw`{lit}` [t_1]; ...; `{tactic}`rw`{lit}` [t_n]`. The previous example can be written as follows:\n\n```lean\nvariable (k : Nat) (f : Nat → Nat)\n\nexample (h₁ : f 0 = 0) (h₂ : k = 0) : f k = 0 := by\n  rw [h₂, h₁]\n```\n\nBy default, {leanRef}`rw` uses an equation in the forward direction, matching\nthe left-hand side with an expression, and replacing it with the\nright-hand side. The notation {lit}`←t` can be used to instruct the\ntactic to use the equality {lit}`t` in the reverse direction.\n\n```lean\nvariable (a b : Nat) (f : Nat → Nat)\n\nexample (h₁ : a = b) (h₂ : f a = 0) : f b = 0 := by\n  rw [←h₁, h₂]\n```\n\nIn this example, the term {leanRef}`←h₁` instructs the rewriter to replace\n{leanRef}`b` with {leanRef}`a`. In the editors, you can type the backwards arrow as\n{kbd}`\\l`. You can also use the ASCII equivalent, {lit}`<-`.\n\nSometimes the left-hand side of an identity can match more than one\nsubterm in the pattern, in which case the {tactic}`rw` tactic chooses the\nfirst match it finds when traversing the term. If that is not the one\nyou want, you can use additional arguments to specify the appropriate\nsubterm.\n\n```lean\nexample (a b c : Nat) : a + b + c = a + c + b := by\n  rw [Nat.add_assoc, Nat.add_comm b, ← Nat.add_assoc]\n\nexample (a b c : Nat) : a + b + c = a + c + b := by\n  rw [Nat.add_assoc, Nat.add_assoc, Nat.add_comm b]\n\nexample (a b c : Nat) : a + b + c = a + c + b := by\n  rw [Nat.add_assoc, Nat.add_assoc, Nat.add_comm _ b]\n```\n\n:::TODO\nGet the intermediate proof states from `rw` into the reference ring to help these examples be better\n:::\n\nIn the first example above, the first step rewrites {leanRef}`a + b + c` to\n{leanRef}`a`{lit}` + (`{leanRef}`b + c`{lit}`)`. The next step applies commutativity to the term\n{leanRef}`b + c`; without specifying the argument, the tactic would instead rewrite\n{leanRef}`a`{lit}` + (`{leanRef}`b + c`{lit}`)` to {lit}`(`{leanRef}`b + c`{lit}`) + `{leanRef}`a`. Finally, the last step applies\nassociativity in the reverse direction, rewriting {leanRef}`a`{lit}` + (`{leanRef}`c`{lit}`  +  `{leanRef}`b`{lit}`)` to\n{leanRef}`a + c + b`. The next two examples instead apply associativity to\nmove the parenthesis to the right on both sides, and then switch {leanRef}`b`\nand {leanRef}`c`. Notice that the last example specifies that the rewrite\nshould take place on the right-hand side by specifying the second\nargument to {leanRef}`Nat.add_comm`.\n\nBy default, the {leanRef}`rw` tactic affects only the goal. The notation\n{tactic}`rw`{lit}`  [t]  `{kw}`at`{lit}` h` applies the rewrite\n\n```lean\nexample (f : Nat → Nat) (a : Nat) (h : a + 0 = 0) : f a = f 0 := by\n  rw [Nat.add_zero] at h\n  rw [h]\n```\n\nThe first step, {leanRef}`rw [Nat.add_zero] at h`, rewrites the hypothesis {leanRef}`a + 0 = 0` to {leanRef}`a = 0`.\nThen the new hypothesis {leanRef}`a = 0` is used to rewrite the goal to {leanRef}`f 0`{lit}`  =  `{leanRef}`f 0`.\n\n:::leanFirst\nThe {leanRef}`rw` tactic is not restricted to propositions.\nIn the following example, we use {tactic}`rw`{lit}`  [h]  `{kw}`at`{lit}` t` to rewrite the hypothesis {leanRef}`t : Tuple α n` to {leanRef}`t : Tuple α`{lit}` 0`.\n\n```lean\ndef Tuple (α : Type) (n : Nat) :=\n  { as : List α // as.length = n }\n\nexample (n : Nat) (h : n = 0) (t : Tuple α n) : Tuple α 0 := by\n  rw [h] at t\n  exact t\n```\n:::\n\n# Using the Simplifier\n%%%\ntag := \"using-the-simplifier\"\n%%%\n\nWhereas {tactic}`rw` is designed as a surgical tool for manipulating a\ngoal, the simplifier offers a more powerful form of automation. A\nnumber of identities in Lean's library have been tagged with the\n{attr}`[simp]` attribute, and the {tactic}`simp` tactic uses them to iteratively\nrewrite subterms in an expression.\n\n```lean\nexample (x y z : Nat) : (x + 0) * (0 + y * 1 + z * 0) = x * y := by\n  simp\n\nexample (x y z : Nat) (p : Nat → Prop) (h : p (x * y))\n        : p ((x + 0) * (0 + y * 1 + z * 0)) := by\n  simp; assumption\n```\n\nIn the first example, the left-hand side of the equality in the goal\nis simplified using the usual identities involving 0 and 1, reducing\nthe goal to {leanRef}`x * y`{lit}`  =  `{leanRef}`x * y`. At that point, {leanRef}`simp` applies\nreflexivity to finish it off. In the second example, {leanRef}`simp` reduces\nthe goal to {leanRef}`p (x * y)`, at which point the assumption {leanRef}`h`\nfinishes it off. Here are some more examples\nwith lists:\n\n```lean\nopen List\n\nexample (xs : List Nat)\n        : reverse (xs ++ [1, 2, 3]) = [3, 2, 1] ++ reverse xs := by\n  simp\n\nexample (xs ys : List α)\n        : length (reverse (xs ++ ys)) = length xs + length ys := by\n  simp [Nat.add_comm]\n```\n\nAs with {leanRef}`rw`, you can use the keyword {leanRef}`at` to simplify a hypothesis:\n\n```lean\nexample (x y z : Nat) (p : Nat → Prop)\n        (h : p ((x + 0) * (0 + y * 1 + z * 0))) : p (x * y) := by\n  simp at h; assumption\n```\n\nMoreover, you can use a “wildcard” asterisk to simplify all the hypotheses and the goal:\n\n```lean\nattribute [local simp] Nat.mul_comm Nat.mul_assoc Nat.mul_left_comm\nattribute [local simp] Nat.add_assoc Nat.add_comm Nat.add_left_comm\n\nexample (w x y z : Nat) (p : Nat → Prop)\n        (h : p (x * y + z * w * x)) : p (x * w * z + y * x) := by\n  simp at *; assumption\n\nexample (x y z : Nat) (p : Nat → Prop)\n        (h₁ : p (1 * x + y)) (h₂ : p (x * z * 1))\n        : p (y + 0 + x) ∧ p (z * x) := by\n  simp at * <;> constructor <;> assumption\n```\n\n:::setup\n```\nvariable (x y z : Nat)\n```\n\nFor operations that are commutative and associative, like\nmultiplication on the natural numbers, the simplifier uses these two\nfacts to rewrite an expression, as well as _left commutativity_. In\nthe case of multiplication the latter is expressed as follows:\n{lean}`x * (y * z) = y * (x * z)`. The {leanRef}`local` modifier tells the simplifier\nto use these rules in the current file (or section or namespace, as\nthe case may be). It may seem that commutativity and\nleft-commutativity are problematic, in that repeated application of\neither causes looping. But the simplifier detects identities that\npermute their arguments, and uses a technique known as _ordered\nrewriting_. This means that the system maintains an internal ordering\nof terms, and only applies the identity if doing so decreases the\norder. With the three identities mentioned above, this has the effect\nthat all the parentheses in an expression are associated to the right,\nand the expressions are ordered in a canonical (though somewhat\narbitrary) way. Two expressions that are equivalent up to\nassociativity and commutativity are then rewritten to the same\ncanonical form.\n:::\n\n```lean\nattribute [local simp] Nat.mul_comm Nat.mul_assoc Nat.mul_left_comm\nattribute [local simp] Nat.add_assoc Nat.add_comm Nat.add_left_comm\n------\nexample (w x y z : Nat) (p : Nat → Prop)\n        : x * y + z * w * x = x * w * z + y * x := by\n  simp\n\nexample (w x y z : Nat) (p : Nat → Prop)\n        (h : p (x * y + z * w * x)) : p (x * w * z + y * x) := by\n  simp; simp at h; assumption\n```\n\nAs with {tactic}`rw`, you can send {tactic}`simp` a list of facts to use,\nincluding general lemmas, local hypotheses, definitions to unfold, and\ncompound expressions. The {tactic}`simp` tactic also recognizes the {lit}`←t`\nsyntax that {tactic}`rewrite` does. In any case, the additional rules are\nadded to the collection of identities that are used to simplify a\nterm.\n\n```lean\ndef f (m n : Nat) : Nat :=\n  m + n + m\n\nexample {m n : Nat} (h : n = 1) (h' : 0 = m) : (f m n) = n := by\n  simp [h, ←h', f]\n```\n\nA common idiom is to simplify a goal using local hypotheses:\n\n```lean\nvariable (k : Nat) (f : Nat → Nat)\n\nexample (h₁ : f 0 = 0) (h₂ : k = 0) : f k = 0 := by\n  simp [h₁, h₂]\n```\n\n:::leanFirst\nTo use all the hypotheses present in the local context when\nsimplifying, we can use the wildcard symbol, {leanRef}`*`:\n\n```lean\nvariable (k : Nat) (f : Nat → Nat)\n\nexample (h₁ : f 0 = 0) (h₂ : k = 0) : f k = 0 := by\n  simp [*]\n```\n:::\n\nHere is another example:\n\n```lean\nexample (u w x y z : Nat) (h₁ : x = y + z) (h₂ : w = u + x)\n        : w = z + y + u := by\n  simp [*, Nat.add_comm]\n```\n\n:::leanFirst\nThe simplifier will also do propositional rewriting. For example,\nusing the hypothesis {leanRef (in := \"p ∧ q\")}`p`, it rewrites {leanRef}`p ∧ q` to {leanRef (in := \"p ∨ q\")}`q` and {leanRef}`p ∨ q` to {lean}`True`,\nwhich it then proves trivially. Iterating such\nrewrites produces nontrivial propositional reasoning.\n\n```lean\nexample (p q : Prop) (hp : p) : p ∧ q ↔ q := by\n  simp [*]\n\nexample (p q : Prop) (hp : p) : p ∨ q := by\n  simp [*]\n\nexample (p q r : Prop) (hp : p) (hq : q) : p ∧ (q ∨ r) := by\n  simp [*]\n```\n:::\n\nThe next example simplifies all the hypotheses, and then uses them to prove the goal.\n\n```lean\nset_option linter.unusedVariables false\n------\nexample (u w x x' y y' z : Nat) (p : Nat → Prop)\n        (h₁ : x + 0 = x') (h₂ : y + 0 = y')\n        : x + y + 0 = x' + y' := by\n  simp at *\n  simp [*]\n```\n\nOne thing that makes the simplifier especially useful is that its\ncapabilities can grow as a library develops. For example, suppose we\ndefine a list operation that symmetrizes its input by appending its\nreversal:\n\n```lean\ndef mk_symm (xs : List α) :=\n  xs ++ xs.reverse\n```\n\n:::leanFirst\nThen for any list {leanRef (in := \"mk_symm xs\")}`xs`, {leanRef}`(mk_symm xs).reverse` is equal to {leanRef}`mk_symm xs`,\nwhich can easily be proved by unfolding the definition:\n\n```lean\ndef mk_symm (xs : List α) :=\n xs ++ xs.reverse\n------\ntheorem reverse_mk_symm (xs : List α)\n        : (mk_symm xs).reverse = mk_symm xs := by\n  simp [mk_symm]\n```\n:::\n\nWe can now use this theorem to prove new results:\n\n```lean\ndef mk_symm (xs : List α) :=\n xs ++ xs.reverse\ntheorem reverse_mk_symm (xs : List α)\n       : (mk_symm xs).reverse = mk_symm xs := by\n simp [mk_symm]\n------\nexample (xs ys : List Nat)\n        : (xs ++ mk_symm ys).reverse = mk_symm ys ++ xs.reverse := by\n  simp [reverse_mk_symm]\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p (mk_symm ys ++ xs.reverse) := by\n  simp [reverse_mk_symm] at h; assumption\n```\n\nBut using {leanRef}`reverse_mk_symm` is generally the right thing to do, and\nit would be nice if users did not have to invoke it explicitly. You can\nachieve that by marking it as a simplification rule when the theorem\nis defined:\n\n```lean\ndef mk_symm (xs : List α) :=\n xs ++ xs.reverse\n------\n@[simp] theorem reverse_mk_symm (xs : List α)\n        : (mk_symm xs).reverse = mk_symm xs := by\n  simp [mk_symm]\n\nexample (xs ys : List Nat)\n        : (xs ++ mk_symm ys).reverse = mk_symm ys ++ xs.reverse := by\n  simp\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p (mk_symm ys ++ xs.reverse) := by\n  simp at h; assumption\n```\n\nThe notation {leanRef}`@[simp]` declares {leanRef}`reverse_mk_symm` to have the\n{attr}`[simp]` attribute, and can be spelled out more explicitly:\n\n```lean\ndef mk_symm (xs : List α) :=\n xs ++ xs.reverse\n------\ntheorem reverse_mk_symm (xs : List α)\n        : (mk_symm xs).reverse = mk_symm xs := by\n  simp [mk_symm]\n\nattribute [simp] reverse_mk_symm\n\nexample (xs ys : List Nat)\n        : (xs ++ mk_symm ys).reverse = mk_symm ys ++ xs.reverse := by\n  simp\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p (mk_symm ys ++ xs.reverse) := by\n  simp at h; assumption\n```\n\nThe attribute can also be applied any time after the theorem is declared:\n\n```lean\ndef mk_symm (xs : List α) :=\n xs ++ xs.reverse\n------\ntheorem reverse_mk_symm (xs : List α)\n        : (mk_symm xs).reverse = mk_symm xs := by\n  simp [mk_symm]\n\nexample (xs ys : List Nat)\n        : (xs ++ mk_symm ys).reverse = mk_symm ys ++ xs.reverse := by\n  simp [reverse_mk_symm]\n\nattribute [simp] reverse_mk_symm\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p (mk_symm ys ++ xs.reverse) := by\n  simp at h; assumption\n```\n\n:::leanFirst\nOnce the attribute is applied, however, there is no way to permanently\nremove it; it persists in any file that imports the one where the\nattribute is assigned. As we will discuss further in\n{ref \"attributes\"}[Attributes], one can limit the scope of an attribute to the\ncurrent file or section using the {leanRef}`local` modifier:\n\n```lean\ndef mk_symm (xs : List α) :=\n xs ++ xs.reverse\n------\ntheorem reverse_mk_symm (xs : List α)\n        : (mk_symm xs).reverse = mk_symm xs := by\n  simp [mk_symm]\n\nsection\nattribute [local simp] reverse_mk_symm\n\nexample (xs ys : List Nat)\n        : (xs ++ mk_symm ys).reverse = mk_symm ys ++ xs.reverse := by\n  simp\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p (mk_symm ys ++ xs.reverse) := by\n  simp at h; assumption\nend\n```\n:::\n\nOutside the section, the simplifier will no longer use\n{leanRef}`reverse_mk_symm` by default.\n\nNote that the various {leanRef}`simp` options we have discussed—giving an\nexplicit list of rules, and using {leanRef}`at` to specify the location—can be combined,\nbut the order they are listed is rigid. You can see the correct order\nin an editor by placing the cursor on the {leanRef}`simp` identifier to see\nthe documentation string that is associated with it.\n\n:::leanFirst\nThere are two additional modifiers that are useful. By default,\n{leanRef}`simp` includes all theorems that have been marked with the\nattribute {attr}`[simp]`. Writing {leanRef}`simp only` excludes these defaults,\nallowing you to use a more explicitly crafted list of\nrules. In the examples below, the minus sign and\n{leanRef}`only` are used to block the application of {leanRef}`reverse_mk_symm`.\n\n```lean\ndef mk_symm (xs : List α) :=\n  xs ++ xs.reverse\n@[simp] theorem reverse_mk_symm (xs : List α)\n        : (mk_symm xs).reverse = mk_symm xs := by\n  simp [mk_symm]\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p (mk_symm ys ++ xs.reverse) := by\n  simp at h; assumption\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p ((mk_symm ys).reverse ++ xs.reverse) := by\n  simp [-reverse_mk_symm] at h; assumption\n\nexample (xs ys : List Nat) (p : List Nat → Prop)\n        (h : p (xs ++ mk_symm ys).reverse)\n        : p ((mk_symm ys).reverse ++ xs.reverse) := by\n  simp only [List.reverse_append] at h; assumption\n```\n:::\n\nThe {leanRef}`simp` tactic has many configuration options. For example, we can enable contextual simplifications as follows:\n\n```lean\nexample : if x = 0 then y + x = y else x ≠ 0 := by\n  simp +contextual\n```\n\nWith {leanRef}`+contextual`, the {leanRef}`simp` tactic uses the fact that {leanRef}`x = 0` when simplifying {leanRef}`y + x = y`, and\n{leanRef}`x ≠ 0` when simplifying the other branch. Here is another example:\n\n```lean\nexample : ∀ (x : Nat) (h : x = 0), y + x = y := by\n  simp +contextual\n```\n\n:::leanFirst\nAnother useful configuration option is {leanRef}`+arith` which enables arithmetical simplifications.\n\n```lean\nexample : 0 < 1 + x ∧ x + y + 2 ≥ y + 1 := by\n  simp +arith\n```\n:::\n\n# Split Tactic\n%%%\ntag := \"split-tactic\"\n%%%\n\n::::leanFirst\n\n\nThe {leanRef}`split` tactic is useful for breaking nested {kw}`if`-{kw}`then`-{kw}`else` and {kw}`match` expressions in cases.\nFor a {kw}`match` expression with $`n` cases, the {leanRef}`split` tactic generates at most $`n` subgoals. Here is an example:\n\n\n```lean\ndef f (x y z : Nat) : Nat :=\n  match x, y, z with\n  | 5, _, _ => y\n  | _, 5, _ => y\n  | _, _, 5 => y\n  | _, _, _ => 1\n\nexample (x y z : Nat) : x ≠ 5 → y ≠ 5 → z ≠ 5 → z = w → f x y w = 1 := by\n  intros\n  simp [f]\n  split\n  . contradiction\n  . contradiction\n  . contradiction\n  . rfl\n```\n::::\n\nWe can compress the tactic proof above as follows.\n\n```lean\ndef f (x y z : Nat) : Nat :=\n match x, y, z with\n | 5, _, _ => y\n | _, 5, _ => y\n | _, _, 5 => y\n | _, _, _ => 1\n------\nexample (x y z : Nat) :\n  x ≠ 5 → y ≠ 5 → z ≠ 5 → z = w →\n  f x y w = 1 := by\n  intros; simp [f]; split <;> first | contradiction | rfl\n```\n\nThe tactic {leanRef}`split <;> first | contradiction | rfl` first applies the {leanRef}`split` tactic,\nand then for each generated goal it tries {leanRef}`contradiction`, and then {leanRef}`rfl` if {leanRef}`contradiction` fails.\nLike {leanRef}`simp`, we can apply {leanRef}`split` to a particular hypothesis:\n\n```lean\ndef g (xs ys : List Nat) : Nat :=\n  match xs, ys with\n  | [a, b], _ => a+b+1\n  | _, [b, _] => b+1\n  | _, _      => 1\n\nexample (xs ys : List Nat) (h : g xs ys = 0) : False := by\n  simp [g] at h; split at h <;> simp +arith at h\n```\n\n# Extensible Tactics\n%%%\ntag := \"extensible-tactics\"\n%%%\n\n:::leanFirst\nIn the following example, we define the notation {leanRef}`triv` using the command {leanRef}`syntax`.\nThen, we use the command {leanRef}`macro_rules` to specify what should\nbe done when {leanRef}`triv` is used. You can provide different expansions, and the tactic\ninterpreter will try all of them until one succeeds:\n\n```lean\n-- Define a new tactic notation\nsyntax \"triv\" : tactic\n\nmacro_rules\n  | `(tactic| triv) => `(tactic| assumption)\n\nexample (h : p) : p := by\n  triv\n\n-- You cannot prove the following theorem using `triv`\n-- example (x : α) : x = x := by\n--  triv\n\n-- Let's extend `triv`. The tactic interpreter\n-- tries all possible macro extensions for `triv` until one succeeds\nmacro_rules\n  | `(tactic| triv) => `(tactic| rfl)\n\nexample (x : α) : x = x := by\n  triv\n\nexample (x : α) (h : p) : x = x ∧ p := by\n  apply And.intro <;> triv\n\n-- We now add a (recursive) extension\nmacro_rules | `(tactic| triv) => `(tactic| apply And.intro <;> triv)\n\nexample (x : α) (h : p) : x = x ∧ p := by\n  triv\n```\n:::\n\n# Exercises\n%%%\ntag := none\n%%%\n\n1. Go back to the exercises in {ref \"propositions-and-proofs\"}[Propositions and Proofs] and\n{ref \"quantifiers-and-equality\"}[Quantifiers and Equality] and\nredo as many as you can now with tactic proofs, using also {tactic}`rw`\nand {tactic}`simp` as appropriate.\n\n2. Use tactic combinators to obtain a one-line proof of the following:\n\n```lean\nexample (p q r : Prop) (hp : p)\n        : (p ∨ q ∨ r) ∧ (q ∨ p ∨ r) ∧ (q ∨ r ∨ p) := by\n  sorry\n```\n"
  },
  {
    "path": "book/TPiL/TypeClasses.lean",
    "content": "import VersoManual\nimport TPiL.Examples\n\nopen Verso.Genre\nopen Verso.Genre.Manual hiding tactic\nopen TPiL\n\n#doc (Manual) \"Type Classes\" =>\n%%%\ntag := \"type-classes\"\n%%%\n\nType classes were introduced as a principled way of enabling\nad-hoc polymorphism in functional programming languages. We first observe that it\nwould be easy to implement an ad-hoc polymorphic function (such as addition) if the\nfunction simply took the type-specific implementation of addition as an argument\nand then called that implementation on the remaining arguments. For example,\nsuppose we declare a structure in Lean to hold implementations of addition.\n\n```lean\nnamespace Ex\n------\nstructure Add (α : Type) where\n  add : α → α → α\n\n#check @Add.add -- @Add.add : {α : Type} → Add α → α → α → α\n------\nend Ex\n```\n\n\n::::setup\n```\nnamespace Ex\nstructure Add (α : Type) where\n  add : α → α → α\ndef double (s : Add α) (x : α) : α :=\n  s.add x x\nvariable {n : Nat}\n```\n:::leanFirst\nIn the above Lean code, the field {leanRef}`add` has type\n{lean}`Add.add : {α : Type} → Add α → α → α → α`\nwhere the curly braces around the type {leanRef}`α` mean that it is an implicit argument.\nWe could implement {leanRef}`double` by:\n\n\n```lean\nnamespace Ex\nstructure Add (α : Type) where\n  add : α → α → α\n------\ndef double (s : Add α) (x : α) : α :=\n  s.add x x\n\n#eval double { add := Nat.add } 10 -- 20\n\n#eval double { add := Nat.mul } 10 -- 100\n\n#eval double { add := Int.add } 10 -- 20\n------\nend Ex\n```\n:::\n\nNote that you can double a natural number {lean}`n` by {lean}`double { add := Nat.add } n`.\nOf course, it would be highly cumbersome for users to manually pass the\nimplementations around in this way.\nIndeed, it would defeat most of the potential benefits of ad-hoc\npolymorphism.\n::::\n\n:::leanFirst\nThe main idea behind type classes is to make arguments such as {leanRef}`Add α` implicit,\nand to use a database of user-defined instances to synthesize the desired instances\nautomatically through a process known as typeclass resolution. In Lean, by changing\n{kw}`structure` to {kw}`class` in the example above, the type of {leanRef}`Add.add` becomes:\n\n```lean\nnamespace Ex\n------\nclass Add (α : Type) where\n  add : α → α → α\n\n#check @Add.add -- @Add.add : {α : Type} → [self : Add α] → α → α → α\n------\nend Ex\n```\n:::\n\nwhere the square brackets indicate that the argument of type {leanRef}`Add α` is _instance implicit_,\ni.e. that it should be synthesized using typeclass resolution. This version of\n{leanRef}`add` is the Lean analogue of the Haskell term {lit}`add :: Add a => a -> a -> a`.\nSimilarly, we can register instances by:\n\n```lean\nnamespace Ex\nclass Add (α : Type) where\n  add : α → α → α\n------\ninstance : Add Nat where\n  add := Nat.add\n\ninstance : Add Int where\n  add := Int.add\n\ninstance : Add Float where\n  add := Float.add\n------\nend Ex\n```\n\n::::leanFirst\n:::setup\n```\nnamespace Ex\nclass Add (α : Type) where\n  add : α → α → α\n------\ninstance : Add Nat where\n  add := Nat.add\n\ninstance : Add Int where\n  add := Int.add\n\ninstance : Add Float where\n  add := Float.add\n\nvariable (n m : Nat)\n```\nThen for {lean}`n : Nat` and {lean}`m : Nat`, the term {lean}`Add.add n m` triggers typeclass resolution with\nthe goal of {lean}`Add Nat`, and typeclass resolution will synthesize the instance for {lean}`Nat` above.\nWe can now reimplement {leanRef}`double` using an instance implicit by:\n:::\n\n```lean\nnamespace Ex\nclass Add (α : Type) where\n  add : α → α → α\ninstance : Add Nat where\n add := Nat.add\ninstance : Add Int where\n add := Int.add\ninstance : Add Float where\n add := Float.add\n------\ndef double [Add α] (x : α) : α :=\n  Add.add x x\n\n#check @double -- @double : {α : Type} → [Add α] → α → α\n\n#eval double 10 -- 20\n\n#eval double (10 : Int) -- 20\n\n#eval double (7 : Float) -- 14.000000\n\n#eval double (239.0 + 2) -- 482.000000\n\n------\nend Ex\n```\n::::\n\n:::leanFirst\nIn general, instances may depend on other instances in complicated ways. For example,\nyou can declare an instance stating that if {leanRef}`α` has addition, then {leanRef}`Array α`\nhas addition:\n\n```lean\ninstance [Add α] : Add (Array α) where\n  add x y := Array.zipWith (· + ·) x y\n\n#eval Add.add #[1, 2] #[3, 4] -- #[4, 6]\n\n#eval #[1, 2] + #[3, 4] -- #[4, 6]\n```\n:::\n\nNote that {leanRef}`(· + ·)` is notation for {lean}`fun x y => x + y` in Lean.\n\n\n:::setup\n```\ndef head [Inhabited α] (xs : List α) : α := default\nvariable {α : Type u} {x : α} {xs : List α} [Inhabited α]\n```\n\nThe example above demonstrates how type classes are used to overload notation.\nNow, we explore another application. We often need an arbitrary element of a given type.\nRecall that types may not have any elements in Lean.\nIt often happens that we would like a definition to return an arbitrary element in a “corner case.”\nFor example, we may like the expression {lean}`head xs` to be of type {lean}`α` when {lean}`xs` is of type {lean}`List α`.\nSimilarly, many theorems hold under the additional assumption that a type is not empty.\nFor example, if {lean}`α` is a type, {lean}`∃ x : α, x = x` is true only if {lean}`α` is not empty.\nThe standard library defines a type class {lean}`Inhabited` to enable type class inference to infer a\n“default” element of an inhabited type.\nLet us start with the first step of the program above, declaring an appropriate class:\n\n\n\n```lean\nnamespace Ex\n------\nclass Inhabited (α : Type u) where\n  default : α\n\n#check @Inhabited.default -- @Inhabited.default : {α : Type u_1} → [self : Inhabited α] → α\n------\nend Ex\n```\n\nNote {leanRef}`Inhabited.default` doesn't have any explicit arguments.\n\nAn element of the class {lean}`Inhabited α` is simply an expression of the form {lean}`Inhabited.mk x`, for some element {lean}`x : α`.\nThe projection {lean}`Inhabited.default` will allow us to “extract” such an element of {lean}`α` from an element of {lean}`Inhabited α`.\nNow we populate the class with some instances:\n:::\n\n```lean\nnamespace Ex\nclass Inhabited (a : Type _) where\n default : a\n------\ninstance : Inhabited Bool where\n  default := true\n\ninstance : Inhabited Nat where\n  default := 0\n\ninstance : Inhabited Unit where\n  default := ()\n\ninstance : Inhabited Prop where\n  default := True\n\n#eval (Inhabited.default : Nat) -- 0\n\n#eval (Inhabited.default : Bool) -- true\n--------\nend Ex\n```\n\nYou can use the command {kw}`export` to create the alias {lean}`default` for {lean}`Inhabited.default`.\n\n```lean\nnamespace Ex\nclass Inhabited (a : Type _) where\n default : a\ninstance : Inhabited Bool where\n default := true\ninstance : Inhabited Nat where\n default := 0\ninstance : Inhabited Unit where\n default := ()\ninstance : Inhabited Prop where\n default := True\n------\nexport Inhabited (default)\n\n#eval (default : Nat) -- 0\n\n#eval (default : Bool) -- true\n------\nend Ex\n```\n\n# Chaining Instances\n%%%\ntag := \"chaining-instances\"\n%%%\n\nIf that were the extent of type class inference, it would not be all that impressive;\nit would be simply a mechanism of storing a list of instances for the elaborator to find in a lookup table.\nWhat makes type class inference powerful is that one can _chain_ instances. That is,\nan instance declaration can in turn depend on an implicit instance of a type class.\nThis causes class inference to chain through instances recursively, backtracking when necessary, in a Prolog-like search.\n\n:::leanFirst\nFor example, the following definition shows that if two types {leanRef}`α` and {leanRef}`β` are inhabited, then so is their product:\n\n```lean\ninstance [Inhabited α] [Inhabited β] : Inhabited (α × β) where\n  default := (default, default)\n```\n:::\n\nWith this added to the earlier instance declarations, type class instance can infer, for example, a default element of {lean}`Nat × Bool`:\n\n```lean\nnamespace Ex\nclass Inhabited (α : Type u) where\n default : α\ninstance : Inhabited Bool where\n default := true\ninstance : Inhabited Nat where\n default := 0\nopaque default [Inhabited α] : α :=\n Inhabited.default\n------\ninstance [Inhabited α] [Inhabited β] : Inhabited (α × β) where\n  default := (default, default)\n\n#eval (default : Nat × Bool) -- (0, true)\n------\nend Ex\n```\n\nSimilarly, we can inhabit type function with suitable constant functions:\n\n```lean\ninstance [Inhabited β] : Inhabited (α → β) where\n  default := fun _ => default\n```\n\nAs an exercise, try defining default instances for other types, such as {lean}`List` and {lean}`Sum` types.\n\n:::setup\n```\nuniverse u\nset_option checkBinderAnnotations false\n```\nThe Lean standard library contains the definition {name}`inferInstance`. It has type {lean}`{α : Sort u} → [i : α] → α`,\nand is useful for triggering the type class resolution procedure when the expected type is an instance.\n:::\n\n```lean\n#check (inferInstance : Inhabited Nat) -- inferInstance : Inhabited Nat\n\ndef foo : Inhabited (Nat × Nat) :=\n  inferInstance\n\ntheorem ex : foo.default = (default, default) :=\n  rfl\n```\n\n:::leanFirst\nYou can use the command {leanRef}`#print` to inspect how simple {leanRef}`inferInstance` is.\n\n```lean\n#print inferInstance\n```\n:::\n\n# ToString\n%%%\ntag := \"ToString\"\n%%%\n```setup\nuniverse u\n```\n\n:::leanFirst\nThe polymorphic method {leanRef}`toString` has type {lean}`{α : Type u} → [ToString α] → α → String`. You implement the instance\nfor your own types and use chaining to convert complex values into strings. Lean comes with {lean}`ToString` instances\nfor most builtin types.\n\n```lean\nstructure Person where\n  name : String\n  age  : Nat\n\ninstance : ToString Person where\n  toString p := p.name ++ \"@\" ++ toString p.age\n\n#eval toString { name := \"Leo\", age := 542 : Person } -- \"Leo@542\"\n\n#eval toString ({ name := \"Daniel\", age := 18 : Person }, \"hello\") -- \"(Daniel@18, hello)\"\n```\n:::\n\n# Numerals\n%%%\ntag := \"numerals\"\n%%%\n\nNumerals are polymorphic in Lean. You can use a numeral (e.g., {lit}`2`) to denote an element of any type that implements\nthe type class {name}`OfNat`.\n\n```lean\nstructure Rational where\n  num : Int\n  den : Nat\n  inv : den ≠ 0\n\ninstance : OfNat Rational n where\n  ofNat := { num := n, den := 1, inv := by decide }\n\ninstance : ToString Rational where\n  toString r := s!\"{r.num}/{r.den}\"\n\n#eval (2 : Rational) -- 2/1\n\n#check (2 : Rational) -- 2 : Rational\n\n#check (2 : Nat)      -- 2 : Nat\n```\n\n:::setup\n```\nstructure Rational where\n  num : Int\n  den : Nat\n  inv : den ≠ 0\n\ninstance : OfNat Rational n where\n  ofNat := { num := n, den := 1, inv := by decide }\n\ninstance : ToString Rational where\n  toString r := s!\"{r.num}/{r.den}\"\n```\nLean elaborates the terms {lean}`(2 : Nat)` and {lean}`(2 : Rational)` as\n{lean (type := \"Nat\")}`@OfNat.ofNat Nat 2 (@instOfNatNat 2)` and\n{lean}`@OfNat.ofNat Rational 2 (@instOfNatRational 2)` respectively.\nWe say the numerals {lit}`2` occurring in the elaborated terms are _raw_ natural numbers.\nYou can input the raw natural number {lit}`2` using the macro {lean}`nat_lit 2`.\n:::\n\n```lean\n#check nat_lit 2  -- 2 : Nat\n```\n\nRaw natural numbers are _not_ polymorphic.\n\nThe {lean}`OfNat` instance is parametric on the numeral. So, you can define instances for particular numerals.\nThe second argument is often a variable as in the example above, or a _raw_ natural number.\n\n```lean\nclass Monoid (α : Type u) where\n  unit : α\n  op   : α → α → α\n\ninstance [s : Monoid α] : OfNat α (nat_lit 1) where\n  ofNat := s.unit\n\ndef getUnit [Monoid α] : α :=\n  1\n```\n\n# Output Parameters\n%%%\ntag := \"output-parameters\"\n%%%\n\n:::setup\n```\nuniverse u\nvariable (T : Type u)\n```\n\nBy default, Lean only tries to synthesize an instance {lean}`Inhabited T` when the term {lean}`T` is known and does not\ncontain missing parts. The following command produces the error\n{lit}`typeclass instance problem is stuck, it is often due to metavariables` because the type has a missing part (i.e., the {lit}`_`).\n:::\n\n```lean\n/--\nerror: typeclass instance problem is stuck, it is often due to metavariables\n  Inhabited (Nat × ?m.2)\n-/\n#guard_msgs (error) in\n#eval (inferInstance : Inhabited (Nat × _))\n```\n\nYou can view the parameter of the type class {lean}`Inhabited` as an _input_ value for the type class synthesizer.\nWhen a type class has multiple parameters, you can mark some of them as {deftech}_output parameters_.\nLean will start type class synthesizer even when these parameters have missing parts.\nIn the following example, we use output parameters to define a _heterogeneous_ polymorphic\nmultiplication.\n\n```lean\nnamespace Ex\n------\nclass HMul (α : Type u) (β : Type v) (γ : outParam (Type w)) where\n  hMul : α → β → γ\n\nexport HMul (hMul)\n\ninstance : HMul Nat Nat Nat where\n  hMul := Nat.mul\n\ninstance : HMul Nat (Array Nat) (Array Nat) where\n  hMul a bs := bs.map (fun b => hMul a b)\n\n#eval hMul 4 3           -- 12\n\n#eval hMul 4 #[2, 3, 4]  -- #[8, 12, 16]\n------\nend Ex\n```\n\nThe parameters {leanRef}`α` and {leanRef}`β` are considered input parameters and {leanRef}`γ` an output one.\nGiven an application {leanRef}`hMul a b`, after the types of {leanRef}`a` and {leanRef}`b` are known, the type class\nsynthesizer is invoked, and the resulting type is obtained from the output parameter {leanRef}`γ`.\nIn the example above, we defined two instances. The first one is the homogeneous\nmultiplication for natural numbers. The second is the scalar multiplication for arrays.\nNote that you chain instances and generalize the second instance.\n\n```lean\nnamespace Ex\n------\nclass HMul (α : Type u) (β : Type v) (γ : outParam (Type w)) where\n  hMul : α → β → γ\n\nexport HMul (hMul)\n\ninstance : HMul Nat Nat Nat where\n  hMul := Nat.mul\n\ninstance : HMul Int Int Int where\n  hMul := Int.mul\n\ninstance [HMul α β γ] : HMul α (Array β) (Array γ) where\n  hMul a bs := bs.map (fun b => hMul a b)\n\n#eval hMul 4 3                    -- 12\n\n#eval hMul 4 #[2, 3, 4]           -- #[8, 12, 16]\n\n#eval hMul (-2) #[3, -1, 4]       -- #[-6, 2, -8]\n\n#eval hMul 2 #[#[2, 3], #[0, 4]]  -- #[#[4, 6], #[0, 8]]\n------\nend Ex\n```\n\nYou can use our new scalar array multiplication instance on arrays of type {leanRef}`Array β`\nwith a scalar of type {leanRef}`α` whenever you have an instance {leanRef}`HMul α β γ`.\nIn the last {kw}`#eval`, note that the instance was used twice on an array of arrays.\n\nOutput parameters are ignored during instance synthesis. Even when instance synthesis occurs in a\ncontext in which the values of output parameters are already determined, their values are ignored.\nOnce an instance is found using its input parameters, Lean ensures that the already-known values of\nthe output parameters match those which were found.\n\nLean also features {deftech}_semi-output parameters_, which have some features of input parameters\nand some features of output parameters. Like input parameters, semi-output parameters are considered\nwhen selecting instances. Like output parameters, they can be used to instantiate unknown values.\nHowever, they do not do so uniquely. Instance synthesis with semi-output parameters can be more difficult\nto predict, because the order in which instances are considered can determine which is selected, but it is\nalso more flexible.\n\n# Default Instances\n%%%\ntag := \"default-instances\"\n%%%\n\nIn the class {leanRef}`HMul`, the parameters {leanRef}`α` and {leanRef}`β` are treated as input values.\nThus, type class synthesis only starts after these two types are known. This may often\nbe too restrictive.\n\n```lean\nnamespace Ex\n------\nclass HMul (α : Type u) (β : Type v) (γ : outParam (Type w)) where\n  hMul : α → β → γ\n\nexport HMul (hMul)\n\ninstance : HMul Int Int Int where\n  hMul := Int.mul\n\ndef xs : List Int := [1, 2, 3]\n\n/--\nerror: typeclass instance problem is stuck\n  HMul Int ?m.2 (?m.11 y)\n\nNote: Lean will not try to resolve this typeclass instance problem because the second type argument to `HMul` is a metavariable. This argument must be fully determined before Lean will try to resolve the typeclass.\n\nHint: Adding type annotations and supplying implicit arguments to functions can give Lean more information for typeclass resolution. For example, if you have a variable `x` that you intend to be a `Nat`, but Lean reports it as having an unresolved type like `?m`, replacing `x` with `(x : Nat)` can get typeclass resolution un-stuck.\n-/\n#guard_msgs (error) in\n#eval fun y => xs.map (fun x => hMul x y)\n------\nend Ex\n```\n\nThe instance {leanRef}`HMul` is not synthesized by Lean because the type of {leanRef}`y` has not been provided.\nHowever, it is natural to assume that the type of {leanRef}`y` and {leanRef}`x` should be the same in\nthis kind of situation. We can achieve exactly that using _default instances_.\n\n```lean\nnamespace Ex\n------\nclass HMul (α : Type u) (β : Type v) (γ : outParam (Type w)) where\n  hMul : α → β → γ\n\nexport HMul (hMul)\n\n@[default_instance]\ninstance : HMul Int Int Int where\n  hMul := Int.mul\n\ndef xs : List Int := [1, 2, 3]\n\n#check fun y => xs.map (fun x => hMul x y)  -- fun y => List.map (fun x => hMul x y) xs : Int → List Int\n------\nend Ex\n```\n\n:::setup\n```\nvariable {α : Type u} {β : Type v} {γ : Type w} {a : α} {b : β} {n : Nat}\nvariable [HAdd α β γ] [HSub α β γ] [HMul α β γ] [HDiv α β γ] [HMod α β γ]\n```\nBy tagging the instance above with the attribute {attr}`[default_instance]`, we are instructing Lean\nto use this instance on pending type class synthesis problems.\nThe actual Lean implementation defines homogeneous and heterogeneous classes for arithmetical operators.\nMoreover, {lean}`a + b`, {lean}`a * b`, {lean}`a - b`, {lean}`a / b`, and {lean}`a % b` are notations for the heterogeneous versions.\nThe instance {lean}`OfNat Nat n` is the default instance (with priority 100) for the {lean}`OfNat` class. This is why the numeral\n{lean}`2` has type {lean}`Nat` when the expected type is not known. You can define default instances with higher\npriority to override the builtin ones.\n:::\n```lean\nstructure Rational where\n  num : Int\n  den : Nat\n  inv : den ≠ 0\n\n@[default_instance 200]\ninstance : OfNat Rational n where\n  ofNat := { num := n, den := 1, inv := by decide }\n\ninstance : ToString Rational where\n  toString r := s!\"{r.num}/{r.den}\"\n\n#check 2 -- 2 : Rational\n```\n\n:::setup\n```\nvariable {α : Type u} {xs : List α} [Mul α] [OfNat α 2]\n```\n\nPriorities are also useful to control the interaction between different default instances.\nFor example, suppose {lean}`xs` has type {lean}`List α`. When elaborating {lean}`xs.map (fun x => 2 * x)`, we want the homogeneous instance for multiplication\nto have higher priority than the default instance for {lean}`OfNat α 2`. This is particularly important when we have implemented only the instance\n{lean}`HMul α α α`, and did not implement {lean}`HMul Nat α α`.\nNow, we reveal how the notation {lit}`a * b` is defined in Lean.\n:::\n```lean\nnamespace Ex\n------\nclass OfNat (α : Type u) (n : Nat) where\n  ofNat : α\n\n@[default_instance]\ninstance (n : Nat) : OfNat Nat n where\n  ofNat := n\n\nclass HMul (α : Type u) (β : Type v) (γ : outParam (Type w)) where\n  hMul : α → β → γ\n\nclass Mul (α : Type u) where\n  mul : α → α → α\n\n@[default_instance 10]\ninstance [Mul α] : HMul α α α where\n  hMul a b := Mul.mul a b\n\ninfixl:70 \" * \" => HMul.hMul\n------\nend Ex\n```\n\nThe {leanRef}`Mul` class is convenient for types that only implement the homogeneous multiplication.\n\n# Local Instances\n%%%\ntag := \"local-instances\"\n%%%\n\nType classes are implemented using attributes in Lean. Thus, you can\nuse the {kw}`local` modifier to indicate that they only have effect until\nthe current {kw}`section` or {kw}`namespace` is closed, or until the end\nof the current file.\n\n```lean\nstructure Point where\n  x : Nat\n  y : Nat\n\nsection\n\nlocal instance : Add Point where\n  add a b := { x := a.x + b.x, y := a.y + b.y }\n\ndef double (p : Point) :=\n  p + p\n\nend -- instance `Add Point` is not active anymore\n\n/--\nerror: failed to synthesize\n  HAdd Point Point ?m.5\n\nHint: Additional diagnostic information may be available using\nthe `set_option diagnostics true` command.\n-/\n#guard_msgs in\ndef triple (p : Point) :=\n  p + p + p\n```\n\nYou can also temporarily disable an instance using the {kw}`attribute` command\nuntil the current {kw}`section` or {kw}`namespace` is closed, or until the end\nof the current file.\n\n```lean\nstructure Point where\n  x : Nat\n  y : Nat\n\ninstance addPoint : Add Point where\n  add a b := { x := a.x + b.x, y := a.y + b.y }\n\ndef double (p : Point) :=\n  p + p\n\nattribute [-instance] addPoint\n\n/--\nerror: failed to synthesize\n  HAdd Point Point ?m.5\n\nHint: Additional diagnostic information may be available using\nthe `set_option diagnostics true` command.\n-/\n#guard_msgs in\ndef triple (p : Point) :=\n  p + p + p  -- Error: failed to synthesize instance\n```\n\nWe recommend you only use this command to diagnose problems.\n\n# Scoped Instances\n%%%\ntag := \"scoped-instances\"\n%%%\n\nYou can also declare scoped instances in namespaces. This kind of instance is\nonly active when you are inside of the namespace or open the namespace.\n\n```lean\nstructure Point where\n  x : Nat\n  y : Nat\n\nnamespace Point\n\nscoped instance : Add Point where\n  add a b := { x := a.x + b.x, y := a.y + b.y }\n\ndef double (p : Point) :=\n  p + p\n\nend Point\n-- instance `Add Point` is not active anymore\n\n/--\nerror: failed to synthesize\n  HAdd Point Point ?m.3\n\nHint: Additional diagnostic information may be available using\nthe `set_option diagnostics true` command.\n-/\n#guard_msgs (error) in\n#check fun (p : Point) => p + p + p\n\nnamespace Point\n-- instance `Add Point` is active again\n#check fun (p : Point) => p + p + p\n\nend Point\n\nopen Point -- activates instance `Add Point`\n#check fun (p : Point) => p + p + p\n```\n\nYou can use the command {kw}`open scoped`{lit}` <namespace>` to activate scoped attributes but will\nnot “open” the names from the namespace.\n\n```lean\nstructure Point where\n  x : Nat\n  y : Nat\n\nnamespace Point\n\nscoped instance : Add Point where\n  add a b := { x := a.x + b.x, y := a.y + b.y }\n\ndef double (p : Point) :=\n  p + p\n\nend Point\n\nopen scoped Point -- activates instance `Add Point`\n#check fun (p : Point) => p + p + p\n\n/--\nerror: Unknown identifier `double`\n-/\n#guard_msgs (error) in\n#check fun (p : Point) => double p\n```\n\n# Decidable Propositions\n%%%\ntag := \"decidable-propositions\"\n%%%\n\nLet us consider another example of a type class defined in the\nstandard library, namely the type class of {lean}`Decidable`\npropositions. Roughly speaking, an element of {lean}`Prop` is said to be\ndecidable if we can decide whether it is true or false. The\ndistinction is only useful in constructive mathematics; classically,\nevery proposition is decidable. But if we use the classical principle,\nsay, to define a function by cases, that function will not be\ncomputable. Algorithmically speaking, the {lean}`Decidable` type class can\nbe used to infer a procedure that effectively determines whether or\nnot the proposition is true. As a result, the type class supports such\ncomputational definitions when they are possible while at the same\ntime allowing a smooth transition to the use of classical definitions\nand classical reasoning.\n\nIn the standard library, {lean}`Decidable` is defined formally as follows:\n\n```lean\nnamespace Hidden\n------\nclass inductive Decidable (p : Prop) where\n  | isFalse (h : ¬p) : Decidable p\n  | isTrue  (h : p)  : Decidable p\n------\nend Hidden\n```\n\n:::setup\n```\nvariable {p : Prop} (t : Decidable p) (t' : p ∨ ¬p) (a b : α)\n```\n\nLogically speaking, having an element {lean}`t : Decidable p` is stronger\nthan having an element {lean}`t' : p ∨ ¬p`; it enables us to define values\nof an arbitrary type depending on the truth value of {lean}`p`. For\nexample, for the expression {lean}`if p then a else b` to make sense, we\nneed to know that {lean}`p` is decidable. That expression is syntactic\nsugar for {lean}`ite p a b`, where {lean}`ite` is defined as follows:\n:::\n```lean\nnamespace Hidden\n------\ndef ite {α : Sort u}\n    (c : Prop) [h : Decidable c]\n    (t e : α) : α :=\n  h.casesOn (motive := fun _ => α) (fun _ => e) (fun _ => t)\n------\nend Hidden\n```\n\n:::leanFirst\nThe standard library also contains a variant of {leanRef}`ite` called\n{leanRef}`dite`, the dependent if-then-else expression. It is defined as\nfollows:\n\n```lean\nnamespace Hidden\n------\ndef dite {α : Sort u}\n    (c : Prop) [h : Decidable c]\n    (t : c → α) (e : Not c → α) : α :=\n  Decidable.casesOn (motive := fun _ => α) h e t\n------\nend Hidden\n```\n:::\n\n:::setup\n```\nvariable {c : Prop} [Decidable c] (t : c → α) (e : ¬c → α) (hc : c) (hnc : ¬c)\n```\n```lean (show := false)\nexample [Decidable c] (t e : α) : α := if h : c then t else e\n```\n\nThat is, in {lean}`dite c t e`, we can assume {lean}`hc : c` in the “then”\nbranch, and {lean}`hnc : ¬c` in the “else” branch. To make {lean}`dite` more\nconvenient to use, Lean allows us to write {leanRef}`if h : c then t else e`\ninstead of {lean}`dite c (fun h : c => t h) (fun h : ¬c => e h)`.\n:::\n\nWithout classical logic, we cannot prove that every proposition is\ndecidable. But we can prove that _certain_ propositions are\ndecidable. For example, we can prove the decidability of basic\noperations like equality and comparisons on the natural numbers and\nthe integers. Moreover, decidability is preserved under propositional\nconnectives:\n\n```lean\n#check @instDecidableAnd -- @instDecidableAnd : {p q : Prop} → [dp : Decidable p] → [dq : Decidable q] → Decidable (p ∧ q)\n\n#check @instDecidableOr\n#check @instDecidableNot\n```\n\nThus we can carry out definitions by cases on decidable predicates on\nthe natural numbers:\n\n```lean\ndef step (a b x : Nat) : Nat :=\n  if x < a ∨ x > b then 0 else 1\n\nset_option pp.explicit true\n#print step\n```\n\nTurning on implicit arguments shows that the elaborator has inferred\nthe decidability of the proposition {leanRef}`x < a ∨ x > b`, simply by\napplying appropriate instances.\n\nWith the classical axioms, we can prove that every proposition is\ndecidable. You can import the classical axioms and make the generic\ninstance of decidability available by opening the {lit}`Classical` namespace.\n\n```lean\nopen Classical\n```\n\n:::setup\n```\nopen Classical\nvariable {p : Prop}\n```\nThereafter {lean}`Decidable p` has an instance for every {leanRef}`p`.\nThus all theorems in the library\nthat rely on decidability assumptions are freely available when you\nwant to reason classically. In {ref \"axioms-and-computation\"}[Axioms and Computation],\nwe will see that using the law of the\nexcluded middle to define functions can prevent them from being used\ncomputationally. Thus, the standard library assigns a low priority to\nthe {lean}`propDecidable` instance.\n:::\n\n```lean\nnamespace Hidden\n------\nopen Classical\nnoncomputable scoped\ninstance (priority := low) propDecidable (a : Prop) : Decidable a :=\n  choice <| match em a with\n    | Or.inl h => ⟨isTrue h⟩\n    | Or.inr h => ⟨isFalse h⟩\n------\nend Hidden\n```\n\nThis guarantees that Lean will favor other instances and fall back on\n{leanRef}`propDecidable` only after other attempts to infer decidability have\nfailed.\n\nThe {lean}`Decidable` type class also provides a bit of small-scale\nautomation for proving theorems. The standard library introduces the\ntactic {tactic}`decide` that uses the {lean}`Decidable` instance to solve simple goals,\nas well as a function {name}`decide` that uses a {lean}`Decidable` instance to compute the\ncorresponding {lean}`Bool`.\n\n```lean\nexample : 10 < 5 ∨ 1 > 0 := by\n  decide\n\nexample : ¬(True ∧ False) := by\n  decide\n\nexample : 10 * 20 = 200 := by\n  decide\n\ntheorem ex : True ∧ 2 = 1 + 1 := by\n  decide\n\n#print ex\n\n#check @of_decide_eq_true -- @of_decide_eq_true : ∀ {p : Prop} [inst : Decidable p], decide p = true → p\n\n#check @decide -- decide : (p : Prop) → [h : Decidable p] → Bool\n```\n\n:::setup\n```\nvariable {p : Prop} [Decidable p]\n```\n\nThey work as follows. The expression {lean}`decide p` tries to infer a\ndecision procedure for {leanRef}`p`, and, if it is successful, evaluates to\neither {lean}`true` or {lean}`false`. In particular, if {leanRef}`p` is a true closed\nexpression, {leanRef}`decide p` will reduce definitionally to the Boolean {lean}`true`.\nOn the assumption that {lean}`decide p = true` holds, {lean}`of_decide_eq_true`\nproduces a proof of {lean}`p`. The tactic {tactic}`decide` puts it all together to\nprove a target {lean}`p`. By the previous observations,\n{tactic}`decide` will succeed any time the inferred decision procedure\n for {lean}`p` has enough information to evaluate, definitionally, to the {lean}`isTrue` case.\n:::\n\n# Managing Type Class Inference\n%%%\ntag := \"managing-type-class-inference\"\n%%%\n\nIf you are ever in a situation where you need to supply an expression\nthat Lean can infer by type class inference, you can ask Lean to carry\nout the inference using {name}`inferInstance`:\n\n```lean\ndef foo : Add Nat := inferInstance\ndef bar : Inhabited (Nat → Nat) := inferInstance\n\n#check @inferInstance -- @inferInstance : {α : Sort u_1} → [i : α] → α\n```\n\n:::setup\n```\nvariable (t : T)\n```\n\nIn fact, you can use Lean's {lean}`(t : T)` notation to specify the class whose instance you are looking for,\nin a concise manner:\n:::\n\n```lean\n#check (inferInstance : Add Nat)\n```\n\nYou can also use the auxiliary definition {lean}`inferInstanceAs`:\n\n```lean\n#check inferInstanceAs (Add Nat)\n\n#check @inferInstanceAs -- inferInstanceAs : (α : Sort u_1) → [i : α] → α\n```\n\n:::leanFirst\nSometimes Lean can't find an instance because the class is buried\nunder a definition. For example, Lean cannot\nfind an instance of {leanRef}`Inhabited (Set α)`. We can declare one\nexplicitly:\n\n```lean\ndef Set (α : Type u) := α → Prop\n\n/--\nerror: failed to synthesize\n  Inhabited (Set α)\n\nHint: Additional diagnostic information may be available using\nthe `set_option diagnostics true` command.\n-/\n#guard_msgs in\nexample : Inhabited (Set α) :=\n  inferInstance\n\ninstance : Inhabited (Set α) :=\n  inferInstanceAs (Inhabited (α → Prop))\n```\n:::\n\nAt times, you may find that the type class inference fails to find an\nexpected instance, or, worse, falls into an infinite loop and times\nout. To help debug in these situations, Lean enables you to request a\ntrace of the search:\n\n```lean\nset_option trace.Meta.synthInstance true\n```\n\nIf you are using VS Code, you can read the results by hovering over\nthe relevant theorem or definition, or opening the messages window\nwith {kbd}[`Ctrl` `Shift` `Enter`].\n\nYou can also limit the search using the following options:\n\n```lean\nset_option synthInstance.maxHeartbeats 10000\nset_option synthInstance.maxSize 400\n```\n\nOption {option}`synthInstance.maxHeartbeats` specifies the maximum amount of\nheartbeats per typeclass resolution problem. A heartbeat is the number of\n(small) memory allocations (in thousands), 0 means there is no limit.\nOption {option}`synthInstance.maxSize` is the maximum number of instances used\nto construct a solution in the type class instance synthesis procedure.\n\nRemember also that in both the VS Code and Emacs editor modes, tab\ncompletion works in {kw}`set_option`, to help you find suitable options.\n\nAs noted above, the type class instances in a given context represent\na Prolog-like program, which gives rise to a backtracking search. Both\nthe efficiency of the program and the solutions that are found can\ndepend on the order in which the system tries the instance. Instances\nwhich are declared last are tried first. Moreover, if instances are\ndeclared in other modules, the order in which they are tried depends\non the order in which namespaces are opened. Instances declared in\nnamespaces which are opened later are tried earlier.\n\nYou can change the order that type class instances are tried by\nassigning them a _priority_. When an instance is declared, it is\nassigned a default priority value. You can assign other priorities\nwhen defining an instance. The following example illustrates how this\nis done:\n\n```lean\nclass Foo where\n  a : Nat\n  b : Nat\n\ninstance (priority := default + 1) i1 : Foo where\n  a := 1\n  b := 1\n\ninstance i2 : Foo where\n  a := 2\n  b := 2\n\nexample : Foo.a = 1 :=\n  rfl\n\ninstance (priority := default + 2) i3 : Foo where\n  a := 3\n  b := 3\n\nexample : Foo.a = 3 :=\n  rfl\n```\n\n# Coercions using Type Classes\n%%%\ntag := \"coercions-using-type-classes\"\n%%%\n\n:::setup\n```\nvariable {n : Nat} {α : Type u} {as : List α}\ndef Set (α : Type u) := α → Prop\n\n```\n\nThe most basic type of coercion maps elements of one type to another. For example, a coercion from {lean}`Nat` to {lean}`Int` allows us to view any element {lean}`n : Nat` as an element of {lean}`Int`. But some coercions depend on parameters; for example, for any type {lean}`α`, we can view any element {lean}`as : List α` as an element of {lean}`Set α`, namely, the set of elements occurring in the list. The corresponding coercion is defined on the “family” of types {lean}`List α`, parameterized by {lean}`α`.\n:::\n\nLean allows us to declare three kinds of coercions:\n\n- from a family of types to another family of types\n- from a family of types to the class of sorts\n- from a family of types to the class of function types\n\nThe first kind of coercion allows us to view any element of a member of the source family as an element of a corresponding member of the target family. The second kind of coercion allows us to view any element of a member of the source family as a type. The third kind of coercion allows us to view any element of the source family as a function. Let us consider each of these in turn.\n\n:::setup\n```\nvariable {α : Type u} {β : Type v} [Coe α β]\n```\n\nIn Lean, coercions are implemented on top of the type class resolution framework. We define a coercion from {lean}`α` to {lean}`β` by declaring an instance of {lean}`Coe α β`. For example, we can define a coercion from {lean}`Bool` to {lean}`Prop` as follows:\n\n```lean\ninstance : Coe Bool Prop where\n  coe b := b = true\n```\n:::\n\nThis enables us to use boolean terms in {kw}`if`-{kw}`then`-{kw}`else` expressions:\n\n```lean\n#eval if true then 5 else 3\n\n#eval if false then 5 else 3\n```\n\n:::leanFirst\nWe can define a coercion from {leanRef}`List α` to {leanRef}`Set α` as follows:\n\n```lean\ndef Set (α : Type u) := α → Prop\ndef Set.empty {α : Type u} : Set α := fun _ => False\ndef Set.mem (a : α) (s : Set α) : Prop := s a\ndef Set.singleton (a : α) : Set α := fun x => x = a\ndef Set.union (a b : Set α) : Set α := fun x => a x ∨ b x\nnotation \"{ \" a \" }\" => Set.singleton a\ninfix:55 \" ∪ \" => Set.union\n------\ndef List.toSet : List α → Set α\n  | []    => Set.empty\n  | a::as => {a} ∪ as.toSet\n\ninstance : Coe (List α) (Set α) where\n  coe a := a.toSet\n\ndef s : Set Nat := {1}\n\n#check s ∪ [2, 3] -- s ∪ [2, 3].toSet : Set Nat\n```\n:::\n\nWe can use the notation {lit}`↑` to force a coercion to be introduced in a particular place. It is also helpful to make our intent clear, and work around limitations of the coercion resolution system.\n\n```lean\ndef Set (α : Type u) := α → Prop\ndef Set.empty {α : Type u} : Set α := fun _ => False\ndef Set.mem (a : α) (s : Set α) : Prop := s a\ndef Set.singleton (a : α) : Set α := fun x => x = a\ndef Set.union (a b : Set α) : Set α := fun x => a x ∨ b x\nnotation \"{ \" a \" }\" => Set.singleton a\ninfix:55 \" ∪ \" => Set.union\ndef List.toSet : List α → Set α\n  | []    => Set.empty\n  | a::as => {a} ∪ as.toSet\ninstance : Coe (List α) (Set α) where\n  coe a := a.toSet\n------\ndef s : Set Nat := {1}\n\n#check let x := ↑[2, 3]; s ∪ x -- let x := [2, 3].toSet; s ∪ x : Set Nat\n\n#check let x := [2, 3]; s ∪ x -- let x := [2, 3]; s ∪ x.toSet : Set Nat\n```\n\n\nLean also supports dependent coercions using the type class {lean}`CoeDep`. For example, we cannot coerce arbitrary propositions to {lean}`Bool`, only the ones that implement the {lean}`Decidable` typeclass.\n\n```lean\ninstance (p : Prop) [Decidable p] : CoeDep Prop p Bool where\n  coe := decide p\n```\n\nLean will also chain (non-dependent) coercions as necessary. Actually, the type class {lean}`CoeT` is the transitive closure of {lean}`Coe`.\n\nLet us now consider the second kind of coercion. By the _class of sorts_, we mean the collection of universes {lean}`Type u`. A coercion of the second kind is of the form:\n\n```\n    c : (x1 : A1) → ... → (xn : An) → F x1 ... xn → Type u\n```\n\nwhere {lit}`F` is a family of types as above. This allows us to write {lit}`s : t` whenever {lit}`t` is of type {lit}`F a₁ ... aₙ`. In other words, the coercion allows us to view the elements of {lit}`F a₁ ... aₙ` as types. This is very useful when defining algebraic structures in which one component, the carrier of the structure, is a {lean}`Type`. For example, we can define a semigroup as follows:\n\n```lean\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc (a b c : carrier) : mul (mul a b) c = mul a (mul b c)\n\ninstance (S : Semigroup) : Mul S.carrier where\n  mul a b := S.mul a b\n```\n\n:::setup\n\n```\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc (a b c : carrier) : mul (mul a b) c = mul a (mul b c)\n\ninstance (S : Semigroup) : Mul S.carrier where\n  mul a b := S.mul a b\n\nvariable {S : Semigroup} (a b : S.carrier)\n\ninstance : CoeSort Semigroup (Type u) where\n  coe s := s.carrier\nuniverse u\n```\nIn other words, a semigroup consists of a type, {leanRef}`carrier`, and a multiplication, {leanRef}`mul`, with the property that the multiplication is associative. The {kw}`instance` command allows us to write {lean}`a * b` instead of {lean}`Semigroup.mul S a b` whenever we have {lean}`a b : S.carrier`; notice that Lean can infer the argument {leanRef}`S` from the types of {leanRef}`a` and {leanRef}`b`. The function {lean}`Semigroup.carrier` maps the class {leanRef}`Semigroup` to the sort {leanRef}`Type u`:\n\n```lean\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc (a b c : carrier) : mul (mul a b) c = mul a (mul b c)\ninstance (S : Semigroup) : Mul S.carrier where\n  mul a b := S.mul a b\n------\n#check Semigroup.carrier -- Semigroup.carrier.{u} (self : Semigroup) : Type u\n```\n\nIf we declare this function to be a coercion, then whenever we have a semigroup {lean}`S : Semigroup`, we can write {lean}`a : S` instead of {lean}`a : S.carrier`:\n\n```lean\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc (a b c : carrier) : mul (mul a b) c = mul a (mul b c)\ninstance (S : Semigroup) : Mul S.carrier where\n  mul a b := S.mul a b\n------\ninstance : CoeSort Semigroup (Type u) where\n  coe s := s.carrier\n\nexample (S : Semigroup) (a b c : S) : (a * b) * c = a * (b * c) :=\n  Semigroup.mul_assoc _ a b c\n```\n\nIt is the coercion that makes it possible to write {leanRef}`(a b c : S)`. Note that, we define an instance of {leanRef}`CoeSort Semigroup (Type u)` instead of {lean}`Coe Semigroup (Type u)`.\n\n:::\n\n::::setup\n```\nvariable (B : Type u) (C : Type v)\n\n```\n\nBy the _class of function types_, we mean the collection of Pi types {lean}`(z : B) → C`. The third kind of coercion has the form:\n\n```\n    c : (x₁ : A₁) → ... → (xₙ : Aₙ) → (y : F x₁ ... xₙ) → (z : B) → C\n```\n\n:::leanFirst\nwhere {lit}`F` is again a family of types and {lit}`B` and {lit}`C` can depend on {lit}`x₁, ..., xₙ, y`. This makes it possible to write {lit}`t s` whenever {lit}`t` is an element of {lit}`F a₁ ... aₙ`. In other words, the coercion enables us to view elements of {lit}`F a₁ ... aₙ` as functions. Continuing the example above, we can define the notion of a morphism between semigroups {leanRef}`S1` and {leanRef}`S2`. That is, a function from the carrier of {leanRef}`S1` to the carrier of {leanRef}`S2` (note the implicit coercion) that respects the multiplication. The projection {leanRef}`Morphism.mor` takes a morphism to the underlying function:\n\n\n```lean\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc (a b c : carrier) : mul (mul a b) c = mul a (mul b c)\ninstance (S : Semigroup) : Mul S.carrier where\n  mul a b := S.mul a b\ninstance : CoeSort Semigroup (Type u) where\n  coe s := s.carrier\n------\nstructure Morphism (S1 S2 : Semigroup) where\n  mor : S1 → S2\n  resp_mul : ∀ a b : S1, mor (a * b) = (mor a) * (mor b)\n\n#check @Morphism.mor\n```\n:::\n\nAs a result, it is a prime candidate for the third type of coercion.\n::::\n\n```lean\nstructure Semigroup where\n  carrier : Type u\n  mul : carrier → carrier → carrier\n  mul_assoc (a b c : carrier) : mul (mul a b) c = mul a (mul b c)\ninstance (S : Semigroup) : Mul S.carrier where\n  mul a b := S.mul a b\ninstance : CoeSort Semigroup (Type u) where\n  coe s := s.carrier\nstructure Morphism (S1 S2 : Semigroup) where\n  mor : S1 → S2\n  resp_mul : ∀ a b : S1, mor (a * b) = (mor a) * (mor b)\n------\ninstance (S1 S2 : Semigroup) :\n    CoeFun (Morphism S1 S2) (fun _ => S1 → S2) where\n  coe m := m.mor\n\ntheorem resp_mul {S1 S2 : Semigroup} (f : Morphism S1 S2) (a b : S1)\n        : f (a * b) = f a * f b :=\n  f.resp_mul a b\n\nexample (S1 S2 : Semigroup) (f : Morphism S1 S2) (a : S1) :\n      f (a * a * a) = f a * f a * f a :=\n  calc f (a * a * a)\n    _ = f (a * a) * f a := by rw [resp_mul f]\n    _ = f a * f a * f a := by rw [resp_mul f]\n```\n\nWith the coercion in place, we can write {leanRef}`f (a * a * a)` instead of {leanRef}`f.mor (a * a * a)`. When the {leanRef}`Morphism`, {leanRef}`f`, is used where a function is expected, Lean inserts the coercion. Similar to {lean}`CoeSort`, we have yet another class {lean}`CoeFun` for this class of coercions. The parameter {lit}`γ` is used to specify the function type we are coercing to. This type may depend on the type we are coercing from.\n"
  },
  {
    "path": "book/TPiL.lean",
    "content": "import VersoManual\nimport TPiL.Intro\nimport TPiL.DependentTypeTheory\nimport TPiL.PropositionsAndProofs\nimport TPiL.QuantifiersEquality\nimport TPiL.Tactics\nimport TPiL.InteractingWithLean\nimport TPiL.InductiveTypes\nimport TPiL.InductionAndRecursion\nimport TPiL.StructuresAndRecords\nimport TPiL.TypeClasses\nimport TPiL.Conv\nimport TPiL.AxiomsComputation\n\nopen Verso.Genre Manual\nopen Verso Code External\n\nopen Verso Doc Elab in\nopen Lean (quote) in\n@[role_expander versionString]\ndef versionString : RoleExpander\n  | #[], #[] => do\n    let version ← IO.FS.readFile \"../examples/lean-toolchain\"\n    let version := version.dropPrefix \"leanprover/lean4:\" |>.dropPrefix \"v\" |>.trimAscii |>.copy\n    pure #[← ``(Verso.Doc.Inline.code $(quote version))]\n  | _, _ => throwError \"Unexpected arguments\"\n\n\n#doc (Manual) \"Theorem Proving in Lean 4\" =>\n\n%%%\nauthors := [\"Jeremy Avigad\", \"Leonardo de Moura\", \"Soonho Kong\", \"Sebastian Ullrich\"]\nauthorshipNote := some \"with contributions from the Lean Community\"\n%%%\n\n\nThis version of the text assumes you’re using Lean 4 (specifically {versionString}[]). See the\n[Quickstart section](https://lean-lang.org/documentation/setup/) of\nthe Lean documentation to install Lean. The first version of this book was\nwritten for Lean 2, and the Lean 3 version is available\n[here](https://leanprover.github.io/theorem_proving_in_lean/).\n\n{include 1 TPiL.Intro}\n\n{include 1 TPiL.DependentTypeTheory}\n\n{include 1 TPiL.PropositionsAndProofs}\n\n{include 1 TPiL.QuantifiersEquality}\n\n{include 1 TPiL.Tactics}\n\n{include 1 TPiL.InteractingWithLean}\n\n{include 1 TPiL.InductiveTypes}\n\n{include 1 TPiL.InductionAndRecursion}\n\n{include 1 TPiL.StructuresAndRecords}\n\n{include 1 TPiL.TypeClasses}\n\n{include 1 TPiL.Conv}\n\n{include 1 TPiL.AxiomsComputation}\n"
  },
  {
    "path": "book/lake-manifest.json",
    "content": "{\"version\": \"1.1.0\",\n \"packagesDir\": \".lake/packages\",\n \"packages\":\n [{\"url\": \"https://github.com/leanprover/verso.git\",\n   \"type\": \"git\",\n   \"subDir\": null,\n   \"scope\": \"\",\n   \"rev\": \"ea44a4d919a4570055bf53171ea4d8a8919cde84\",\n   \"name\": \"verso\",\n   \"manifestFile\": \"lake-manifest.json\",\n   \"inputRev\": \"main\",\n   \"inherited\": false,\n   \"configFile\": \"lakefile.lean\"},\n  {\"url\": \"https://github.com/leanprover-community/plausible\",\n   \"type\": \"git\",\n   \"subDir\": null,\n   \"scope\": \"\",\n   \"rev\": \"160af9e8e7d4ae448f3c92edcc5b6a8522453f11\",\n   \"name\": \"plausible\",\n   \"manifestFile\": \"lake-manifest.json\",\n   \"inputRev\": \"main\",\n   \"inherited\": true,\n   \"configFile\": \"lakefile.toml\"},\n  {\"url\": \"https://github.com/acmepjz/md4lean\",\n   \"type\": \"git\",\n   \"subDir\": null,\n   \"scope\": \"\",\n   \"rev\": \"38ac5945d744903ffcc473ce1030223991b11cf6\",\n   \"name\": \"MD4Lean\",\n   \"manifestFile\": \"lake-manifest.json\",\n   \"inputRev\": \"main\",\n   \"inherited\": true,\n   \"configFile\": \"lakefile.lean\"},\n  {\"url\": \"https://github.com/leanprover/subverso\",\n   \"type\": \"git\",\n   \"subDir\": null,\n   \"scope\": \"\",\n   \"rev\": \"eb77622e97e942ba2cfe02f60637705fc2d9481b\",\n   \"name\": \"subverso\",\n   \"manifestFile\": \"lake-manifest.json\",\n   \"inputRev\": \"main\",\n   \"inherited\": true,\n   \"configFile\": \"lakefile.lean\"}],\n \"name\": \"tpil\",\n \"lakeDir\": \".lake\"}\n"
  },
  {
    "path": "book/lakefile.toml",
    "content": "name = \"tpil\"\nversion = \"0.1.0\"\ndefaultTargets = [\"tpil\"]\n\n[[require]]\nname = \"verso\"\ngit = \"https://github.com/leanprover/verso.git\"\nrev = \"main\"\n\n\n[leanOptions]\n#weak.verso.examples.suggest = true\nweak.linter.typography.quotes = true\nweak.linter.typography.dashes = true\nweak.linter.verso.manual.headerTags = true\n\n[[lean_lib]]\nname = \"TPiL\"\n\n[[lean_exe]]\nname = \"tpil\"\nroot = \"Main\"\n"
  },
  {
    "path": "book/lean-toolchain",
    "content": "leanprover/lean4:v4.27.0-rc1\n"
  },
  {
    "path": "book/static/fonts/noto-sans-mono/OFL.txt",
    "content": "Copyright 2022 The Noto Project Authors (https://github.com/notofonts/latin-greek-cyrillic)\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\nThis license is copied below, and is also available with a FAQ at:\r\nhttps://openfontlicense.org\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded, \r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "book/static/fonts/noto-sans-mono/noto-sans-mono.css",
    "content": "@font-face {\n  font-family: 'Noto Sans Mono';\n  font-style: normal;\n  font-display: swap;\n  font-weight: 100 900;\n  src: url('./NotoSansMono-VariableFont_wdth,wght.ttf') format('truetype');\n  unicode-range: U+207a-207F, U+208a-208f, U+2090-209c;\n}\n\n@font-face {\n  font-family: 'Noto Sans Mono';\n  font-style: italic;\n  font-display: swap;\n  font-weight: 100 900;\n  src: url('./NotoSansMono-VariableFont_wdth,wght.ttf') format('truetype');\n  unicode-range: U+207a-207F, U+208a-208f, U+2090-209c;\n}"
  },
  {
    "path": "book/static/fonts/source-code-pro/LICENSE.md",
    "content": "© 2023 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.\r\n\r\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\r\n\r\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\r\n\r\n\r\n-----------------------------------------------------------\r\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\r\n-----------------------------------------------------------\r\n\r\nPREAMBLE\r\nThe goals of the Open Font License (OFL) are to stimulate worldwide\r\ndevelopment of collaborative font projects, to support the font creation\r\nefforts of academic and linguistic communities, and to provide a free and\r\nopen framework in which fonts may be shared and improved in partnership\r\nwith others.\r\n\r\nThe OFL allows the licensed fonts to be used, studied, modified and\r\nredistributed freely as long as they are not sold by themselves. The\r\nfonts, including any derivative works, can be bundled, embedded,\r\nredistributed and/or sold with any software provided that any reserved\r\nnames are not used by derivative works. The fonts and derivatives,\r\nhowever, cannot be released under any other type of license. The\r\nrequirement for fonts to remain under this license does not apply\r\nto any document created using the fonts or their derivatives.\r\n\r\nDEFINITIONS\r\n\"Font Software\" refers to the set of files released by the Copyright\r\nHolder(s) under this license and clearly marked as such. This may\r\ninclude source files, build scripts and documentation.\r\n\r\n\"Reserved Font Name\" refers to any names specified as such after the\r\ncopyright statement(s).\r\n\r\n\"Original Version\" refers to the collection of Font Software components as\r\ndistributed by the Copyright Holder(s).\r\n\r\n\"Modified Version\" refers to any derivative made by adding to, deleting,\r\nor substituting -- in part or in whole -- any of the components of the\r\nOriginal Version, by changing formats or by porting the Font Software to a\r\nnew environment.\r\n\r\n\"Author\" refers to any designer, engineer, programmer, technical\r\nwriter or other person who contributed to the Font Software.\r\n\r\nPERMISSION & CONDITIONS\r\nPermission is hereby granted, free of charge, to any person obtaining\r\na copy of the Font Software, to use, study, copy, merge, embed, modify,\r\nredistribute, and sell modified and unmodified copies of the Font\r\nSoftware, subject to the following conditions:\r\n\r\n1) Neither the Font Software nor any of its individual components,\r\nin Original or Modified Versions, may be sold by itself.\r\n\r\n2) Original or Modified Versions of the Font Software may be bundled,\r\nredistributed and/or sold with any software, provided that each copy\r\ncontains the above copyright notice and this license. These can be\r\nincluded either as stand-alone text files, human-readable headers or\r\nin the appropriate machine-readable metadata fields within text or\r\nbinary files as long as those fields can be easily viewed by the user.\r\n\r\n3) No Modified Version of the Font Software may use the Reserved Font\r\nName(s) unless explicit written permission is granted by the corresponding\r\nCopyright Holder. This restriction only applies to the primary font name as\r\npresented to the users.\r\n\r\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\r\nSoftware shall not be used to promote, endorse or advertise any\r\nModified Version, except to acknowledge the contribution(s) of the\r\nCopyright Holder(s) and the Author(s) or with their explicit written\r\npermission.\r\n\r\n5) The Font Software, modified or unmodified, in part or in whole,\r\nmust be distributed entirely under this license, and must not be\r\ndistributed under any other license. The requirement for fonts to\r\nremain under this license does not apply to any document created\r\nusing the Font Software.\r\n\r\nTERMINATION\r\nThis license becomes null and void if any of the above conditions are\r\nnot met.\r\n\r\nDISCLAIMER\r\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\r\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\r\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\r\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\r\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\r\nOTHER DEALINGS IN THE FONT SOFTWARE.\r\n"
  },
  {
    "path": "book/static/fonts/source-code-pro/source-code-pro.css",
    "content": "@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 200;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-ExtraLight.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-ExtraLight.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-ExtraLight.otf') format('opentype'),\n         url('./TTF/SourceCodePro-ExtraLight.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 200;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-ExtraLightIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-ExtraLightIt.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-ExtraLightIt.otf') format('opentype'),\n         url('./TTF/SourceCodePro-ExtraLightIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 300;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-Light.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-Light.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-Light.otf') format('opentype'),\n         url('./TTF/SourceCodePro-Light.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 300;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-LightIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-LightIt.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-LightIt.otf') format('opentype'),\n         url('./TTF/SourceCodePro-LightIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 400;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-Regular.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-Regular.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-Regular.otf') format('opentype'),\n         url('./TTF/SourceCodePro-Regular.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 400;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-It.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-It.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-It.otf') format('opentype'),\n         url('./TTF/SourceCodePro-It.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 500;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-Medium.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-Medium.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-Medium.otf') format('opentype'),\n         url('./TTF/SourceCodePro-Medium.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 500;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-MediumIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-MediumIt.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-MediumIt.otf') format('opentype'),\n         url('./TTF/SourceCodePro-MediumIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 600;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-Semibold.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-Semibold.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-Semibold.otf') format('opentype'),\n         url('./TTF/SourceCodePro-Semibold.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 600;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-SemiboldIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-SemiboldIt.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-SemiboldIt.otf') format('opentype'),\n         url('./TTF/SourceCodePro-SemiboldIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 700;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-Bold.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-Bold.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-Bold.otf') format('opentype'),\n         url('./TTF/SourceCodePro-Bold.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 700;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-BoldIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-BoldIt.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-BoldIt.otf') format('opentype'),\n         url('./TTF/SourceCodePro-BoldIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 900;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-Black.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-Black.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-Black.otf') format('opentype'),\n         url('./TTF/SourceCodePro-Black.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Code Pro';\n    font-weight: 900;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceCodePro-BlackIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceCodePro-BlackIt.otf.woff') format('woff'),\n         url('./OTF/SourceCodePro-BlackIt.otf') format('opentype'),\n         url('./TTF/SourceCodePro-BlackIt.ttf') format('truetype');\n}\n"
  },
  {
    "path": "book/static/fonts/source-sans/LICENSE.md",
    "content": "Copyright 2010-2024 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\n\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded, \nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "book/static/fonts/source-sans/source-sans-3.css",
    "content": "@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 200;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-ExtraLight.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-ExtraLight.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 200;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-ExtraLightIt.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-ExtraLightIt.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 300;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-Light.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-Light.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 300;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-LightIt.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-LightIt.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 400;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-Regular.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-Regular.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 400;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-It.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-It.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 600;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-Semibold.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-Semibold.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 600;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-SemiboldIt.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-SemiboldIt.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 700;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-Bold.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-Bold.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 700;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-BoldIt.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-BoldIt.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 900;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-Black.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-Black.otf.woff') format('woff');\n}\n\n@font-face{\n    font-family: 'Source Sans 3';\n    font-weight: 900;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/TTF/SourceSans3-BlackIt.ttf.woff2') format('woff2'),\n         url('WOFF/OTF/SourceSans3-BlackIt.otf.woff') format('woff');\n}\n"
  },
  {
    "path": "book/static/fonts/source-sans/source-sans-3VF.css",
    "content": "@font-face{\n    font-family: 'Source Sans 3 VF';\n    font-weight: 200 900;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('WOFF2/VF/SourceSans3VF-Upright.ttf.woff2') format('woff2-variations'),\n         url('WOFF/VF/SourceSans3VF-Upright.ttf.woff') format('woff-variations'),\n         url('VF/SourceSans3VF-Upright.ttf') format('truetype-variations');\n}\n\n@font-face{\n    font-family: 'Source Sans 3 VF';\n    font-weight: 200 900;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('WOFF2/VF/SourceSans3VF-Italic.ttf.woff2') format('woff2-variations'),\n         url('WOFF/VF/SourceSans3VF-Italic.ttf.woff') format('woff-variations'),\n         url('VF/SourceSans3VF-Italic.ttf') format('truetype-variations');\n}\n"
  },
  {
    "path": "book/static/fonts/source-serif/LICENSE.md",
    "content": "Copyright 2014 - 2023 Adobe (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries.\n\nThis Font Software is licensed under the SIL Open Font License, Version 1.1.\n\nThis license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL\n\n\n-----------------------------------------------------------\nSIL OPEN FONT LICENSE Version 1.1 - 26 February 2007\n-----------------------------------------------------------\n\nPREAMBLE\nThe goals of the Open Font License (OFL) are to stimulate worldwide\ndevelopment of collaborative font projects, to support the font creation\nefforts of academic and linguistic communities, and to provide a free and\nopen framework in which fonts may be shared and improved in partnership\nwith others.\n\nThe OFL allows the licensed fonts to be used, studied, modified and\nredistributed freely as long as they are not sold by themselves. The\nfonts, including any derivative works, can be bundled, embedded,\nredistributed and/or sold with any software provided that any reserved\nnames are not used by derivative works. The fonts and derivatives,\nhowever, cannot be released under any other type of license. The\nrequirement for fonts to remain under this license does not apply\nto any document created using the fonts or their derivatives.\n\nDEFINITIONS\n\"Font Software\" refers to the set of files released by the Copyright\nHolder(s) under this license and clearly marked as such. This may\ninclude source files, build scripts and documentation.\n\n\"Reserved Font Name\" refers to any names specified as such after the\ncopyright statement(s).\n\n\"Original Version\" refers to the collection of Font Software components as\ndistributed by the Copyright Holder(s).\n\n\"Modified Version\" refers to any derivative made by adding to, deleting,\nor substituting -- in part or in whole -- any of the components of the\nOriginal Version, by changing formats or by porting the Font Software to a\nnew environment.\n\n\"Author\" refers to any designer, engineer, programmer, technical\nwriter or other person who contributed to the Font Software.\n\nPERMISSION & CONDITIONS\nPermission is hereby granted, free of charge, to any person obtaining\na copy of the Font Software, to use, study, copy, merge, embed, modify,\nredistribute, and sell modified and unmodified copies of the Font\nSoftware, subject to the following conditions:\n\n1) Neither the Font Software nor any of its individual components,\nin Original or Modified Versions, may be sold by itself.\n\n2) Original or Modified Versions of the Font Software may be bundled,\nredistributed and/or sold with any software, provided that each copy\ncontains the above copyright notice and this license. These can be\nincluded either as stand-alone text files, human-readable headers or\nin the appropriate machine-readable metadata fields within text or\nbinary files as long as those fields can be easily viewed by the user.\n\n3) No Modified Version of the Font Software may use the Reserved Font\nName(s) unless explicit written permission is granted by the corresponding\nCopyright Holder. This restriction only applies to the primary font name as\npresented to the users.\n\n4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font\nSoftware shall not be used to promote, endorse or advertise any\nModified Version, except to acknowledge the contribution(s) of the\nCopyright Holder(s) and the Author(s) or with their explicit written\npermission.\n\n5) The Font Software, modified or unmodified, in part or in whole,\nmust be distributed entirely under this license, and must not be\ndistributed under any other license. The requirement for fonts to\nremain under this license does not apply to any document created\nusing the Font Software.\n\nTERMINATION\nThis license becomes null and void if any of the above conditions are\nnot met.\n\nDISCLAIMER\nTHE FONT SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT\nOF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE\nCOPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nINCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL\nDAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM\nOTHER DEALINGS IN THE FONT SOFTWARE.\n"
  },
  {
    "path": "book/static/fonts/source-serif/source-serif-text.css",
    "content": "@font-face{\n    font-family: 'Source Serif';\n    font-weight: 200;\n    font-display: swap;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-ExtraLight.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-ExtraLight.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-ExtraLight.otf') format('opentype'),\n         url('./TTF/SourceSerif4-ExtraLight.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 200;\n    font-display: swap;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-ExtraLightIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-ExtraLightIt.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-ExtraLightIt.otf') format('opentype'),\n         url('./TTF/SourceSerif4-ExtraLightIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 300;\n    font-display: swap;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-Light.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-Light.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-Light.otf') format('opentype'),\n         url('./TTF/SourceSerif4-Light.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 300;\n    font-display: swap;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-LightIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-LightIt.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-LightIt.otf') format('opentype'),\n         url('./TTF/SourceSerif4-LightIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 400;\n    font-display: swap;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-Regular.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-Regular.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-Regular.otf') format('opentype'),\n         url('./TTF/SourceSerif4-Regular.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 400;\n    font-display: swap;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-It.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-It.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-It.otf') format('opentype'),\n         url('./TTF/SourceSerif4-It.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 600;\n    font-display: swap;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-Semibold.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-Semibold.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-Semibold.otf') format('opentype'),\n         url('./TTF/SourceSerif4-Semibold.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 600;\n    font-display: swap;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-SemiboldIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-SemiboldIt.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-SemiboldIt.otf') format('opentype'),\n         url('./TTF/SourceSerif4-SemiboldIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 700;\n    font-display: swap;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-Bold.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-Bold.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-Bold.otf') format('opentype'),\n         url('./TTF/SourceSerif4-Bold.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 700;\n    font-display: swap;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-BoldIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-BoldIt.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-BoldIt.otf') format('opentype'),\n         url('./TTF/SourceSerif4-BoldIt.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 900;\n    font-display: swap;\n    font-style: normal;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-Black.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-Black.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-Black.otf') format('opentype'),\n         url('./TTF/SourceSerif4-Black.ttf') format('truetype');\n}\n\n@font-face{\n    font-family: 'Source Serif';\n    font-weight: 900;\n    font-display: swap;\n    font-style: italic;\n    font-stretch: normal;\n    src: url('./WOFF2/TTF/SourceSerif4-BlackIt.ttf.woff2') format('woff2'),\n         url('./WOFF/OTF/SourceSerif4-BlackIt.otf.woff') format('woff'),\n         url('./OTF/SourceSerif4-BlackIt.otf') format('opentype'),\n         url('./TTF/SourceSerif4-BlackIt.ttf') format('truetype');\n}\n"
  },
  {
    "path": "book/static/theme.css",
    "content": ":root {\n    --verso-structure-font-family: \"Source Sans 3\",\"Helvetica Neue\",\"Segoe UI\",\"Roboto\",Arial,sans-serif;\n    --verso-text-font-family: \"Source Sans 3\",\"Helvetica Neue\",\"Segoe UI\",\"Roboto\",Arial,sans-serif;\n    --verso-code-font-family: \"Source Code Pro\",\"Noto Sans Mono\",monospace;\n    --verso-selected-color: #def;\n}\n\n.eval-steps > *:not(:last-child):after {\n    content: \"⇒\";\n    display: block;\n    padding-left: 1rem;\n    font-size: 150%;\n}\n\n\n.hl.lean .keyword.token {\n    font-weight: 600 !important;\n}\n\n\n.error pre, .information pre, .warning pre,\n.error code, .information code, .warning code {\n    overflow-x: auto;\n    margin: 0px;\n}\n\n.information pre, .error pre, .warning pre,\n.information code, .error code, .warning code {\n  margin: 0.5em .85em;\n  border-left: 0.2em solid red;\n  padding: 0 0.45em;\n}\n\n/* Different color for warning */\n.warning pre, .warning code {\n    border-color: var(--verso-warning-color);\n}\n\n/* Different color for information */\n.information pre, .information code {\n    border-color: #0000c0;\n}\n\n/* TODO: fix upstream */\n.hl.lean code {\n    font-family: var(--verso-code-font-family) !important;\n}\n\n\n#toc .split-toc > ol > li {\n  margin-bottom: 0.2rem;\n}\n\n#toc .split-toc > ol .tactic-name {\n  font-weight: 600;\n}\n\n.def-technical-term:target {\n  background-color: var(--verso-selected-color);\n  outline: auto;\n}\n\ntable.tabular {\n  border-collapse: collapse;\n}\n\n.tabular thead th {\n  background-color: #f8f9fa;\n  font-weight: 600;\n  text-align: left;\n  padding: 12px 16px;\n  border-bottom: 2px solid #dee2e6;\n  color: #495057;\n}\n\n.tabular td {\n  padding: 10px 16px;\n  border-bottom: 1px solid #e9ecef;\n  vertical-align: top;\n}\n\n\n/* Alternating row colors */\n.tabular tbody tr:nth-child(even) {\n  background-color: #f8f9fa;\n}\n\n.tabular tbody tr:nth-child(odd) {\n  background-color: #ffffff;\n}\n\n/* Subtle hover effect */\n.tabular tbody tr:hover {\n  background-color: #e3f2fd;\n}\n\n\n/********/\n\np {\n    font-feature-settings: \"calt\" off;\n}\n"
  },
  {
    "path": "book/verso-sources.json",
    "content": "{\n    \"version\": 0,\n    \"sources\": {\n        \"manual\": {\n            \"root\": \"https://lean-lang.org/doc/reference/4.26.0/\",\n            \"updateFrequency\": \"manual\",\n            \"shortName\": \"ref\",\n            \"longName\": \"Lean Language Reference\"\n        }\n    }\n}\n"
  },
  {
    "path": "examples/.gitignore",
    "content": "/.lake\nExamples/*.json\nExamples/*.lean\n"
  },
  {
    "path": "examples/Examples/Basic.lean",
    "content": "def hello := \"world\"\n"
  },
  {
    "path": "examples/Examples.lean",
    "content": "-- This module serves as the root of the `Examples` library.\n-- Import modules here that should be built as part of the library.\nimport Examples.Basic\n\n\nexample (g : Nat → Nat → Nat)\n        (h₁ : ∀ x, x ≠ 0 → g x x = 1)\n        (h₂ : x ≠ 0)\n        : g x x + x = 1 + x := by\n  conv =>\n    lhs\n    -- ⊢ g x x + x\n    arg 1\n    -- ⊢ g x x\n    rw [h₁]\n    -- 2 goals: ⊢ 1, ⊢ x ≠ 0\n    . skip\n    . tactic =>\n      exact h₂\n"
  },
  {
    "path": "examples/lake-manifest.json",
    "content": "{\"version\": \"1.1.0\",\n \"packagesDir\": \".lake/packages\",\n \"packages\":\n [{\"url\": \"https://github.com/leanprover/subverso.git\",\n   \"type\": \"git\",\n   \"subDir\": null,\n   \"scope\": \"\",\n   \"rev\": \"eb77622e97e942ba2cfe02f60637705fc2d9481b\",\n   \"name\": \"subverso\",\n   \"manifestFile\": \"lake-manifest.json\",\n   \"inputRev\": \"main\",\n   \"inherited\": false,\n   \"configFile\": \"lakefile.lean\"}],\n \"name\": \"«tpil-examples»\",\n \"lakeDir\": \".lake\"}\n"
  },
  {
    "path": "examples/lakefile.toml",
    "content": "name = \"tpil-examples\"\nversion = \"0.1.0\"\ndefaultTargets = [\"Examples\"]\n\n[[require]]\nname = \"subverso\"\ngit = \"https://github.com/leanprover/subverso.git\"\nrev = \"main\"\n\n[[lean_lib]]\nname = \"Examples\"\n"
  },
  {
    "path": "examples/lean-toolchain",
    "content": "leanprover/lean4:v4.26.0\n"
  },
  {
    "path": "unixode.sty",
    "content": "% ------------------------------------------------------------------------------\n% (C) 2012-2013 Olivier Verdier <olivier.verdier@gmail.com>\n% Unixode Package\n% XeTeX Unicode character definitions\n% ------------------------------------------------------------------------------\n\\NeedsTeXFormat{LaTeX2e}\n\\ProvidesPackage{unixode}[2012/05/10]\n\n\\RequirePackage{ifxetex}\n\n\\ifxetex\n%\\RequirePackage{mathspec}\n%\\RequirePackage{fontspec}\n\\defaultfontfeatures{Ligatures=TeX}\n\\usepackage{newunicodechar}\n\\newunicodechar{α}{\\ensuremath{\\mathrm{\\alpha}}}\n\\newunicodechar{β}{\\ensuremath{\\mathrm{\\beta}}}\n\\newunicodechar{γ}{\\ensuremath{\\mathrm{\\gamma}}}\n\\newunicodechar{δ}{\\ensuremath{\\mathrm{\\delta}}}\n\\newunicodechar{ε}{\\ensuremath{\\mathrm{\\varepsilon}}}\n\\newunicodechar{ζ}{\\ensuremath{\\mathrm{\\zeta}}}\n\\newunicodechar{η}{\\ensuremath{\\mathrm{\\eta}}}\n\\newunicodechar{θ}{\\ensuremath{\\mathrm{\\theta}}}\n\\newunicodechar{ι}{\\ensuremath{\\mathrm{\\iota}}}\n\\newunicodechar{κ}{\\ensuremath{\\mathrm{\\kappa}}}\n\\newunicodechar{λ}{\\ensuremath{\\mathrm{\\lambda}}}\n\\newunicodechar{μ}{\\ensuremath{\\mathrm{\\mu}}}\n\\newunicodechar{ν}{\\ensuremath{\\mathrm{\\nu}}}\n\\newunicodechar{ξ}{\\ensuremath{\\mathrm{\\xi}}}\n\\newunicodechar{π}{\\ensuremath{\\mathrm{\\mathnormal{\\pi}}}}\n\\newunicodechar{ρ}{\\ensuremath{\\mathrm{\\rho}}}\n\\newunicodechar{σ}{\\ensuremath{\\mathrm{\\sigma}}}\n\\newunicodechar{τ}{\\ensuremath{\\mathrm{\\tau}}}\n\\newunicodechar{φ}{\\ensuremath{\\mathrm{\\varphi}}}\n\\newunicodechar{χ}{\\ensuremath{\\mathrm{\\chi}}}\n\\newunicodechar{ψ}{\\ensuremath{\\mathrm{\\psi}}}\n\\newunicodechar{ω}{\\ensuremath{\\mathrm{\\omega}}}\n\n\\newunicodechar{Γ}{\\ensuremath{\\mathrm{\\Gamma}}}\n\\newunicodechar{Δ}{\\ensuremath{\\mathrm{\\Delta}}}\n\\newunicodechar{Θ}{\\ensuremath{\\mathrm{\\Theta}}}\n\\newunicodechar{Λ}{\\ensuremath{\\mathrm{\\Lambda}}}\n\\newunicodechar{Σ}{\\ensuremath{\\Sigma}}\n\\newunicodechar{Φ}{\\ensuremath{\\mathrm{\\Phi}}}\n\\newunicodechar{Ξ}{\\ensuremath{\\mathrm{\\Xi}}}\n\\newunicodechar{Ψ}{\\ensuremath{\\mathrm{\\Psi}}}\n\\newunicodechar{Ω}{\\ensuremath{\\mathrm{\\Omega}}}\n\n\\newunicodechar{ℵ}{\\ensuremath{\\aleph}}\n\n\\newunicodechar{≤}{\\ensuremath{\\leq}}\n\\newunicodechar{≥}{\\ensuremath{\\geq}}\n\\newunicodechar{≠}{\\ensuremath{\\neq}}\n\\newunicodechar{≈}{\\ensuremath{\\approx}}\n\\newunicodechar{≡}{\\ensuremath{\\equiv}}\n\\newunicodechar{≃}{\\ensuremath{\\simeq}}\n\\newunicodechar{≺}{\\ensuremath{\\prec}}\n\\newunicodechar{≼}{\\ensuremath{\\preceq}}\n\n\\newunicodechar{≤}{\\ensuremath{\\leq}}\n\\newunicodechar{≥}{\\ensuremath{\\geq}}\n\n\\newunicodechar{∂}{\\ensuremath{\\partial}}\n\\newunicodechar{∆}{\\ensuremath{\\triangle}} % or \\laplace?\n\n\\newunicodechar{∫}{\\ensuremath{\\int}}\n\\newunicodechar{∑}{\\ensuremath{\\mathrm{\\Sigma}}}\n\\newunicodechar{Π}{\\ensuremath{\\Pi}}\n\n\\newunicodechar{⊥}{\\ensuremath{\\perp}}\n\\newunicodechar{∞}{\\ensuremath{\\infty}}\n\\newunicodechar{∂}{\\ensuremath{\\partial}}\n\n\\newunicodechar{∓}{\\ensuremath{\\mp}}\n\\newunicodechar{±}{\\ensuremath{\\pm}}\n\\newunicodechar{×}{\\ensuremath{\\times}}\n\n\\newunicodechar{⊕}{\\ensuremath{\\oplus}}\n\\newunicodechar{⊗}{\\ensuremath{\\otimes}}\n\\newunicodechar{⊞}{\\ensuremath{\\boxplus}}\n\n\\newunicodechar{∇}{\\ensuremath{\\nabla}}\n\\newunicodechar{√}{\\ensuremath{\\sqrt}}\n\n\\newunicodechar{⬝}{\\ensuremath{\\cdot}}\n\\newunicodechar{•}{\\ensuremath{\\cdot}}\n\\newunicodechar{∘}{\\ensuremath{\\circ}}\n\n\\newunicodechar{⁻}{\\ensuremath{^{\\textup{\\kern1pt\\rule{2pt}{0.3pt}\\kern-1pt}}}}\n\\newunicodechar{▸}{\\ensuremath{\\blacktriangleright}}\n\n\\newunicodechar{∧}{\\ensuremath{\\wedge}}\n\\newunicodechar{∨}{\\ensuremath{\\vee}}\n\\newunicodechar{¬}{\\ensuremath{\\neg}}\n\\newunicodechar{⊢}{\\ensuremath{\\vdash}}\n\n%\\newunicodechar{⟨}{\\ensuremath{\\left\\langle}}\n%\\newunicodechar{⟩}{\\ensuremath{\\right\\rangle}}\n\\newunicodechar{⟨}{\\ensuremath{\\langle}}\n\\newunicodechar{⟩}{\\ensuremath{\\rangle}}\n\n\\newunicodechar{∀}{\\ensuremath{\\forall}}\n\\newunicodechar{∃}{\\ensuremath{\\exists}}\n\n\\newunicodechar{↦}{\\ensuremath{\\mapsto}}\n\\newunicodechar{→}{\\ensuremath{\\rightarrow}}\n\\newunicodechar{↔}{\\ensuremath{\\leftrightarrow}}\n\\newunicodechar{⇒}{\\ensuremath{\\Rightarrow}}\n\\newunicodechar{⟹}{\\ensuremath{\\Longrightarrow}}\n\\newunicodechar{⇐}{\\ensuremath{\\Leftarrow}}\n\\newunicodechar{⟸}{\\ensuremath{\\Longleftarrow}}\n\n\\newunicodechar{∩}{\\ensuremath{\\cap}}\n\\newunicodechar{∪}{\\ensuremath{\\cup}}\n\\newunicodechar{⊂}{\\ensuremath{\\subseteq}}\n\\newunicodechar{⊆}{\\ensuremath{\\subseteq}}\n\\newunicodechar{⊄}{\\ensuremath{\\nsubseteq}}\n\\newunicodechar{⊈}{\\ensuremath{\\nsubseteq}}\n\\newunicodechar{⊃}{\\ensuremath{\\supseteq}}\n\\newunicodechar{⊇}{\\ensuremath{\\supseteq}}\n\\newunicodechar{⊅}{\\ensuremath{\\nsupseteq}}\n\\newunicodechar{⊉}{\\ensuremath{\\nsupseteq}}\n\\newunicodechar{∈}{\\ensuremath{\\in}}\n\\newunicodechar{∉}{\\ensuremath{\\notin}}\n\\newunicodechar{∋}{\\ensuremath{\\ni}}\n\\newunicodechar{∌}{\\ensuremath{\\notni}}\n\\newunicodechar{∅}{\\ensuremath{\\emptyset}}\n\n\\newunicodechar{∖}{\\ensuremath{\\setminus}}\n\\newunicodechar{†}{\\ensuremath{\\dag}}\n\n\\newunicodechar{ℕ}{\\ensuremath{\\mathbb{N}}}\n\\newunicodechar{ℤ}{\\ensuremath{\\mathbb{Z}}}\n\\newunicodechar{ℝ}{\\ensuremath{\\mathbb{R}}}\n\\newunicodechar{ℚ}{\\ensuremath{\\mathbb{Q}}}\n\\newunicodechar{ℂ}{\\ensuremath{\\mathbb{C}}}\n\\newunicodechar{⌞}{\\ensuremath{\\llcorner}}\n\\newunicodechar{⌟}{\\ensuremath{\\lrcorner}}\n\\newunicodechar{⦃}{\\ensuremath{\\{\\!|}}\n\\newunicodechar{⦄}{\\ensuremath{|\\!\\}}}\n\\newunicodechar{∣}{\\ensuremath{\\mid}}\n\\newunicodechar{∥}{\\ensuremath{\\parallel}}\n\n\\newunicodechar{₁}{\\ensuremath{_1}}\n\\newunicodechar{₂}{\\ensuremath{_2}}\n\\newunicodechar{₃}{\\ensuremath{_3}}\n\\newunicodechar{₄}{\\ensuremath{_4}}\n\\newunicodechar{₅}{\\ensuremath{_5}}\n\\newunicodechar{₆}{\\ensuremath{_6}}\n\\newunicodechar{₇}{\\ensuremath{_7}}\n\\newunicodechar{₈}{\\ensuremath{_8}}\n\\newunicodechar{₉}{\\ensuremath{_9}}\n\\newunicodechar{₀}{\\ensuremath{_0}}\n\\newunicodechar{ᵢ}{\\ensuremath{_i}}\n\\newunicodechar{ⱼ}{\\ensuremath{_j}}\n\\newunicodechar{ₘ}{\\ensuremath{_m}}\n\\newunicodechar{ₙ}{\\ensuremath{_n}}\n\\newunicodechar{ᵤ}{\\ensuremath{_u}}\n\\newunicodechar{↑}{\\ensuremath{\\uparrow}}\n\\newunicodechar{↓}{\\ensuremath{\\downarrow}}\n\\else\n\\usepackage[utf8x]{inputenc}\n\\SetUnicodeOption{mathletters}\n\\DeclareUnicodeCharacter{952}{\\ensuremath{\\theta}}\n\\fi\n"
  }
]