diff --git a/book/.verso/verso-xref-manifest.json b/book/.verso/verso-xref-manifest.json index 2b9e9de..d927854 100644 --- a/book/.verso/verso-xref-manifest.json +++ b/book/.verso/verso-xref-manifest.json @@ -3,6 +3,6 @@ {"manual": {"updateFrequency": "manual", "shortName": "ref", - "root": "https://lean-lang.org/doc/reference/4.19.0/", + "root": "https://lean-lang.org/doc/reference/4.23.0/", "longName": "Lean Language Reference"}}, "outputDir": ".verso"} \ No newline at end of file diff --git a/book/.verso/verso-xref.json b/book/.verso/verso-xref.json index 533d18a..d463b54 100644 --- a/book/.verso/verso-xref.json +++ b/book/.verso/verso-xref.json @@ -112,12 +112,12 @@ "data": {"title": "Extending Lean's Output", "shortTitle": null, - "sectionNum": "19.7.", + "sectionNum": "20.7.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Extending Lean's Output", "shortTitle": null, "number": "7"}]}, @@ -142,12 +142,12 @@ "data": {"title": "Helpers for Typed Syntax", "shortTitle": null, - "sectionNum": "19.4.9.", + "sectionNum": "20.4.9.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Helpers for Typed Syntax", "shortTitle": null, @@ -158,12 +158,12 @@ "data": {"title": "Typed Syntax", "shortTitle": null, - "sectionNum": "19.4.7.", + "sectionNum": "20.4.7.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Typed Syntax", "shortTitle": null, "number": "7"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], @@ -196,12 +196,12 @@ "data": {"title": "Tuples", "shortTitle": null, - "sectionNum": "18.13.", + "sectionNum": "19.13.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Tuples", "shortTitle": null, "number": "13"}]}, "address": "/Basic-Types/Tuples/"}], "true-false": @@ -209,12 +209,12 @@ "data": {"title": "Truth", "shortTitle": null, - "sectionNum": "17.1.", + "sectionNum": "18.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Propositions", "shortTitle": null, "number": "17"}, + {"title": "Basic Propositions", "shortTitle": null, "number": "18"}, {"title": "Truth", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Propositions/Truth/"}], "totality": @@ -238,12 +238,12 @@ "data": {"title": "Token Antiquotations", "shortTitle": null, - "sectionNum": "19.5.3.3.", + "sectionNum": "20.5.3.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Quotation", "shortTitle": null, "number": "3"}, {"title": "Token Antiquotations", @@ -267,14 +267,14 @@ "data": {"title": "Test and Lint Drivers", "shortTitle": null, - "sectionNum": "21.1.1.4.", + "sectionNum": "22.1.1.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Concepts and Terminology", "shortTitle": null, @@ -345,7 +345,7 @@ "data": {"title": "Term Elaboration Backends", "shortTitle": null, - "sectionNum": "13.5.19.", + "sectionNum": "13.5.20.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, @@ -354,35 +354,54 @@ {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, {"title": "Term Elaboration Backends", "shortTitle": null, - "number": "19"}]}, + "number": "20"}]}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "tactic-ref-spred": + [{"id": "tactic-ref-spred", + "data": + {"title": "Tactics for Stateful Goals in Std.Do.SPred", + "shortTitle": null, + "sectionNum": "13.5.23.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, + {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, + {"title": "Verification Condition Generation", + "shortTitle": null, + "number": "23"}, + {"title": "Tactics for Stateful Goals in Std.Do.SPred", + "shortTitle": null, + "number": "1"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-search": [{"id": "tactic-ref-search", "data": {"title": "Library Search", "shortTitle": null, - "sectionNum": "13.5.14.", + "sectionNum": "13.5.15.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Library Search", "shortTitle": null, "number": "14"}]}, + {"title": "Library Search", "shortTitle": null, "number": "15"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-sat": [{"id": "tactic-ref-sat", "data": {"title": "SAT Solver Integration", "shortTitle": null, - "sectionNum": "13.5.16.1.", + "sectionNum": "13.5.17.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Decision Procedures", "shortTitle": null, "number": "16"}, + {"title": "Decision Procedures", "shortTitle": null, "number": "17"}, {"title": "SAT Solver Integration", "shortTitle": null, "number": "1"}]}, @@ -392,14 +411,14 @@ "data": {"title": "Rewriting", "shortTitle": null, - "sectionNum": "13.5.12.", + "sectionNum": "13.5.13.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Rewriting", "shortTitle": null, "number": "12"}]}, + {"title": "Rewriting", "shortTitle": null, "number": "13"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-relations": [{"id": "tactic-ref-relations", @@ -434,14 +453,30 @@ "data": {"title": "Other", "shortTitle": null, - "sectionNum": "13.5.21.", + "sectionNum": "13.5.22.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, + {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, + {"title": "Other", "shortTitle": null, "number": "22"}]}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "tactic-ref-mvcgen": + [{"id": "tactic-ref-mvcgen", + "data": + {"title": "Verification Condition Generation", + "shortTitle": null, + "sectionNum": "13.5.23.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Other", "shortTitle": null, "number": "21"}]}, + {"title": "Verification Condition Generation", + "shortTitle": null, + "number": "23"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-lemmas": [{"id": "tactic-ref-lemmas", @@ -462,14 +497,14 @@ "data": {"title": "Introduction", "shortTitle": null, - "sectionNum": "13.5.13.1.", + "sectionNum": "13.5.14.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Inductive Types", "shortTitle": null, "number": "13"}, + {"title": "Inductive Types", "shortTitle": null, "number": "14"}, {"title": "Introduction", "shortTitle": null, "number": "1"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-inductive-elim": @@ -477,14 +512,14 @@ "data": {"title": "Elimination", "shortTitle": null, - "sectionNum": "13.5.13.2.", + "sectionNum": "13.5.14.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Inductive Types", "shortTitle": null, "number": "13"}, + {"title": "Inductive Types", "shortTitle": null, "number": "14"}, {"title": "Elimination", "shortTitle": null, "number": "2"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-inductive": @@ -492,14 +527,14 @@ "data": {"title": "Inductive Types", "shortTitle": null, - "sectionNum": "13.5.13.", + "sectionNum": "13.5.14.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Inductive Types", "shortTitle": null, "number": "13"}]}, + {"title": "Inductive Types", "shortTitle": null, "number": "14"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-goals": [{"id": "tactic-ref-goals", @@ -563,7 +598,7 @@ "data": {"title": "Decision Procedures", "shortTitle": null, - "sectionNum": "13.5.16.", + "sectionNum": "13.5.17.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, @@ -572,14 +607,14 @@ {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, {"title": "Decision Procedures", "shortTitle": null, - "number": "16"}]}, + "number": "17"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-debug": [{"id": "tactic-ref-debug", "data": {"title": "Debugging Utilities", "shortTitle": null, - "sectionNum": "13.5.20.", + "sectionNum": "13.5.21.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, @@ -588,21 +623,21 @@ {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, {"title": "Debugging Utilities", "shortTitle": null, - "number": "20"}]}, + "number": "21"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-control": [{"id": "tactic-ref-control", "data": {"title": "Control Flow", "shortTitle": null, - "sectionNum": "13.5.18.", + "sectionNum": "13.5.19.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Control Flow", "shortTitle": null, "number": "18"}]}, + {"title": "Control Flow", "shortTitle": null, "number": "19"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-classical": [{"id": "tactic-ref-classical", @@ -637,14 +672,14 @@ "data": {"title": "Case Analysis", "shortTitle": null, - "sectionNum": "13.5.15.", + "sectionNum": "13.5.16.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Case Analysis", "shortTitle": null, "number": "15"}]}, + {"title": "Case Analysis", "shortTitle": null, "number": "16"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-ref-assumptions": [{"id": "tactic-ref-assumptions", @@ -694,7 +729,7 @@ "data": {"title": "Controlling Reduction", "shortTitle": null, - "sectionNum": "13.5.17.", + "sectionNum": "13.5.18.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, @@ -703,7 +738,7 @@ {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, {"title": "Controlling Reduction", "shortTitle": null, - "number": "17"}]}, + "number": "18"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "tactic-macros": [{"id": "tactic-macros", @@ -1004,12 +1039,12 @@ "data": {"title": "Syntax Rules", "shortTitle": null, - "sectionNum": "19.4.11.", + "sectionNum": "20.4.11.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Syntax Rules", "shortTitle": null, "number": "11"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], @@ -1018,12 +1053,12 @@ "data": {"title": "Indentation", "shortTitle": null, - "sectionNum": "19.4.12.", + "sectionNum": "20.4.12.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Indentation", "shortTitle": null, "number": "12"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], @@ -1032,12 +1067,12 @@ "data": {"title": "Defining New Syntax", "shortTitle": null, - "sectionNum": "19.4.", + "sectionNum": "20.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], "syntax-data": @@ -1045,12 +1080,12 @@ "data": {"title": "Syntax Model", "shortTitle": null, - "sectionNum": "19.4.1.", + "sectionNum": "20.4.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Syntax Model", "shortTitle": null, "number": "1"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], @@ -1059,12 +1094,12 @@ "data": {"title": "Syntax Categories", "shortTitle": null, - "sectionNum": "19.4.10.", + "sectionNum": "20.4.10.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Syntax Categories", "shortTitle": null, "number": "10"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], @@ -1073,12 +1108,12 @@ "data": {"title": "Sum Types", "shortTitle": null, - "sectionNum": "18.14.", + "sectionNum": "19.14.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Sum Types", "shortTitle": null, "number": "14"}]}, "address": "/Basic-Types/Sum-Types/"}], "sum-syntax": @@ -1086,12 +1121,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.14.1.", + "sectionNum": "19.14.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Sum Types", "shortTitle": null, "number": "14"}, {"title": "Syntax", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Sum-Types/"}], @@ -1100,12 +1135,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.14.2.", + "sectionNum": "19.14.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Sum Types", "shortTitle": null, "number": "14"}, {"title": "API Reference", "shortTitle": null, "number": "2"}]}, "address": "/Basic-Types/Sum-Types/"}], @@ -1133,12 +1168,12 @@ "data": {"title": "Sub-Arrays", "shortTitle": null, - "sectionNum": "18.16.5.", + "sectionNum": "19.16.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}, {"title": "Sub-Arrays", "shortTitle": null, "number": "5"}]}, "address": "/Basic-Types/Arrays/"}], @@ -1253,12 +1288,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.8.3.", + "sectionNum": "19.8.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "Syntax", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Strings/"}], @@ -1267,12 +1302,12 @@ "data": {"title": "Run-Time Representation", "shortTitle": null, - "sectionNum": "18.8.2.", + "sectionNum": "19.8.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -1283,12 +1318,12 @@ "data": {"title": "Performance Notes", "shortTitle": null, - "sectionNum": "18.8.2.1.", + "sectionNum": "19.8.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -1300,12 +1335,12 @@ "data": {"title": "String Literals", "shortTitle": null, - "sectionNum": "18.8.3.1.", + "sectionNum": "19.8.3.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "Syntax", "shortTitle": null, "number": "3"}, {"title": "String Literals", "shortTitle": null, "number": "1"}]}, @@ -1315,12 +1350,12 @@ "data": {"title": "Iterators", "shortTitle": null, - "sectionNum": "18.8.4.9.", + "sectionNum": "19.8.4.9.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Iterators", "shortTitle": null, "number": "9"}]}, @@ -1330,12 +1365,12 @@ "data": {"title": "Interpolated Strings", "shortTitle": null, - "sectionNum": "18.8.3.2.", + "sectionNum": "19.8.3.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "Syntax", "shortTitle": null, "number": "3"}, {"title": "Interpolated Strings", @@ -1347,12 +1382,12 @@ "data": {"title": "FFI", "shortTitle": null, - "sectionNum": "18.8.5.", + "sectionNum": "19.8.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "FFI", "shortTitle": null, "number": "5"}]}, "address": "/Basic-Types/Strings/"}], @@ -1361,12 +1396,12 @@ "data": {"title": "Substrings", "shortTitle": null, - "sectionNum": "18.8.4.10.", + "sectionNum": "19.8.4.10.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Substrings", "shortTitle": null, "number": "10"}]}, @@ -1376,12 +1411,12 @@ "data": {"title": "Properties", "shortTitle": null, - "sectionNum": "18.8.4.3.", + "sectionNum": "19.8.4.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Properties", "shortTitle": null, "number": "3"}]}, @@ -1391,12 +1426,12 @@ "data": {"title": "Positions", "shortTitle": null, - "sectionNum": "18.8.4.4.", + "sectionNum": "19.8.4.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Positions", "shortTitle": null, "number": "4"}]}, @@ -1406,12 +1441,12 @@ "data": {"title": "Manipulation", "shortTitle": null, - "sectionNum": "18.8.4.8.", + "sectionNum": "19.8.4.8.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Manipulation", "shortTitle": null, "number": "8"}]}, @@ -1421,12 +1456,12 @@ "data": {"title": "Metaprogramming", "shortTitle": null, - "sectionNum": "18.8.4.11.", + "sectionNum": "19.8.4.11.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Metaprogramming", "shortTitle": null, "number": "11"}]}, @@ -1436,12 +1471,12 @@ "data": {"title": "Lookups and Modifications", "shortTitle": null, - "sectionNum": "18.8.4.5.", + "sectionNum": "19.8.4.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Lookups and Modifications", @@ -1453,12 +1488,12 @@ "data": {"title": "Folds and Aggregation", "shortTitle": null, - "sectionNum": "18.8.4.6.", + "sectionNum": "19.8.4.6.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Folds and Aggregation", @@ -1470,12 +1505,12 @@ "data": {"title": "Encodings", "shortTitle": null, - "sectionNum": "18.8.4.12.", + "sectionNum": "19.8.4.12.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Encodings", "shortTitle": null, "number": "12"}]}, @@ -1485,12 +1520,12 @@ "data": {"title": "Conversions", "shortTitle": null, - "sectionNum": "18.8.4.2.", + "sectionNum": "19.8.4.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Conversions", "shortTitle": null, "number": "2"}]}, @@ -1500,12 +1535,12 @@ "data": {"title": "Comparisons", "shortTitle": null, - "sectionNum": "18.8.4.7.", + "sectionNum": "19.8.4.7.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Comparisons", "shortTitle": null, "number": "7"}]}, @@ -1515,12 +1550,12 @@ "data": {"title": "Constructing", "shortTitle": null, - "sectionNum": "18.8.4.1.", + "sectionNum": "19.8.4.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Constructing", "shortTitle": null, "number": "1"}]}, @@ -1530,12 +1565,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.8.4.", + "sectionNum": "19.8.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "API Reference", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Strings/"}], @@ -1622,12 +1657,12 @@ "data": {"title": "Splices", "shortTitle": null, - "sectionNum": "19.5.3.2.", + "sectionNum": "20.5.3.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Quotation", "shortTitle": null, "number": "3"}, {"title": "Splices", "shortTitle": null, "number": "2"}]}, @@ -1637,12 +1672,12 @@ "data": {"title": "Source Positions", "shortTitle": null, - "sectionNum": "19.4.5.", + "sectionNum": "20.4.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Defining New Syntax", "shortTitle": null, "number": "4"}, {"title": "Source Positions", "shortTitle": null, "number": "5"}]}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], @@ -1679,14 +1714,14 @@ "data": {"title": "Simplification", "shortTitle": null, - "sectionNum": "13.5.11.", + "sectionNum": "13.5.12.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, {"title": "Tactic Reference", "shortTitle": null, "number": "5"}, - {"title": "Simplification", "shortTitle": null, "number": "11"}]}, + {"title": "Simplification", "shortTitle": null, "number": "12"}]}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "simp-tactic-params": [{"id": "simp-tactic-params", @@ -1809,12 +1844,12 @@ "data": {"title": "Dependent Pairs", "shortTitle": null, - "sectionNum": "18.13.2.", + "sectionNum": "19.13.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Tuples", "shortTitle": null, "number": "13"}, {"title": "Dependent Pairs", "shortTitle": null, "number": "2"}]}, "address": "/Basic-Types/Tuples/"}], @@ -1899,12 +1934,12 @@ "data": {"title": "Run-Time Code", "shortTitle": null, - "sectionNum": "20.", + "sectionNum": "21.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Run-Time Code", "shortTitle": null, "number": "20"}]}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}]}, "address": "/Run-Time-Code/"}], "run-time-inductives": [{"id": "run-time-inductives", @@ -1922,6 +1957,37 @@ "shortTitle": null, "number": "4"}]}, "address": "/The-Type-System/Inductive-Types/"}], + "repr-instance-howto": + [{"id": "repr-instance-howto", + "data": + {"title": "How To Write a Repr Instance", + "shortTitle": null, + "sectionNum": "3.7.2.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Repr", "shortTitle": null, "number": "2"}, + {"title": "How To Write a Repr Instance", + "shortTitle": null, + "number": "1"}]}, + "address": "/Interacting-with-Lean/"}], + "repr": + [{"id": "repr", + "data": + {"title": "Repr", + "shortTitle": null, + "sectionNum": "3.7.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Repr", "shortTitle": null, "number": "2"}]}, + "address": "/Interacting-with-Lean/"}], "release-v4.9.0": [{"id": "release-v4___9___0", "data": @@ -1935,7 +2001,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.9.0 (2024-07-01)", "shortTitle": null, - "number": "11"}]}, + "number": "15"}]}, "address": "/releases/v4.9.0/"}], "release-v4.8.0": [{"id": "release-v4___8___0", @@ -1950,7 +2016,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.8.0 (2024-06-05)", "shortTitle": null, - "number": "12"}]}, + "number": "16"}]}, "address": "/releases/v4.8.0/"}], "release-v4.7.0": [{"id": "release-v4___7___0", @@ -1965,7 +2031,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.7.0 (2024-04-03)", "shortTitle": null, - "number": "13"}]}, + "number": "17"}]}, "address": "/releases/v4.7.0/"}], "release-v4.6.0": [{"id": "release-v4___6___0", @@ -1980,7 +2046,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.6.0 (2024-02-29)", "shortTitle": null, - "number": "14"}]}, + "number": "18"}]}, "address": "/releases/v4.6.0/"}], "release-v4.5.0": [{"id": "release-v4___5___0", @@ -1995,7 +2061,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.5.0 (2024-02-01)", "shortTitle": null, - "number": "15"}]}, + "number": "19"}]}, "address": "/releases/v4.5.0/"}], "release-v4.4.0": [{"id": "release-v4___4___0", @@ -2010,7 +2076,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.4.0 (2023-12-31)", "shortTitle": null, - "number": "16"}]}, + "number": "20"}]}, "address": "/releases/v4.4.0/"}], "release-v4.3.0": [{"id": "release-v4___3___0", @@ -2025,8 +2091,68 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.3.0 (2023-11-30)", "shortTitle": null, - "number": "17"}]}, + "number": "21"}]}, "address": "/releases/v4.3.0/"}], + "release-v4.23.0": + [{"id": "release-v4___23___0", + "data": + {"title": "Lean 4.23.0 (2025-09-15)", + "shortTitle": null, + "sectionNum": null, + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Release Notes", "shortTitle": null, "number": null}, + {"title": "Lean 4.23.0 (2025-09-15)", + "shortTitle": null, + "number": "1"}]}, + "address": "/releases/v4.23.0/"}], + "release-v4.22.0": + [{"id": "release-v4___22___0", + "data": + {"title": "Lean 4.22.0 (2025-08-14)", + "shortTitle": null, + "sectionNum": null, + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Release Notes", "shortTitle": null, "number": null}, + {"title": "Lean 4.22.0 (2025-08-14)", + "shortTitle": null, + "number": "2"}]}, + "address": "/releases/v4.22.0/"}], + "release-v4.21.0": + [{"id": "release-v4___21___0", + "data": + {"title": "Lean 4.21.0 (2025-06-30)", + "shortTitle": null, + "sectionNum": null, + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Release Notes", "shortTitle": null, "number": null}, + {"title": "Lean 4.21.0 (2025-06-30)", + "shortTitle": null, + "number": "3"}]}, + "address": "/releases/v4.21.0/"}], + "release-v4.20.0": + [{"id": "release-v4___20___0", + "data": + {"title": "Lean 4.20.0 (2025-06-02)", + "shortTitle": null, + "sectionNum": null, + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Release Notes", "shortTitle": null, "number": null}, + {"title": "Lean 4.20.0 (2025-06-02)", + "shortTitle": null, + "number": "4"}]}, + "address": "/releases/v4.20.0/"}], "release-v4.2.0": [{"id": "release-v4___2___0", "data": @@ -2040,12 +2166,12 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.2.0 (2023-10-31)", "shortTitle": null, - "number": "18"}]}, + "number": "22"}]}, "address": "/releases/v4.2.0/"}], "release-v4.19.0": [{"id": "release-v4___19___0", "data": - {"title": "Lean 4.19.0 (2025-04-02)", + {"title": "Lean 4.19.0 (2025-05-01)", "shortTitle": null, "sectionNum": null, "context": @@ -2053,9 +2179,9 @@ "shortTitle": null, "number": null}, {"title": "Release Notes", "shortTitle": null, "number": null}, - {"title": "Lean 4.19.0 (2025-04-02)", + {"title": "Lean 4.19.0 (2025-05-01)", "shortTitle": null, - "number": "1"}]}, + "number": "5"}]}, "address": "/releases/v4.19.0/"}], "release-v4.18.0": [{"id": "release-v4___18___0", @@ -2070,7 +2196,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.18.0 (2025-04-02)", "shortTitle": null, - "number": "2"}]}, + "number": "6"}]}, "address": "/releases/v4.18.0/"}], "release-v4.17.0": [{"id": "release-v4___17___0", @@ -2085,7 +2211,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.17.0 (2025-03-03)", "shortTitle": null, - "number": "3"}]}, + "number": "7"}]}, "address": "/releases/v4.17.0/"}], "release-v4.16.0": [{"id": "release-v4___16___0", @@ -2100,7 +2226,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.16.0 (2025-02-03)", "shortTitle": null, - "number": "4"}]}, + "number": "8"}]}, "address": "/releases/v4.16.0/"}], "release-v4.15.0": [{"id": "release-v4___15___0", @@ -2115,7 +2241,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.15.0 (2025-01-04)", "shortTitle": null, - "number": "5"}]}, + "number": "9"}]}, "address": "/releases/v4.15.0/"}], "release-v4.14.0": [{"id": "release-v4___14___0", @@ -2130,7 +2256,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.14.0 (2024-12-02)", "shortTitle": null, - "number": "6"}]}, + "number": "10"}]}, "address": "/releases/v4.14.0/"}], "release-v4.13.0": [{"id": "release-v4___13___0", @@ -2145,7 +2271,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.13.0 (2024-11-01)", "shortTitle": null, - "number": "7"}]}, + "number": "11"}]}, "address": "/releases/v4.13.0/"}], "release-v4.12.0": [{"id": "release-v4___12___0", @@ -2160,7 +2286,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.12.0 (2024-10-01)", "shortTitle": null, - "number": "8"}]}, + "number": "12"}]}, "address": "/releases/v4.12.0/"}], "release-v4.11.0": [{"id": "release-v4___11___0", @@ -2175,7 +2301,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.11.0 (2024-09-02)", "shortTitle": null, - "number": "9"}]}, + "number": "13"}]}, "address": "/releases/v4.11.0/"}], "release-v4.10.0": [{"id": "release-v4___10___0", @@ -2190,7 +2316,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.10.0 (2024-07-31)", "shortTitle": null, - "number": "10"}]}, + "number": "14"}]}, "address": "/releases/v4.10.0/"}], "release-v4.1.0": [{"id": "release-v4___1___0", @@ -2205,7 +2331,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.1.0 (2023-09-26)", "shortTitle": null, - "number": "19"}]}, + "number": "23"}]}, "address": "/releases/v4.1.0/"}], "release-v4.0.0-m5": [{"id": "release-v4___0___0-m5", @@ -2220,7 +2346,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.0.0-m5 (2022-08-22)", "shortTitle": null, - "number": "21"}]}, + "number": "25"}]}, "address": "/releases/v4.0.0-m5/"}], "release-v4.0.0-m4": [{"id": "release-v4___0___0-m4", @@ -2235,7 +2361,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.0.0-m4 (2022-03-27)", "shortTitle": null, - "number": "22"}]}, + "number": "26"}]}, "address": "/releases/v4.0.0-m4/"}], "release-v4.0.0-m3": [{"id": "release-v4___0___0-m3", @@ -2250,7 +2376,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.0.0-m3 (2022-01-31)", "shortTitle": null, - "number": "23"}]}, + "number": "27"}]}, "address": "/releases/v4.0.0-m3/"}], "release-v4.0.0-m2": [{"id": "release-v4___0___0-m2", @@ -2265,7 +2391,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.0.0-m2 (2021-03-02)", "shortTitle": null, - "number": "24"}]}, + "number": "28"}]}, "address": "/releases/v4.0.0-m2/"}], "release-v4.0.0-m1": [{"id": "release-v4___0___0-m1", @@ -2280,7 +2406,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.0.0-m1 (2021-01-04)", "shortTitle": null, - "number": "25"}]}, + "number": "29"}]}, "address": "/releases/v4.0.0-m1/"}], "release-v4.0.0": [{"id": "release-v4___0___0", @@ -2295,7 +2421,7 @@ {"title": "Release Notes", "shortTitle": null, "number": null}, {"title": "Lean 4.0.0 (2023-09-08)", "shortTitle": null, - "number": "20"}]}, + "number": "24"}]}, "address": "/releases/v4.0.0/"}], "release-notes": [{"id": "release-notes", @@ -2314,13 +2440,13 @@ "data": {"title": "Reference Counting", "shortTitle": null, - "sectionNum": "20.1.", + "sectionNum": "21.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Run-Time Code", "shortTitle": null, "number": "20"}, - {"title": "Reference Counting", "shortTitle": null, "number": "1"}]}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}, + {"title": "Reference Counting", "shortTitle": null, "number": "2"}]}, "address": "/Run-Time-Code/Reference-Counting/"}], "reference-boxes": [{"id": "reference-boxes", @@ -2469,16 +2595,33 @@ "data": {"title": "Raw String Literals", "shortTitle": null, - "sectionNum": "18.8.3.3.", + "sectionNum": "19.8.3.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}, {"title": "Syntax", "shortTitle": null, "number": "3"}, {"title": "Raw String Literals", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Strings/"}], + "raw-data": + [{"id": "raw-data", + "data": + {"title": "Raw Data and Invariants", + "shortTitle": null, + "sectionNum": "19.17.1.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Library Design", "shortTitle": null, "number": "1"}, + {"title": "Raw Data and Invariants", + "shortTitle": null, + "number": "2"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], "quotients-nested-inductives": [{"id": "quotients-nested-inductives", "data": @@ -2640,12 +2783,12 @@ "data": {"title": "Matching Syntax", "shortTitle": null, - "sectionNum": "19.5.4.", + "sectionNum": "20.5.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Matching Syntax", "shortTitle": null, "number": "4"}]}, "address": "/Notations-and-Macros/Macros/"}], @@ -2654,12 +2797,12 @@ "data": {"title": "Quotation", "shortTitle": null, - "sectionNum": "19.5.3.", + "sectionNum": "20.5.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Quotation", "shortTitle": null, "number": "3"}]}, "address": "/Notations-and-Macros/Macros/"}], @@ -2668,12 +2811,12 @@ "data": {"title": "Quasiquotation", "shortTitle": null, - "sectionNum": "19.5.3.1.", + "sectionNum": "20.5.3.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Quotation", "shortTitle": null, "number": "3"}, {"title": "Quasiquotation", "shortTitle": null, "number": "1"}]}, @@ -2696,12 +2839,12 @@ "data": {"title": "Propositional Equality", "shortTitle": null, - "sectionNum": "17.4.", + "sectionNum": "18.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Propositions", "shortTitle": null, "number": "17"}, + {"title": "Basic Propositions", "shortTitle": null, "number": "18"}, {"title": "Propositional Equality", "shortTitle": null, "number": "4"}]}, @@ -2744,12 +2887,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.13.1.1.", + "sectionNum": "19.13.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Tuples", "shortTitle": null, "number": "13"}, {"title": "Ordered Pairs", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "1"}]}, @@ -2774,12 +2917,12 @@ "data": {"title": "Precedence", "shortTitle": null, - "sectionNum": "19.2.", + "sectionNum": "20.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Precedence", "shortTitle": null, "number": "2"}]}, "address": "/Notations-and-Macros/Precedence/"}], "platform-info": @@ -2802,12 +2945,12 @@ "data": {"title": "Peano Axioms", "shortTitle": null, - "sectionNum": "18.1.1.1.", + "sectionNum": "19.1.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "Logical Model", "shortTitle": null, "number": "1"}, {"title": "Peano Axioms", "shortTitle": null, "number": "1"}]}, @@ -3002,12 +3145,12 @@ "data": {"title": "Ordered Pairs", "shortTitle": null, - "sectionNum": "18.13.1.", + "sectionNum": "19.13.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Tuples", "shortTitle": null, "number": "13"}, {"title": "Ordered Pairs", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Tuples/"}], @@ -3048,12 +3191,12 @@ "data": {"title": "Optional Values", "shortTitle": null, - "sectionNum": "18.12.", + "sectionNum": "19.12.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Optional Values", "shortTitle": null, "number": "12"}]}, "address": "/Basic-Types/Optional-Values/"}], "operators-and-notations": @@ -3061,12 +3204,12 @@ "data": {"title": "Operators and Notations", "shortTitle": null, - "sectionNum": "19.3.1.", + "sectionNum": "20.3.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Notations", "shortTitle": null, "number": "3"}, {"title": "Operators and Notations", "shortTitle": null, @@ -3077,12 +3220,12 @@ "data": {"title": "Custom Operators", "shortTitle": null, - "sectionNum": "19.1.", + "sectionNum": "20.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Custom Operators", "shortTitle": null, "number": "1"}]}, "address": "/Notations-and-Macros/Custom-Operators/"}], "notations": @@ -3090,12 +3233,12 @@ "data": {"title": "Notations", "shortTitle": null, - "sectionNum": "19.3.", + "sectionNum": "20.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Notations", "shortTitle": null, "number": "3"}]}, "address": "/Notations-and-Macros/Notations/"}], "nested-inductive-types": @@ -3122,12 +3265,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.1.3.", + "sectionNum": "19.1.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "Syntax", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Natural-Numbers/"}], @@ -3136,12 +3279,12 @@ "data": {"title": "Run-Time Representation", "shortTitle": null, - "sectionNum": "18.1.2.", + "sectionNum": "19.1.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -3152,12 +3295,12 @@ "data": {"title": "Performance Notes", "shortTitle": null, - "sectionNum": "18.1.2.1.", + "sectionNum": "19.1.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -3169,12 +3312,12 @@ "data": {"title": "Logical Model", "shortTitle": null, - "sectionNum": "18.1.1.", + "sectionNum": "19.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "Logical Model", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Natural-Numbers/"}], @@ -3197,12 +3340,12 @@ "data": {"title": "Predicates", "shortTitle": null, - "sectionNum": "18.1.4.5.3.", + "sectionNum": "19.1.4.5.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Comparisons", "shortTitle": null, "number": "5"}, @@ -3213,12 +3356,12 @@ "data": {"title": "Powers of Two", "shortTitle": null, - "sectionNum": "18.1.4.4.", + "sectionNum": "19.1.4.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Powers of Two", "shortTitle": null, "number": "4"}]}, @@ -3228,12 +3371,12 @@ "data": {"title": "Minimum and Maximum", "shortTitle": null, - "sectionNum": "18.1.4.2.", + "sectionNum": "19.1.4.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Minimum and Maximum", "shortTitle": null, "number": "2"}]}, @@ -3243,12 +3386,12 @@ "data": {"title": "Iteration", "shortTitle": null, - "sectionNum": "18.1.4.6.", + "sectionNum": "19.1.4.6.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Iteration", "shortTitle": null, "number": "6"}]}, @@ -3258,12 +3401,12 @@ "data": {"title": "Alternative Induction Principles", "shortTitle": null, - "sectionNum": "18.1.4.8.1.", + "sectionNum": "19.1.4.8.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Elimination", "shortTitle": null, "number": "8"}, @@ -3276,12 +3419,12 @@ "data": {"title": "GCD and LCM", "shortTitle": null, - "sectionNum": "18.1.4.3.", + "sectionNum": "19.1.4.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "GCD and LCM", "shortTitle": null, "number": "3"}]}, @@ -3291,12 +3434,12 @@ "data": {"title": "Elimination", "shortTitle": null, - "sectionNum": "18.1.4.8.", + "sectionNum": "19.1.4.8.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Elimination", "shortTitle": null, "number": "8"}]}, @@ -3306,12 +3449,12 @@ "data": {"title": "Decidable Equality", "shortTitle": null, - "sectionNum": "18.1.4.5.2.", + "sectionNum": "19.1.4.5.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Comparisons", "shortTitle": null, "number": "5"}, @@ -3322,12 +3465,12 @@ "data": {"title": "Conversion", "shortTitle": null, - "sectionNum": "18.1.4.7.", + "sectionNum": "19.1.4.7.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Conversion", "shortTitle": null, "number": "7"}]}, @@ -3337,12 +3480,12 @@ "data": {"title": "Boolean Comparisons", "shortTitle": null, - "sectionNum": "18.1.4.5.1.", + "sectionNum": "19.1.4.5.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Comparisons", "shortTitle": null, "number": "5"}, @@ -3353,12 +3496,12 @@ "data": {"title": "Comparisons", "shortTitle": null, - "sectionNum": "18.1.4.5.", + "sectionNum": "19.1.4.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Comparisons", "shortTitle": null, "number": "5"}]}, @@ -3386,12 +3529,12 @@ "data": {"title": "Bitwise Operations", "shortTitle": null, - "sectionNum": "18.1.4.1.1.", + "sectionNum": "19.1.4.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Arithmetic", "shortTitle": null, "number": "1"}, @@ -3402,12 +3545,12 @@ "data": {"title": "Arithmetic", "shortTitle": null, - "sectionNum": "18.1.4.1.", + "sectionNum": "19.1.4.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Arithmetic", "shortTitle": null, "number": "1"}]}, @@ -3417,12 +3560,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.1.4.", + "sectionNum": "19.1.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}, {"title": "API Reference", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Natural-Numbers/"}], @@ -3760,6 +3903,18 @@ {"title": "do -Notation", "shortTitle": null, "number": "2"}, {"title": "Iteration", "shortTitle": null, "number": "5"}]}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], + "module-system": + [{"id": "module-system", + "data": + {"title": "The Module System", + "shortTitle": null, + "sectionNum": null, + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The Module System", "shortTitle": null, "number": null}]}, + "address": "/The-Module-System/"}], "module-syntax": [{"id": "module-syntax", "data": @@ -3883,17 +4038,30 @@ {"title": "Types", "shortTitle": null, "number": "1"}, {"title": "Generalization", "shortTitle": null, "number": "4"}]}, "address": "/Terms/Pattern-Matching/"}], + "maps": + [{"id": "maps", + "data": + {"title": "Maps and Sets", + "shortTitle": null, + "sectionNum": "19.17.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], "macros": [{"id": "macros", "data": {"title": "Macros", "shortTitle": null, - "sectionNum": "19.5.", + "sectionNum": "20.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}]}, "address": "/Notations-and-Macros/Macros/"}], "macro_rules": @@ -3901,12 +4069,12 @@ "data": {"title": "The macro_rules Command", "shortTitle": null, - "sectionNum": "19.5.5.1.", + "sectionNum": "20.5.5.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Defining Macros", "shortTitle": null, "number": "5"}, {"title": "The macro_rules Command", @@ -3918,12 +4086,12 @@ "data": {"title": "Hygiene-Related Operations", "shortTitle": null, - "sectionNum": "19.5.2.2.", + "sectionNum": "20.5.2.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "The Macro Monad", "shortTitle": null, "number": "2"}, {"title": "Hygiene-Related Operations", @@ -3935,12 +4103,12 @@ "data": {"title": "The Macro Monad", "shortTitle": null, - "sectionNum": "19.5.2.", + "sectionNum": "20.5.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "The Macro Monad", "shortTitle": null, "number": "2"}]}, "address": "/Notations-and-Macros/Macros/"}], @@ -3949,12 +4117,12 @@ "data": {"title": "Hygiene", "shortTitle": null, - "sectionNum": "19.5.1.", + "sectionNum": "20.5.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Hygiene", "shortTitle": null, "number": "1"}]}, "address": "/Notations-and-Macros/Macros/"}], @@ -3963,12 +4131,12 @@ "data": {"title": "Exceptions and Errors", "shortTitle": null, - "sectionNum": "19.5.2.1.", + "sectionNum": "20.5.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "The Macro Monad", "shortTitle": null, "number": "2"}, {"title": "Exceptions and Errors", @@ -3980,12 +4148,12 @@ "data": {"title": "Querying the Environment", "shortTitle": null, - "sectionNum": "19.5.2.3.", + "sectionNum": "20.5.2.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "The Macro Monad", "shortTitle": null, "number": "2"}, {"title": "Querying the Environment", @@ -3997,12 +4165,12 @@ "data": {"title": "The macro Command", "shortTitle": null, - "sectionNum": "19.5.5.2.", + "sectionNum": "20.5.5.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Defining Macros", "shortTitle": null, "number": "5"}, {"title": "The macro Command", "shortTitle": null, "number": "2"}]}, @@ -4012,12 +4180,12 @@ "data": {"title": "The Macro Attribute", "shortTitle": null, - "sectionNum": "19.5.5.3.", + "sectionNum": "20.5.5.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Defining Macros", "shortTitle": null, "number": "5"}, {"title": "The Macro Attribute", "shortTitle": null, "number": "3"}]}, @@ -4044,12 +4212,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.15.1.", + "sectionNum": "19.15.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Linked Lists", "shortTitle": null, "number": "15"}, {"title": "Syntax", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Linked-Lists/"}], @@ -4058,12 +4226,12 @@ "data": {"title": "Performance Notes", "shortTitle": null, - "sectionNum": "18.15.2.", + "sectionNum": "19.15.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Linked Lists", "shortTitle": null, "number": "15"}, {"title": "Performance Notes", "shortTitle": null, "number": "2"}]}, "address": "/Basic-Types/Linked-Lists/"}], @@ -4072,12 +4240,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.15.3.", + "sectionNum": "19.15.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Linked Lists", "shortTitle": null, "number": "15"}, {"title": "API Reference", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Linked-Lists/"}], @@ -4127,28 +4295,28 @@ "data": {"title": "Notations and Macros", "shortTitle": null, - "sectionNum": "19.", + "sectionNum": "20.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Notations and Macros", "shortTitle": null, - "number": "19"}]}, + "number": "20"}]}, "address": "/Notations-and-Macros/"}], "lake-vocab": [{"id": "lake-vocab", "data": {"title": "Concepts and Terminology", "shortTitle": null, - "sectionNum": "21.1.1.", + "sectionNum": "22.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Concepts and Terminology", "shortTitle": null, @@ -4159,14 +4327,14 @@ "data": {"title": "Scripts", "shortTitle": null, - "sectionNum": "21.1.1.3.", + "sectionNum": "22.1.1.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Concepts and Terminology", "shortTitle": null, @@ -4178,14 +4346,14 @@ "data": {"title": "GitHub Release Builds", "shortTitle": null, - "sectionNum": "21.1.1.5.", + "sectionNum": "22.1.1.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Concepts and Terminology", "shortTitle": null, @@ -4199,14 +4367,14 @@ "data": {"title": "Facets", "shortTitle": null, - "sectionNum": "21.1.1.2.", + "sectionNum": "22.1.1.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Concepts and Terminology", "shortTitle": null, @@ -4218,14 +4386,14 @@ "data": {"title": "Environment Variables", "shortTitle": null, - "sectionNum": "21.1.2.1.", + "sectionNum": "22.1.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Command-Line Interface", "shortTitle": null, @@ -4239,14 +4407,14 @@ "data": {"title": "Declarative TOML Format", "shortTitle": null, - "sectionNum": "21.1.3.1.", + "sectionNum": "22.1.3.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Configuration File Format", "shortTitle": null, @@ -4260,14 +4428,14 @@ "data": {"title": "Lean Format", "shortTitle": null, - "sectionNum": "21.1.3.2.", + "sectionNum": "22.1.3.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Configuration File Format", "shortTitle": null, @@ -4279,14 +4447,14 @@ "data": {"title": "Configuration File Format", "shortTitle": null, - "sectionNum": "21.1.3.", + "sectionNum": "22.1.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Configuration File Format", "shortTitle": null, @@ -4297,14 +4465,14 @@ "data": {"title": "Command-Line Interface", "shortTitle": null, - "sectionNum": "21.1.2.", + "sectionNum": "22.1.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Command-Line Interface", "shortTitle": null, @@ -4315,14 +4483,14 @@ "data": {"title": "Script API Reference", "shortTitle": null, - "sectionNum": "21.1.4.", + "sectionNum": "22.1.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Script API Reference", "shortTitle": null, @@ -4333,14 +4501,14 @@ "data": {"title": "Lake", "shortTitle": null, - "sectionNum": "21.1.", + "sectionNum": "22.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}]}, "address": "/Build-Tools-and-Distribution/Lake/"}], "keywords-and-identifiers": @@ -4506,12 +4674,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.2.3.", + "sectionNum": "19.2.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Integers", "shortTitle": null, "number": "2"}, {"title": "Syntax", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Integers/"}], @@ -4520,12 +4688,12 @@ "data": {"title": "Run-Time Representation", "shortTitle": null, - "sectionNum": "18.2.2.", + "sectionNum": "19.2.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Integers", "shortTitle": null, "number": "2"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -4536,12 +4704,12 @@ "data": {"title": "Logical Model", "shortTitle": null, - "sectionNum": "18.2.1.", + "sectionNum": "19.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Integers", "shortTitle": null, "number": "2"}, {"title": "Logical Model", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Integers/"}], @@ -4550,12 +4718,12 @@ "data": {"title": "Division", "shortTitle": null, - "sectionNum": "18.2.4.3.1.", + "sectionNum": "19.2.4.3.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Integers", "shortTitle": null, "number": "2"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Arithmetic", "shortTitle": null, "number": "3"}, @@ -4801,6 +4969,24 @@ {"title": "The Type System", "shortTitle": null, "number": "4"}, {"title": "Inductive Types", "shortTitle": null, "number": "4"}]}, "address": "/The-Type-System/Inductive-Types/"}], + "inductive-type-universe-levels": + [{"id": "inductive-type-universe-levels", + "data": + {"title": "Universe Levels", + "shortTitle": null, + "sectionNum": "4.4.3.2.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The Type System", "shortTitle": null, "number": "4"}, + {"title": "Inductive Types", "shortTitle": null, "number": "4"}, + {"title": "Logical Model", "shortTitle": null, "number": "3"}, + {"title": "Well-Formedness Requirements", + "shortTitle": null, + "number": "2"}, + {"title": "Universe Levels", "shortTitle": null, "number": "1"}]}, + "address": "/The-Type-System/Inductive-Types/"}], "inductive-declarations-deriving-instances": [{"id": "inductive-declarations-deriving-instances", "data": @@ -5006,74 +5192,255 @@ {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, {"title": "Checking Types", "shortTitle": null, "number": "3"}]}, "address": "/Interacting-with-Lean/"}], - "generalized-field-notation": - [{"id": "generalized-field-notation", + "grind-tactic": + [{"id": "grind-tactic", "data": - {"title": "Generalized Field Notation", + {"title": "The grind tactic", "shortTitle": null, - "sectionNum": "10.4.1.", + "sectionNum": "17.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Terms", "shortTitle": null, "number": "10"}, - {"title": "Function Application", "shortTitle": null, "number": "4"}, - {"title": "Generalized Field Notation", - "shortTitle": null, - "number": "1"}]}, - "address": "/Terms/Function-Application/"}], - "functions": - [{"id": "functions", + {"title": "The grind tactic", "shortTitle": null, "number": "17"}]}, + "address": "/The--grind--tactic/"}], + "grind-split": + [{"id": "grind-split", "data": - {"title": "Functions", + {"title": "Case Analysis", "shortTitle": null, - "sectionNum": "4.1.", + "sectionNum": "17.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "The Type System", "shortTitle": null, "number": "4"}, - {"title": "Functions", "shortTitle": null, "number": "1"}]}, - "address": "/The-Type-System/Functions/"}], - "function-types": - [{"id": "function-types", + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Case Analysis", "shortTitle": null, "number": "5"}]}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "grind-ring-field": + [{"id": "grind-ring-field", "data": - {"title": "Function Types", + {"title": "Fields", "shortTitle": null, - "sectionNum": "10.2.", + "sectionNum": "17.8.1.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Terms", "shortTitle": null, "number": "10"}, - {"title": "Function Types", "shortTitle": null, "number": "2"}]}, - "address": "/Terms/Function-Types/"}], - "function-terms": - [{"id": "function-terms", + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Algebraic Solver (Commutative Rings, Fields)", + "shortTitle": null, + "number": "8"}, + {"title": "Solver Type Classes", "shortTitle": null, "number": "1"}, + {"title": "Algebraic Structures", "shortTitle": null, "number": "1"}, + {"title": "Fields", "shortTitle": null, "number": "1"}]}, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "grind-ring-classes": + [{"id": "grind-ring-classes", "data": - {"title": "Functions", + {"title": "Solver Type Classes", "shortTitle": null, - "sectionNum": "10.3.", + "sectionNum": "17.8.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Terms", "shortTitle": null, "number": "10"}, - {"title": "Functions", "shortTitle": null, "number": "3"}]}, - "address": "/Terms/Functions/"}], - "function-extensionality": - [{"id": "function-extensionality", + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Algebraic Solver (Commutative Rings, Fields)", + "shortTitle": null, + "number": "8"}, + {"title": "Solver Type Classes", "shortTitle": null, "number": "1"}]}, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "grind-ring": + [{"id": "grind-ring", "data": - {"title": "Extensionality", + {"title": "Algebraic Solver (Commutative Rings, Fields)", "shortTitle": null, - "sectionNum": "4.1.3.", + "sectionNum": "17.8.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "The Type System", "shortTitle": null, "number": "4"}, - {"title": "Functions", "shortTitle": null, "number": "1"}, - {"title": "Extensionality", "shortTitle": null, "number": "3"}]}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Algebraic Solver (Commutative Rings, Fields)", + "shortTitle": null, + "number": "8"}]}, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "grind-propagation": + [{"id": "grind-propagation", + "data": + {"title": "Constraint Propagation", + "shortTitle": null, + "sectionNum": "17.4.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Constraint Propagation", + "shortTitle": null, + "number": "4"}]}, + "address": "/The--grind--tactic/Constraint-Propagation/"}], + "grind-linarith-classes": + [{"id": "grind-linarith-classes", + "data": + {"title": "Supporting linarith", + "shortTitle": null, + "sectionNum": "17.9.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Linear Arithmetic Solver", + "shortTitle": null, + "number": "9"}, + {"title": "Supporting linarith", + "shortTitle": null, + "number": "1"}]}, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "grind-linarith": + [{"id": "grind-linarith", + "data": + {"title": "Linear Arithmetic Solver", + "shortTitle": null, + "sectionNum": "17.9.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Linear Arithmetic Solver", + "shortTitle": null, + "number": "9"}]}, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "grind-limits": + [{"id": "grind-limits", + "data": + {"title": "Resource Limits", + "shortTitle": null, + "sectionNum": "17.6.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "E‑matching", "shortTitle": null, "number": "6"}, + {"title": "Resource Limits", "shortTitle": null, "number": "3"}]}, + "address": "/The--grind--tactic/E___matching/"}], + "grind-if-then-else-norm": + [{"id": "grind-if-then-else-norm", + "data": + {"title": "if - then - else Normalization", + "shortTitle": null, + "sectionNum": "17.10.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Bigger Examples", "shortTitle": null, "number": "10"}, + {"title": "if - then - else Normalization", + "shortTitle": null, + "number": "2"}]}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "grind-errors": + [{"id": "grind-errors", + "data": + {"title": "Error Messages", + "shortTitle": null, + "sectionNum": "17.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Error Messages", "shortTitle": null, "number": "1"}]}, + "address": "/The--grind--tactic/Error-Messages/"}], + "grind-bigger-examples": + [{"id": "grind-bigger-examples", + "data": + {"title": "Bigger Examples", + "shortTitle": null, + "sectionNum": "17.10.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Bigger Examples", "shortTitle": null, "number": "10"}]}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "generalized-field-notation": + [{"id": "generalized-field-notation", + "data": + {"title": "Generalized Field Notation", + "shortTitle": null, + "sectionNum": "10.4.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Terms", "shortTitle": null, "number": "10"}, + {"title": "Function Application", "shortTitle": null, "number": "4"}, + {"title": "Generalized Field Notation", + "shortTitle": null, + "number": "1"}]}, + "address": "/Terms/Function-Application/"}], + "functions": + [{"id": "functions", + "data": + {"title": "Functions", + "shortTitle": null, + "sectionNum": "4.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The Type System", "shortTitle": null, "number": "4"}, + {"title": "Functions", "shortTitle": null, "number": "1"}]}, + "address": "/The-Type-System/Functions/"}], + "function-types": + [{"id": "function-types", + "data": + {"title": "Function Types", + "shortTitle": null, + "sectionNum": "10.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Terms", "shortTitle": null, "number": "10"}, + {"title": "Function Types", "shortTitle": null, "number": "2"}]}, + "address": "/Terms/Function-Types/"}], + "function-terms": + [{"id": "function-terms", + "data": + {"title": "Functions", + "shortTitle": null, + "sectionNum": "10.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Terms", "shortTitle": null, "number": "10"}, + {"title": "Functions", "shortTitle": null, "number": "3"}]}, + "address": "/Terms/Functions/"}], + "function-extensionality": + [{"id": "function-extensionality", + "data": + {"title": "Extensionality", + "shortTitle": null, + "sectionNum": "4.1.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The Type System", "shortTitle": null, "number": "4"}, + {"title": "Functions", "shortTitle": null, "number": "1"}, + {"title": "Extensionality", "shortTitle": null, "number": "3"}]}, "address": "/The-Type-System/Functions/"}], "function-application": [{"id": "function-application", @@ -5119,32 +5486,155 @@ "shortTitle": null, "number": "4"}]}, "address": "/Coercions/Coercing-to-Function-Types/"}], + "format-repr": + [{"id": "format-repr", + "data": + {"title": "Formatted Output", + "shortTitle": null, + "sectionNum": "3.7.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}]}, + "address": "/Interacting-with-Lean/"}], + "format-render": + [{"id": "format-render", + "data": + {"title": "Rendering", + "shortTitle": null, + "sectionNum": "3.7.1.6.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}, + {"title": "Rendering", "shortTitle": null, "number": "6"}]}, + "address": "/Interacting-with-Lean/"}], + "format-join": + [{"id": "format-join", + "data": + {"title": "Sequences", + "shortTitle": null, + "sectionNum": "3.7.1.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}, + {"title": "Sequences", "shortTitle": null, "number": "3"}]}, + "address": "/Interacting-with-Lean/"}], + "format-indent": + [{"id": "format-indent", + "data": + {"title": "Indentation", + "shortTitle": null, + "sectionNum": "3.7.1.4.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}, + {"title": "Indentation", "shortTitle": null, "number": "4"}]}, + "address": "/Interacting-with-Lean/"}], + "format-empty": + [{"id": "format-empty", + "data": + {"title": "Empty Documents", + "shortTitle": null, + "sectionNum": "3.7.1.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}, + {"title": "Empty Documents", "shortTitle": null, "number": "2"}]}, + "address": "/Interacting-with-Lean/"}], + "format-brackets": + [{"id": "format-brackets", + "data": + {"title": "Brackets and Parentheses", + "shortTitle": null, + "sectionNum": "3.7.1.5.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}, + {"title": "Brackets and Parentheses", + "shortTitle": null, + "number": "5"}]}, + "address": "/Interacting-with-Lean/"}], + "format-api": + [{"id": "format-api", + "data": + {"title": "Documents", + "shortTitle": null, + "sectionNum": "3.7.1.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}, + {"title": "Documents", "shortTitle": null, "number": "1"}]}, + "address": "/Interacting-with-Lean/"}], "fixed-ints": [{"id": "fixed-ints", "data": {"title": "Fixed-Precision Integers", "shortTitle": null, - "sectionNum": "18.4.", + "sectionNum": "19.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Fixed-Precision Integers", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "fixed-int-runtime": + [{"id": "fixed-int-runtime", + "data": + {"title": "Run-Time Representation", + "shortTitle": null, + "sectionNum": "19.4.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Fixed-Precision Integers", + "shortTitle": null, + "number": "4"}, + {"title": "Run-Time Representation", + "shortTitle": null, + "number": "2"}]}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], "fixed-int-comparisons": [{"id": "fixed-int-comparisons", "data": {"title": "Comparisons", "shortTitle": null, - "sectionNum": "18.4.4.4.", + "sectionNum": "19.4.4.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Fixed-Precision Integers", "shortTitle": null, "number": "4"}, @@ -5156,12 +5646,12 @@ "data": {"title": "Arithmetic", "shortTitle": null, - "sectionNum": "18.4.4.5.", + "sectionNum": "19.4.4.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Fixed-Precision Integers", "shortTitle": null, "number": "4"}, @@ -5182,6 +5672,73 @@ "shortTitle": null, "number": "5"}]}, "address": "/Source-Files-and-Modules/"}], + "ffi-types": + [{"id": "ffi-types", + "data": + {"title": "Translating Types from Lean to C", + "shortTitle": null, + "sectionNum": "21.4.1.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}, + {"title": "Foreign Function Interface", + "shortTitle": null, + "number": "4"}, + {"title": "The Lean ABI", "shortTitle": null, "number": "1"}, + {"title": "Translating Types from Lean to C", + "shortTitle": null, + "number": "1"}]}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], + "ffi-initialization": + [{"id": "ffi-initialization", + "data": + {"title": "Initialization", + "shortTitle": null, + "sectionNum": "21.4.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}, + {"title": "Foreign Function Interface", + "shortTitle": null, + "number": "4"}, + {"title": "Initialization", "shortTitle": null, "number": "2"}]}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], + "ffi-borrowing": + [{"id": "ffi-borrowing", + "data": + {"title": "Borrowing", + "shortTitle": null, + "sectionNum": "21.4.1.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}, + {"title": "Foreign Function Interface", + "shortTitle": null, + "number": "4"}, + {"title": "The Lean ABI", "shortTitle": null, "number": "1"}, + {"title": "Borrowing", "shortTitle": null, "number": "2"}]}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], + "ffi": + [{"id": "ffi", + "data": + {"title": "Foreign Function Interface", + "shortTitle": null, + "sectionNum": "21.4.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}, + {"title": "Foreign Function Interface", + "shortTitle": null, + "number": "4"}]}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "exception-monads": [{"id": "exception-monads", "data": @@ -5255,12 +5812,12 @@ "data": {"title": "The Empty Type", "shortTitle": null, - "sectionNum": "18.10.", + "sectionNum": "19.10.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "The Empty Type", "shortTitle": null, "number": "10"}]}, "address": "/Basic-Types/The-Empty-Type/"}], "elan-toolchain-versions": @@ -5268,14 +5825,14 @@ "data": {"title": "Selecting Toolchains", "shortTitle": null, - "sectionNum": "21.2.1.", + "sectionNum": "22.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5289,14 +5846,14 @@ "data": {"title": "Determining the Current Toolchain", "shortTitle": null, - "sectionNum": "21.2.1.2.", + "sectionNum": "22.2.1.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5311,14 +5868,14 @@ "data": {"title": "Managing Installed Toolchains", "shortTitle": null, - "sectionNum": "21.2.3.3.", + "sectionNum": "22.2.3.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5335,14 +5892,14 @@ "data": {"title": "Querying Toolchains", "shortTitle": null, - "sectionNum": "21.2.3.1.", + "sectionNum": "22.2.3.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5357,14 +5914,14 @@ "data": {"title": "Managing Elan", "shortTitle": null, - "sectionNum": "21.2.3.6.", + "sectionNum": "22.2.3.6.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5379,14 +5936,14 @@ "data": {"title": "Running Tools and Commands", "shortTitle": null, - "sectionNum": "21.2.3.5.", + "sectionNum": "22.2.3.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5403,14 +5960,14 @@ "data": {"title": "Managing Directory Overrides", "shortTitle": null, - "sectionNum": "21.2.3.4.", + "sectionNum": "22.2.3.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5427,14 +5984,14 @@ "data": {"title": "Toolchain Locations", "shortTitle": null, - "sectionNum": "21.2.2.", + "sectionNum": "22.2.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5446,14 +6003,14 @@ "data": {"title": "Setting the Default Toolchain", "shortTitle": null, - "sectionNum": "21.2.3.2.", + "sectionNum": "22.2.3.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5470,14 +6027,14 @@ "data": {"title": "Command-Line Interface", "shortTitle": null, - "sectionNum": "21.2.3.", + "sectionNum": "22.2.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5491,14 +6048,14 @@ "data": {"title": "Toolchain Identifiers", "shortTitle": null, - "sectionNum": "21.2.1.1.", + "sectionNum": "22.2.1.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}, @@ -5513,14 +6070,14 @@ "data": {"title": "Managing Toolchains with Elan", "shortTitle": null, - "sectionNum": "21.2.", + "sectionNum": "22.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Managing Toolchains with Elan", "shortTitle": null, "number": "2"}]}, @@ -5531,12 +6088,12 @@ "data": {"title": "Elaborators", "shortTitle": null, - "sectionNum": "19.6.", + "sectionNum": "20.6.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Elaborators", "shortTitle": null, "number": "6"}]}, "address": "/Notations-and-Macros/Elaborators/"}], "elaboration-results": @@ -5571,6 +6128,33 @@ "shortTitle": null, "number": "4"}]}, "address": "/Definitions/Recursive-Definitions/"}], + "e-matching-patterns": + [{"id": "e-matching-patterns", + "data": + {"title": "Patterns", + "shortTitle": null, + "sectionNum": "17.6.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "E‑matching", "shortTitle": null, "number": "6"}, + {"title": "Patterns", "shortTitle": null, "number": "1"}]}, + "address": "/The--grind--tactic/E___matching/"}], + "e-matching": + [{"id": "e-matching", + "data": + {"title": "E‑matching", + "shortTitle": null, + "sectionNum": "17.6.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "E‑matching", "shortTitle": null, "number": "6"}]}, + "address": "/The--grind--tactic/E___matching/"}], "do-notation": [{"id": "do-notation", "data": @@ -5651,12 +6235,12 @@ "data": {"title": "Delaborators", "shortTitle": null, - "sectionNum": "19.7.2.", + "sectionNum": "20.7.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Extending Lean's Output", "shortTitle": null, "number": "7"}, @@ -5679,12 +6263,12 @@ "data": {"title": "Defining Macros", "shortTitle": null, - "sectionNum": "19.5.5.", + "sectionNum": "20.5.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Macros", "shortTitle": null, "number": "5"}, {"title": "Defining Macros", "shortTitle": null, "number": "5"}]}, "address": "/Notations-and-Macros/Macros/"}], @@ -5743,18 +6327,83 @@ {"title": "Basic Classes", "shortTitle": null, "number": "5"}, {"title": "Decidability", "shortTitle": null, "number": "4"}]}, "address": "/Type-Classes/Basic-Classes/"}], - "custom-tactics": - [{"id": "custom-tactics", + "cutsat-qlia": + [{"id": "cutsat-qlia", "data": - {"title": "Custom Tactics", + {"title": "Rational Solutions", "shortTitle": null, - "sectionNum": "13.8.", + "sectionNum": "17.7.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, - {"title": "Custom Tactics", "shortTitle": null, "number": "8"}]}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Linear Integer Arithmetic", + "shortTitle": null, + "number": "7"}, + {"title": "Rational Solutions", "shortTitle": null, "number": "1"}]}, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "cutsat-mbtc": + [{"id": "cutsat-mbtc", + "data": + {"title": "Propagating Information", + "shortTitle": null, + "sectionNum": "17.7.5.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Linear Integer Arithmetic", + "shortTitle": null, + "number": "7"}, + {"title": "Propagating Information", + "shortTitle": null, + "number": "5"}]}, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "cutsat-ToInt": + [{"id": "cutsat-ToInt", + "data": + {"title": "Other Types", + "shortTitle": null, + "sectionNum": "17.7.6.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Linear Integer Arithmetic", + "shortTitle": null, + "number": "7"}, + {"title": "Other Types", "shortTitle": null, "number": "6"}]}, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "cutsat": + [{"id": "cutsat", + "data": + {"title": "Linear Integer Arithmetic", + "shortTitle": null, + "sectionNum": "17.7.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Linear Integer Arithmetic", + "shortTitle": null, + "number": "7"}]}, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "custom-tactics": + [{"id": "custom-tactics", + "data": + {"title": "Custom Tactics", + "shortTitle": null, + "sectionNum": "13.8.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Tactic Proofs", "shortTitle": null, "number": "13"}, + {"title": "Custom Tactics", "shortTitle": null, "number": "8"}]}, "address": "/Tactic-Proofs/Custom-Tactics/"}], "currying": [{"id": "currying", @@ -5948,6 +6597,19 @@ "shortTitle": null, "number": "6"}]}, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}], + "congruence-closure": + [{"id": "congruence-closure", + "data": + {"title": "Congruence Closure", + "shortTitle": null, + "sectionNum": "17.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Congruence Closure", "shortTitle": null, "number": "3"}]}, + "address": "/The--grind--tactic/Congruence-Closure/"}], "concurrency": [{"id": "concurrency", "data": @@ -6213,12 +6875,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.7.3.", + "sectionNum": "19.7.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Characters", "shortTitle": null, "number": "7"}, {"title": "Syntax", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Characters/"}], @@ -6227,12 +6889,12 @@ "data": {"title": "Run-Time Representation", "shortTitle": null, - "sectionNum": "18.7.2.", + "sectionNum": "19.7.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Characters", "shortTitle": null, "number": "7"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -6243,12 +6905,12 @@ "data": {"title": "Logical Model", "shortTitle": null, - "sectionNum": "18.7.1.", + "sectionNum": "19.7.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Characters", "shortTitle": null, "number": "7"}, {"title": "Logical Model", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Characters/"}], @@ -6257,12 +6919,12 @@ "data": {"title": "Character Classes", "shortTitle": null, - "sectionNum": "18.7.4.2.", + "sectionNum": "19.7.4.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Characters", "shortTitle": null, "number": "7"}, {"title": "API Reference", "shortTitle": null, "number": "4"}, {"title": "Character Classes", "shortTitle": null, "number": "2"}]}, @@ -6272,12 +6934,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.7.4.", + "sectionNum": "19.7.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Characters", "shortTitle": null, "number": "7"}, {"title": "API Reference", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Characters/"}], @@ -6299,14 +6961,14 @@ "data": {"title": "Build Tools and Distribution", "shortTitle": null, - "sectionNum": "21.", + "sectionNum": "22.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}]}, + "number": "22"}]}, "address": "/Build-Tools-and-Distribution/"}], "bracketed-parameter-syntax": [{"id": "bracketed-parameter-syntax", @@ -6326,6 +6988,19 @@ "shortTitle": null, "number": "3"}]}, "address": "/Definitions/Headers-and-Signatures/"}], + "boxing": + [{"id": "boxing", + "data": + {"title": "Boxing", + "shortTitle": null, + "sectionNum": "21.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Run-Time Code", "shortTitle": null, "number": "21"}, + {"title": "Boxing", "shortTitle": null, "number": "1"}]}, + "address": "/Run-Time-Code/Boxing/"}], "bound-variable-name-hints": [{"id": "bound-variable-name-hints", "data": @@ -6346,24 +7021,24 @@ "data": {"title": "Basic Types", "shortTitle": null, - "sectionNum": "18.", + "sectionNum": "19.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}]}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}]}, "address": "/Basic-Types/"}], "basic-props": [{"id": "basic-props", "data": {"title": "Basic Propositions", "shortTitle": null, - "sectionNum": "17.", + "sectionNum": "18.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Propositions", "shortTitle": null, "number": "17"}]}, + {"title": "Basic Propositions", "shortTitle": null, "number": "18"}]}, "address": "/Basic-Propositions/"}], "basic-classes": [{"id": "basic-classes", @@ -6434,14 +7109,14 @@ "data": {"title": "Automatic Toolchain Updates", "shortTitle": null, - "sectionNum": "21.1.2.4.", + "sectionNum": "22.1.2.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, {"title": "Build Tools and Distribution", "shortTitle": null, - "number": "21"}, + "number": "22"}, {"title": "Lake", "shortTitle": null, "number": "1"}, {"title": "Command-Line Interface", "shortTitle": null, @@ -6485,12 +7160,12 @@ "data": {"title": "Syntax", "shortTitle": null, - "sectionNum": "18.16.3.", + "sectionNum": "19.16.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}, {"title": "Syntax", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Arrays/"}], @@ -6499,12 +7174,12 @@ "data": {"title": "Run-Time Representation", "shortTitle": null, - "sectionNum": "18.16.2.", + "sectionNum": "19.16.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -6515,12 +7190,12 @@ "data": {"title": "Performance Notes", "shortTitle": null, - "sectionNum": "18.16.2.1.", + "sectionNum": "19.16.2.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}, {"title": "Run-Time Representation", "shortTitle": null, @@ -6532,12 +7207,12 @@ "data": {"title": "FFI", "shortTitle": null, - "sectionNum": "18.16.6.", + "sectionNum": "19.16.6.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}, {"title": "FFI", "shortTitle": null, "number": "6"}]}, "address": "/Basic-Types/Arrays/"}], @@ -6546,12 +7221,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.16.4.", + "sectionNum": "19.16.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}, {"title": "API Reference", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Arrays/"}], @@ -6579,12 +7254,12 @@ "data": {"title": "Unexpanders", "shortTitle": null, - "sectionNum": "19.7.1.", + "sectionNum": "20.7.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Notations and Macros", "shortTitle": null, "number": "19"}, + {"title": "Notations and Macros", "shortTitle": null, "number": "20"}, {"title": "Extending Lean's Output", "shortTitle": null, "number": "7"}, @@ -6595,12 +7270,12 @@ "data": {"title": "Uniqueness of Equality Proofs", "shortTitle": null, - "sectionNum": "17.4.1.", + "sectionNum": "18.4.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Propositions", "shortTitle": null, "number": "17"}, + {"title": "Basic Propositions", "shortTitle": null, "number": "18"}, {"title": "Propositional Equality", "shortTitle": null, "number": "4"}, @@ -6608,18 +7283,46 @@ "shortTitle": null, "number": "1"}]}, "address": "/Basic-Propositions/Propositional-Equality/"}], + "TreeSet": + [{"id": "TreeSet", + "data": + {"title": "Tree-Based Sets", + "shortTitle": null, + "sectionNum": "19.17.10.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Tree-Based Sets", "shortTitle": null, "number": "10"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "TreeMap": + [{"id": "TreeMap", + "data": + {"title": "Tree-Based Maps", + "shortTitle": null, + "sectionNum": "19.17.8.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Tree-Based Maps", "shortTitle": null, "number": "8"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], "Thunk-runtime": [{"id": "Thunk-runtime", "data": {"title": "Runtime Representation", "shortTitle": null, - "sectionNum": "18.18.2.", + "sectionNum": "19.19.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, - {"title": "Lazy Computations", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Lazy Computations", "shortTitle": null, "number": "19"}, {"title": "Runtime Representation", "shortTitle": null, "number": "2"}]}, @@ -6629,13 +7332,13 @@ "data": {"title": "Logical Model", "shortTitle": null, - "sectionNum": "18.18.1.", + "sectionNum": "19.19.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, - {"title": "Lazy Computations", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Lazy Computations", "shortTitle": null, "number": "19"}, {"title": "Logical Model", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Lazy-Computations/"}], "Thunk-coercions": @@ -6643,13 +7346,13 @@ "data": {"title": "Coercions", "shortTitle": null, - "sectionNum": "18.18.3.", + "sectionNum": "19.19.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, - {"title": "Lazy Computations", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Lazy Computations", "shortTitle": null, "number": "19"}, {"title": "Coercions", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Lazy-Computations/"}], "Thunk-api": @@ -6657,13 +7360,13 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.18.4.", + "sectionNum": "19.19.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, - {"title": "Lazy Computations", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Lazy Computations", "shortTitle": null, "number": "19"}, {"title": "API Reference", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Lazy-Computations/"}], "Thunk": @@ -6671,51 +7374,86 @@ "data": {"title": "Lazy Computations", "shortTitle": null, - "sectionNum": "18.18.", + "sectionNum": "19.19.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, - {"title": "Lazy Computations", "shortTitle": null, "number": "18"}]}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Lazy Computations", "shortTitle": null, "number": "19"}]}, "address": "/Basic-Types/Lazy-Computations/"}], "Subtype": [{"id": "Subtype", "data": {"title": "Subtypes", "shortTitle": null, - "sectionNum": "18.17.", + "sectionNum": "19.18.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, - {"title": "Subtypes", "shortTitle": null, "number": "17"}]}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Subtypes", "shortTitle": null, "number": "18"}]}, "address": "/Basic-Types/Subtypes/"}], "String": [{"id": "String", "data": {"title": "Strings", "shortTitle": null, - "sectionNum": "18.8.", + "sectionNum": "19.8.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Strings", "shortTitle": null, "number": "8"}]}, "address": "/Basic-Types/Strings/"}], + "ReprAtom": + [{"id": "ReprAtom", + "data": + {"title": "Atomic Types", + "shortTitle": null, + "sectionNum": "3.7.2.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Repr", "shortTitle": null, "number": "2"}, + {"title": "Atomic Types", "shortTitle": null, "number": "2"}]}, + "address": "/Interacting-with-Lean/"}], + "NoNatZeroDivisors": + [{"id": "NoNatZeroDivisors", + "data": + {"title": "Natural Number Zero Divisors", + "shortTitle": null, + "sectionNum": "17.8.1.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Algebraic Solver (Commutative Rings, Fields)", + "shortTitle": null, + "number": "8"}, + {"title": "Solver Type Classes", "shortTitle": null, "number": "1"}, + {"title": "Natural Number Zero Divisors", + "shortTitle": null, + "number": "3"}]}, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], "Nat": [{"id": "Nat", "data": {"title": "Natural Numbers", "shortTitle": null, - "sectionNum": "18.1.", + "sectionNum": "19.1.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Natural Numbers", "shortTitle": null, "number": "1"}]}, "address": "/Basic-Types/Natural-Numbers/"}], "List": @@ -6723,12 +7461,12 @@ "data": {"title": "Linked Lists", "shortTitle": null, - "sectionNum": "18.15.", + "sectionNum": "19.15.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Linked Lists", "shortTitle": null, "number": "15"}]}, "address": "/Basic-Types/Linked-Lists/"}], "Int": @@ -6736,25 +7474,53 @@ "data": {"title": "Integers", "shortTitle": null, - "sectionNum": "18.2.", + "sectionNum": "19.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Integers", "shortTitle": null, "number": "2"}]}, "address": "/Basic-Types/Integers/"}], + "HashSet": + [{"id": "HashSet", + "data": + {"title": "Hash Sets", + "shortTitle": null, + "sectionNum": "19.17.6.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Hash Sets", "shortTitle": null, "number": "6"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "HashMap": + [{"id": "HashMap", + "data": + {"title": "Hash Maps", + "shortTitle": null, + "sectionNum": "19.17.2.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Hash Maps", "shortTitle": null, "number": "2"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], "HEq": [{"id": "HEq", "data": {"title": "Heterogeneous Equality", "shortTitle": null, - "sectionNum": "17.4.2.", + "sectionNum": "18.4.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Propositions", "shortTitle": null, "number": "17"}, + {"title": "Basic Propositions", "shortTitle": null, "number": "18"}, {"title": "Propositional Equality", "shortTitle": null, "number": "4"}, @@ -6762,17 +7528,31 @@ "shortTitle": null, "number": "2"}]}, "address": "/Basic-Propositions/Propositional-Equality/"}], + "Format": + [{"id": "Format", + "data": + {"title": "Format", + "shortTitle": null, + "sectionNum": "3.7.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Interacting with Lean", "shortTitle": null, "number": "3"}, + {"title": "Formatted Output", "shortTitle": null, "number": "7"}, + {"title": "Format", "shortTitle": null, "number": "1"}]}, + "address": "/Interacting-with-Lean/"}], "Float-api": [{"id": "Float-api", "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.6.2.", + "sectionNum": "19.6.2.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Floating-Point Numbers", "shortTitle": null, "number": "6"}, @@ -6783,12 +7563,12 @@ "data": {"title": "Floating-Point Numbers", "shortTitle": null, - "sectionNum": "18.6.", + "sectionNum": "19.6.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Floating-Point Numbers", "shortTitle": null, "number": "6"}]}, @@ -6798,27 +7578,105 @@ "data": {"title": "Finite Natural Numbers", "shortTitle": null, - "sectionNum": "18.3.", + "sectionNum": "19.3.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Finite Natural Numbers", "shortTitle": null, "number": "3"}]}, "address": "/Basic-Types/Finite-Natural-Numbers/"}], + "ExtHashSet": + [{"id": "ExtHashSet", + "data": + {"title": "Extensional Hash Sets", + "shortTitle": null, + "sectionNum": "19.17.7.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Extensional Hash Sets", + "shortTitle": null, + "number": "7"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "ExtHashMap": + [{"id": "ExtHashMap", + "data": + {"title": "Extensional Hash Maps", + "shortTitle": null, + "sectionNum": "19.17.4.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Extensional Hash Maps", + "shortTitle": null, + "number": "4"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "ExtDHashMap": + [{"id": "ExtDHashMap", + "data": + {"title": "Extensional Dependent Hash Maps", + "shortTitle": null, + "sectionNum": "19.17.5.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Extensional Dependent Hash Maps", + "shortTitle": null, + "number": "5"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "DTreeMap": + [{"id": "DTreeMap", + "data": + {"title": "Dependent Tree-Based Maps", + "shortTitle": null, + "sectionNum": "19.17.9.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Dependent Tree-Based Maps", + "shortTitle": null, + "number": "9"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "DHashMap": + [{"id": "DHashMap", + "data": + {"title": "Dependent Hash Maps", + "shortTitle": null, + "sectionNum": "19.17.3.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, + {"title": "Maps and Sets", "shortTitle": null, "number": "17"}, + {"title": "Dependent Hash Maps", "shortTitle": null, "number": "3"}]}, + "address": "/Basic-Types/Maps-and-Sets/"}], "Char": [{"id": "Char", "data": {"title": "Characters", "shortTitle": null, - "sectionNum": "18.7.", + "sectionNum": "19.7.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Characters", "shortTitle": null, "number": "7"}]}, "address": "/Basic-Types/Characters/"}], "BitVec-automation": @@ -6826,12 +7684,12 @@ "data": {"title": "Automation", "shortTitle": null, - "sectionNum": "18.5.4.", + "sectionNum": "19.5.4.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Bitvectors", "shortTitle": null, "number": "5"}, {"title": "Automation", "shortTitle": null, "number": "4"}]}, "address": "/Basic-Types/Bitvectors/"}], @@ -6840,12 +7698,12 @@ "data": {"title": "API Reference", "shortTitle": null, - "sectionNum": "18.5.5.", + "sectionNum": "19.5.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Bitvectors", "shortTitle": null, "number": "5"}, {"title": "API Reference", "shortTitle": null, "number": "5"}]}, "address": "/Basic-Types/Bitvectors/"}], @@ -6854,12 +7712,12 @@ "data": {"title": "Bitvectors", "shortTitle": null, - "sectionNum": "18.5.", + "sectionNum": "19.5.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Bitvectors", "shortTitle": null, "number": "5"}]}, "address": "/Basic-Types/Bitvectors/"}], "Array": @@ -6867,3096 +7725,16875 @@ "data": {"title": "Arrays", "shortTitle": null, - "sectionNum": "18.16.", + "sectionNum": "19.16.", "context": [{"title": "The Lean Language Reference", "shortTitle": null, "number": null}, - {"title": "Basic Types", "shortTitle": null, "number": "18"}, + {"title": "Basic Types", "shortTitle": null, "number": "19"}, {"title": "Arrays", "shortTitle": null, "number": "16"}]}, - "address": "/Basic-Types/Arrays/"}]}}, + "address": "/Basic-Types/Arrays/"}], + "AddRightCancel": + [{"id": "AddRightCancel", + "data": + {"title": "Right-Cancellative Addition", + "shortTitle": null, + "sectionNum": "17.8.1.3.1.", + "context": + [{"title": "The Lean Language Reference", + "shortTitle": null, + "number": null}, + {"title": "The grind tactic", "shortTitle": null, "number": "17"}, + {"title": "Algebraic Solver (Commutative Rings, Fields)", + "shortTitle": null, + "number": "8"}, + {"title": "Solver Type Classes", "shortTitle": null, "number": "1"}, + {"title": "Natural Number Zero Divisors", + "shortTitle": null, + "number": "3"}, + {"title": "Right-Cancellative Addition", + "shortTitle": null, + "number": "1"}]}, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}]}}, "Verso.Genre.Manual.example": {"title": "Verso.Genre.Manual.example", "description": "Verso.Genre.Manual.example", "contents": - {"α": - [{"id": "___", - "data": null, + {"α (in Mutual Block Scope and Automatic Implicit Parameters)": + [{"id": + "___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "α", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}, + "/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_": + {"display": "α", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "___-next", - "data": null, + {"id": + "___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "α", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}, + "/Definitions/Recursive-Definitions/#___-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_": + {"display": "α", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "ys": - [{"id": "xs", - "data": null, + "ys (in Lazy Lists)": + [{"id": "ys-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#ys-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "ys", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "y.y": [{"id": "B", "data": null, "address": "/Terms/Identifiers/"}], - "y": - [{"id": "B", "data": null, "address": "/Terms/Identifiers/"}, - {"id": "y", "data": null, "address": "/Coercions/Coercing-to-Sorts/"}], - "xs": - [{"id": "xs", - "data": null, + "y.y (in Longer Identifier Prefixes Take Precedence)": + [{"id": "y___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#y___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_": + {"display": "y.y", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Identifier Prefixes Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "y (in Sort Coercions as Ordinary Coercions)": + [{"id": "y-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#y-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions as Ordinary Coercions"]}}, + "address": "/Coercions/Coercing-to-Sorts/"}], + "y (in Longer Identifier Prefixes Take Precedence)": + [{"id": "y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Identifier Prefixes Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "xs (in Lazy Lists)": + [{"id": "xs-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#xs-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "xs", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "x": - [{"id": "x-next-next", - "data": null, - "address": "/Coercions/Coercing-to-Sorts/"}, - {"id": "x", "data": null, "address": "/Namespaces-and-Sections/"}, - {"id": "x-next", "data": null, "address": "/Terms/Identifiers/"}], - "wednesday": - [{"id": "wednesday", - "data": null, + "x (in Sort Coercions as Ordinary Coercions)": + [{"id": "x-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#x-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions as Ordinary Coercions"]}}, + "address": "/Coercions/Coercing-to-Sorts/"}], + "x (in Opening Scoped Declarations)": + [{"id": "x-_LPAR_in-Opening-Scoped-Declarations_RPAR_", + "data": + {"/Namespaces-and-Sections/#x-_LPAR_in-Opening-Scoped-Declarations_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Scoped Declarations"]}}, + "address": "/Namespaces-and-Sections/"}], + "x (in Local Names Take Precedence)": + [{"id": "x-_LPAR_in-Local-Names-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#x-_LPAR_in-Local-Names-Take-Precedence_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Local Names Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "wednesday (in Implementing Coercions)": + [{"id": "wednesday-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#wednesday-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "wednesday", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "values": - [{"id": "main-next-next", - "data": null, + "values (in Monadic Collection Operations)": + [{"id": "values-_LPAR_in-Monadic-Collection-Operations_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/API-Reference/#values-_LPAR_in-Monadic-Collection-Operations_RPAR_": + {"display": "values", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "API Reference", + "Monadic Collection Operations"]}}, "address": "/Functors___-Monads-and--do--Notation/API-Reference/"}], - "unit_not_nat": - [{"id": "unit_not_nat", "data": null, "address": "/Axioms/"}], - "unexpandOne": - [{"id": "unexpandOne", - "data": null, + "useWitness (in Extracting the witness from an existential proof)": + [{"id": + "useWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_", + "data": + {"/Error-Explanations/lean___propRecLargeElim/#useWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_": + {"display": "useWitness", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.propRecLargeElim", + "Examples", + "Extracting the witness from an existential proof"]}}, + "address": "/Error-Explanations/lean___propRecLargeElim/"}], + "unit_not_nat (in Inconsistencies From Axioms)": + [{"id": "unit_not_nat-_LPAR_in-Inconsistencies-From-Axioms_RPAR_", + "data": + {"/Axioms/#unit_not_nat-_LPAR_in-Inconsistencies-From-Axioms_RPAR_": + {"display": "unit_not_nat", + "context": + ["The Lean Language Reference", + "Axioms", + "Consistency", + "Inconsistencies From Axioms"]}}, + "address": "/Axioms/"}], + "unexpandSolo (in Custom Unit Type)": + [{"id": "unexpandSolo-_LPAR_in-Custom-Unit-Type_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#unexpandSolo-_LPAR_in-Custom-Unit-Type_RPAR_": + {"display": "unexpandSolo", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Custom Unit Type"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "unexpandListCursor": - [{"id": "unexpandListCursor", - "data": null, + "unexpandListCursor (in Unexpansion and Arguments)": + [{"id": "unexpandListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#unexpandListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "unexpandListCursor", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "unFin_length_eq_length": - [{"id": "unFin_length_eq_length", - "data": null, + "unFin_length_eq_length (in Taking Advantage of Run-Time Representations)": + [{"id": + "unFin_length_eq_length-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#unFin_length_eq_length-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_": + {"display": "unFin_length_eq_length", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Taking Advantage of Run-Time Representations"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "unFinImpl": - [{"id": "unFin", - "data": null, + "unFinImpl (in Taking Advantage of Run-Time Representations)": + [{"id": + "unFinImpl-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#unFinImpl-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_": + {"display": "unFinImpl", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Taking Advantage of Run-Time Representations"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "unFin": - [{"id": "unFin", - "data": null, + "unFin (in Taking Advantage of Run-Time Representations)": + [{"id": + "unFin-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#unFin-_LPAR_in-Taking-Advantage-of-Run-Time-Representations_RPAR_": + {"display": "unFin", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Taking Advantage of Run-Time Representations"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "two_eq_five": - [{"id": "two_eq_five", "data": null, "address": "/Axioms/"}], - "twoHundredThirteen": - [{"id": "twoHundredThirteen", "data": null, "address": "/Coercions/"}], - "two''": - [{"id": "two______", - "data": null, + "two_eq_five (in Inconsistencies From Axioms)": + [{"id": "two_eq_five-_LPAR_in-Inconsistencies-From-Axioms_RPAR_", + "data": + {"/Axioms/#two_eq_five-_LPAR_in-Inconsistencies-From-Axioms_RPAR_": + {"display": "two_eq_five", + "context": + ["The Lean Language Reference", + "Axioms", + "Consistency", + "Inconsistencies From Axioms"]}}, + "address": "/Axioms/"}], + "twoHundredThirteen (in Defining Coercions: Decimal Numbers)": + [{"id": + "twoHundredThirteen-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_", + "data": + {"/Coercions/#twoHundredThirteen-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_": + {"display": "twoHundredThirteen", + "context": + ["The Lean Language Reference", + "Coercions", + "Defining Coercions: Decimal Numbers"]}}, + "address": "/Coercions/"}], + "two'' (in Updating arrays)": + [{"id": "two______-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#two______-_LPAR_in-Updating-arrays_RPAR_": + {"display": "two''", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "two'": - [{"id": "two______", - "data": null, + "two' (in Updating arrays)": + [{"id": "two___-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#two___-_LPAR_in-Updating-arrays_RPAR_": + {"display": "two'", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "two": - [{"id": "two______", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "two", "data": null, "address": "/The-Type-System/Functions/"}, - {"id": "EvenNumber", - "data": null, + "two (in Updating arrays)": + [{"id": "two-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#two-_LPAR_in-Updating-arrays_RPAR_": + {"display": "two", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "twice": - [{"id": "twice", - "data": null, + "two (in No structure subtyping)": + [{"id": "two-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#two-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "two", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "two (in Dependent Function Types)": + [{"id": "two-_LPAR_in-Dependent-Function-Types_RPAR_", + "data": + {"/The-Type-System/Functions/#two-_LPAR_in-Dependent-Function-Types_RPAR_": + {"display": "two", + "context": + ["The Lean Language Reference", + "The Type System", + "Functions", + "Dependent Function Types"]}}, + "address": "/The-Type-System/Functions/"}], + "twice (in Duplicate Evaluation in Coercions)": + [{"id": "twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_": + {"display": "twice", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Duplicate Evaluation in Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "truth_functional_imp": - [{"id": "truth_functional_imp", - "data": null, + "truth_functional_imp (in Truth-Functional Implication)": + [{"id": + "truth_functional_imp-_LPAR_in-Truth-Functional-Implication_RPAR_", + "data": + {"/Basic-Propositions/Logical-Connectives/#truth_functional_imp-_LPAR_in-Truth-Functional-Implication_RPAR_": + {"display": "truth_functional_imp", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Logical Connectives", + "Truth-Functional Implication"]}}, "address": "/Basic-Propositions/Logical-Connectives/"}], - "tomorrow": - [{"id": "tomorrow", - "data": null, + "trig_identity": + [{"id": "trig_identity", + "data": + {"/The--grind--tactic/Bigger-Examples/#trig_identity": + {"display": "trig_identity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "Integrating grind 's Features"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "transformIfZero (in Necessarily noncomputable function not appropriately marked)": + [{"id": + "transformIfZero-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#transformIfZero-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_": + {"display": "transformIfZero", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Necessarily noncomputable function not appropriately marked"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}], + "transform (in Necessarily noncomputable function not appropriately marked)": + [{"id": + "transform-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#transform-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_-next": + {"display": "transform", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Necessarily noncomputable function not appropriately marked"]}, + "/Error-Explanations/lean___dependsOnNoncomputable/#transform-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_": + {"display": "transform", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Necessarily noncomputable function not appropriately marked"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}, + {"id": + "transform-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_-next", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#transform-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_-next": + {"display": "transform", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Necessarily noncomputable function not appropriately marked"]}, + "/Error-Explanations/lean___dependsOnNoncomputable/#transform-_LPAR_in-Necessarily-noncomputable-function-not-appropriately-marked_RPAR_": + {"display": "transform", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Necessarily noncomputable function not appropriately marked"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}], + "tomorrow (in Controlling Evaluation with Coercions)": + [{"id": "tomorrow-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#tomorrow-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_": + {"display": "tomorrow", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Controlling Evaluation with Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "toInt_sound": - [{"id": "toInt_sound", - "data": null, + "toInt_sound (in Built-In Integers as Quotients)": + [{"id": "toInt_sound-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#toInt_sound-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_": + {"display": "toInt_sound", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Built-In Integers as Quotients"]}}, "address": "/The-Type-System/Quotients/"}], - "toInt": - [{"id": "toInt", "data": null, "address": "/The-Type-System/Quotients/"}], - "toAcademicWork": - [{"id": "toAcademicWork", - "data": null, + "toInt (in Built-In Integers as Quotients)": + [{"id": "toInt-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#toInt-_LPAR_in-Built-In-Integers-as-Quotients_RPAR_": + {"display": "toInt", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Built-In Integers as Quotients"]}}, + "address": "/The-Type-System/Quotients/"}], + "toAcademicWork (in Structure type inheritance with overlapping fields)": + [{"id": + "toAcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#toAcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "toAcademicWork", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "thirdOfFive": - [{"id": "thirdOfFive", - "data": null, + "thirdOfFive (in Equational Lemmas)": + [{"id": "thirdOfFive-_LPAR_in-Equational-Lemmas_RPAR_", + "data": + {"/Elaboration-and-Compilation/#thirdOfFive-_LPAR_in-Equational-Lemmas_RPAR_": + {"display": "thirdOfFive", + "context": + ["The Lean Language Reference", + "Elaboration and Compilation", + "Elaboration Results", + "Equational Lemmas"]}}, "address": "/Elaboration-and-Compilation/"}], - "thirdChar": - [{"id": "thirdChar", - "data": null, + "thirdChar (in Panic)": + [{"id": "thirdChar-_LPAR_in-Panic_RPAR_", + "data": + {"/The-Type-System/Functions/#thirdChar-_LPAR_in-Panic_RPAR_": + {"display": "thirdChar", + "context": + ["The Lean Language Reference", + "The Type System", + "Functions", + "Totality and Termination", + "Panic"]}}, "address": "/The-Type-System/Functions/"}], - "the": [{"id": "the", "data": null, "address": "/Terms/Holes/"}], - "th": [{"id": "th", "data": null, "address": "/Coercions/"}], - "test": - [{"id": "test", - "data": null, + "the (in Filling Holes with Unification)": + [{"id": "the-_LPAR_in-Filling-Holes-with-Unification_RPAR_", + "data": + {"/Terms/Holes/#the-_LPAR_in-Filling-Holes-with-Unification_RPAR_": + {"display": "the", + "context": + ["The Lean Language Reference", + "Terms", + "Holes", + "Filling Holes with Unification"]}}, + "address": "/Terms/Holes/"}], + "th (in Coercions)": + [{"id": "th-_LPAR_in-Coercions_RPAR_", + "data": + {"/Coercions/#th-_LPAR_in-Coercions_RPAR_": + {"display": "th", + "context": + ["The Lean Language Reference", "Coercions", "Coercions"]}}, + "address": "/Coercions/"}], + "test (in Nested do and Branches)": + [{"id": "test-_LPAR_in-Nested--do--and-Branches_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#test-_LPAR_in-Nested--do--and-Branches_RPAR_": + {"display": "test", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "do -Notation", + "Identifying do Blocks", + "Nested do and Branches"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], - "ten": [{"id": "ten", "data": null, "address": "/Basic-Types/Arrays/"}], - "tally_eq_add": - [{"id": "tally_eq_add-next", - "data": null, + "ten (in Sub-Array Syntax)": + [{"id": "ten-_LPAR_in-Sub-Array-Syntax_RPAR_", + "data": + {"/Basic-Types/Arrays/#ten-_LPAR_in-Sub-Array-Syntax_RPAR_": + {"display": "ten", + "context": + ["The Lean Language Reference", + "Basic Types", + "Arrays", + "Syntax", + "Sub-Array Syntax"]}}, + "address": "/Basic-Types/Arrays/"}], + "tally_eq_add (in Reducibility and Tactics)": + [{"id": "tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "tally_eq_add-next-next", - "data": null, + {"id": "tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next", + "data": + {"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "tally_eq_add", - "data": null, + {"id": "tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next-next": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#tally_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "tally_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "tally": - [{"id": "tally", - "data": null, + "tally (in Reducibility and Tactics)": + [{"id": "tally-_LPAR_in-Reducibility-and-Tactics_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#tally-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "tally", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "synack": - [{"id": "synack", - "data": null, + "synack (in No Backtracking of Lexicographic Order)": + [{"id": "synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_-next": + {"display": "synack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Default Termination Proof Tactic", + "No Backtracking of Lexicographic Order"]}, + "/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_": + {"display": "synack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Default Termination Proof Tactic", + "No Backtracking of Lexicographic Order"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "synack-next", - "data": null, + {"id": + "synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_-next": + {"display": "synack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Default Termination Proof Tactic", + "No Backtracking of Lexicographic Order"]}, + "/Definitions/Recursive-Definitions/#synack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_": + {"display": "synack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Default Termination Proof Tactic", + "No Backtracking of Lexicographic Order"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "sweetPotato": - [{"id": "sweetPotato", - "data": null, + "sweetPotato (in Using Ord Instances for LT and LE Instances)": + [{"id": + "sweetPotato-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_", + "data": + {"/Type-Classes/Basic-Classes/#sweetPotato-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_": + {"display": "sweetPotato", + "context": + ["The Lean Language Reference", + "Type Classes", + "Basic Classes", + "Ordering", + "Using Ord Instances for LT and LE Instances"]}}, "address": "/Type-Classes/Basic-Classes/"}], - "swap_eq_swap'": - [{"id": "swap_eq_swap___", - "data": null, + "swap_swap_eq_id' (in The @[grind ext] Attribute)": + [{"id": + "swap_swap_eq_id___-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#swap_swap_eq_id___-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_": + {"display": "swap_swap_eq_id'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ext] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "swap_swap_eq_id (in The @[grind ext] Attribute)": + [{"id": + "swap_swap_eq_id-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#swap_swap_eq_id-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_": + {"display": "swap_swap_eq_id", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ext] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "swap_eq_swap' (in Printing Axioms)": + [{"id": "swap_eq_swap___-_LPAR_in-Printing-Axioms_RPAR_", + "data": + {"/Interacting-with-Lean/#swap_eq_swap___-_LPAR_in-Printing-Axioms_RPAR_": + {"display": "swap_eq_swap'", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Querying the Context", + "Printing Axioms"]}}, "address": "/Interacting-with-Lean/"}], - "swap'": - [{"id": "swap", "data": null, "address": "/Interacting-with-Lean/"}], - "swap": - [{"id": "swap", "data": null, "address": "/Interacting-with-Lean/"}], - "sum_eq_add": - [{"id": "sum_eq_add-next", - "data": null, + "swap' (in Printing Axioms)": + [{"id": "swap___-_LPAR_in-Printing-Axioms_RPAR_", + "data": + {"/Interacting-with-Lean/#swap___-_LPAR_in-Printing-Axioms_RPAR_": + {"display": "swap'", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Querying the Context", + "Printing Axioms"]}}, + "address": "/Interacting-with-Lean/"}], + "swap (in Printing Axioms)": + [{"id": "swap-_LPAR_in-Printing-Axioms_RPAR_", + "data": + {"/Interacting-with-Lean/#swap-_LPAR_in-Printing-Axioms_RPAR_": + {"display": "swap", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Querying the Context", + "Printing Axioms"]}}, + "address": "/Interacting-with-Lean/"}], + "sum_eq_add (in Reducibility and Tactics)": + [{"id": "sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next": + {"display": "sum_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "sum_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "sum_eq_add", - "data": null, + {"id": "sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_-next": + {"display": "sum_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}, + "/Definitions/Recursive-Definitions/#sum_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "sum_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "sumUntilFive": - [{"id": "sumUntilFive", - "data": null, + "sumUntilFive (in Effect Ordering)": + [{"id": "sumUntilFive-_LPAR_in-Effect-Ordering_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#sumUntilFive-_LPAR_in-Effect-Ordering_RPAR_": + {"display": "sumUntilFive", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Varieties of Monads", + "Monad Type Classes", + "Effect Ordering"]}}, "address": "/Functors___-Monads-and--do--Notation/Varieties-of-Monads/"}], - "sumNonFives": - [{"id": "sumNonFives", - "data": null, + "sumNonFives (in Effect Ordering)": + [{"id": "sumNonFives-_LPAR_in-Effect-Ordering_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#sumNonFives-_LPAR_in-Effect-Ordering_RPAR_": + {"display": "sumNonFives", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Varieties of Monads", + "Monad Type Classes", + "Effect Ordering"]}}, "address": "/Functors___-Monads-and--do--Notation/Varieties-of-Monads/"}], - "sum3": - [{"id": "sum3", "data": null, "address": "/Terms/Function-Application/"}], - "sum": - [{"id": "tally", - "data": null, + "sum3 (in Named Arguments)": + [{"id": "sum3-_LPAR_in-Named-Arguments_RPAR_", + "data": + {"/Terms/Function-Application/#sum3-_LPAR_in-Named-Arguments_RPAR_": + {"display": "sum3", + "context": + ["The Lean Language Reference", + "Terms", + "Function Application", + "Named Arguments"]}}, + "address": "/Terms/Function-Application/"}], + "sum (in Reducibility and Tactics)": + [{"id": "sum-_LPAR_in-Reducibility-and-Tactics_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#sum-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "sum", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}], "succ_not_zero": - [{"id": "NoConfusion", - "data": null, + [{"id": "succ_not_zero", + "data": + {"/Basic-Types/Natural-Numbers/#succ_not_zero": + {"display": "succ_not_zero", + "context": + ["The Lean Language Reference", + "Basic Types", + "Natural Numbers", + "Logical Model", + "Peano Axioms"]}}, "address": "/Basic-Types/Natural-Numbers/"}], "succ_injective": - [{"id": "NoConfusion", - "data": null, + [{"id": "succ_injective", + "data": + {"/Basic-Types/Natural-Numbers/#succ_injective": + {"display": "succ_injective", + "context": + ["The Lean Language Reference", + "Basic Types", + "Natural Numbers", + "Logical Model", + "Peano Axioms"]}}, "address": "/Basic-Types/Natural-Numbers/"}], - "succ": - [{"id": "succ", - "data": null, + "succ (in Coercing Decorated Functions to Function Types)": + [{"id": + "succ-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#succ-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "sub'": - [{"id": "sub___", - "data": null, + "sub' (in Controlling Coercion Insertion)": + [{"id": "sub___-_LPAR_in-Controlling-Coercion-Insertion_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#sub___-_LPAR_in-Controlling-Coercion-Insertion_RPAR_": + {"display": "sub'", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Controlling Coercion Insertion"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "sub": - [{"id": "sub", - "data": null, + "sub (in Controlling Coercion Insertion)": + [{"id": "sub-_LPAR_in-Controlling-Coercion-Insertion_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#sub-_LPAR_in-Controlling-Coercion-Insertion_RPAR_": + {"display": "sub", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Controlling Coercion Insertion"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "stringWriter": - [{"id": "Writer___write", - "data": null, + "stringWriter (in Dependent Coercion to Functions)": + [{"id": "stringWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#stringWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_": + {"display": "stringWriter", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Dependent Coercion to Functions"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], "str2": - [{"id": "str2", "data": null, "address": "/Basic-Types/Strings/"}], + [{"id": "str2", + "data": + {"/Basic-Types/Strings/#str2": + {"display": "str2", + "context": + ["The Lean Language Reference", + "Basic Types", + "Strings", + "Syntax", + "String Literals"]}}, + "address": "/Basic-Types/Strings/"}], "str1": - [{"id": "str2", "data": null, "address": "/Basic-Types/Strings/"}], - "split''": - [{"id": "split______", - "data": null, + [{"id": "str1", + "data": + {"/Basic-Types/Strings/#str1": + {"display": "str1", + "context": + ["The Lean Language Reference", + "Basic Types", + "Strings", + "Syntax", + "String Literals"]}}, + "address": "/Basic-Types/Strings/"}], + "str (in Newline Characters in Strings)": + [{"id": "str-_LPAR_in-Newline-Characters-in-Strings_RPAR_", + "data": + {"/Interacting-with-Lean/#str-_LPAR_in-Newline-Characters-in-Strings_RPAR_": + {"display": "str", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Newline Characters in Strings"]}}, + "address": "/Interacting-with-Lean/"}], + "split'' (in Pattern Matching and Lists)": + [{"id": "split______-_LPAR_in-Pattern-Matching-and-Lists_RPAR_", + "data": + {"/Basic-Types/Linked-Lists/#split______-_LPAR_in-Pattern-Matching-and-Lists_RPAR_": + {"display": "split''", + "context": + ["The Lean Language Reference", + "Basic Types", + "Linked Lists", + "Syntax", + "Pattern Matching and Lists"]}}, "address": "/Basic-Types/Linked-Lists/"}], - "split'": - [{"id": "split___", - "data": null, + "split' (in Pattern Matching and Lists)": + [{"id": "split___-_LPAR_in-Pattern-Matching-and-Lists_RPAR_", + "data": + {"/Basic-Types/Linked-Lists/#split___-_LPAR_in-Pattern-Matching-and-Lists_RPAR_": + {"display": "split'", + "context": + ["The Lean Language Reference", + "Basic Types", + "Linked Lists", + "Syntax", + "Pattern Matching and Lists"]}}, "address": "/Basic-Types/Linked-Lists/"}], - "split": - [{"id": "split-next", - "data": null, + "split (in Pattern Matching and Lists)": + [{"id": "split-_LPAR_in-Pattern-Matching-and-Lists_RPAR_", + "data": + {"/Basic-Types/Linked-Lists/#split-_LPAR_in-Pattern-Matching-and-Lists_RPAR_": + {"display": "split", + "context": + ["The Lean Language Reference", + "Basic Types", + "Linked Lists", + "Syntax", + "Pattern Matching and Lists"]}}, "address": "/Basic-Types/Linked-Lists/"}], - "select": - [{"id": "select-next", - "data": null, + "sin": + [{"id": "sin", + "data": + {"/The--grind--tactic/Bigger-Examples/#sin": + {"display": "sin", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "Integrating grind 's Features"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "select (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)": + [{"id": + "select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next", + "data": + {"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "select", - "data": null, + {"id": + "select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next", + "data": + {"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "select-next-next", - "data": null, + {"id": + "select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "select-next-next-next", - "data": null, + {"id": + "select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next", + "data": + {"/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#select-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "select", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "satisfyingIndices": - [{"id": "satisfyingIndices", - "data": null, + "seconds (in Incorrect ordering of pattern matches)": + [{"id": "seconds-_LPAR_in-Incorrect-ordering-of-pattern-matches_RPAR_", + "data": + {"/Error-Explanations/lean___redundantMatchAlt/#seconds-_LPAR_in-Incorrect-ordering-of-pattern-matches_RPAR_-next": + {"display": "seconds", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.redundantMatchAlt", + "Examples", + "Incorrect ordering of pattern matches"]}, + "/Error-Explanations/lean___redundantMatchAlt/#seconds-_LPAR_in-Incorrect-ordering-of-pattern-matches_RPAR_": + {"display": "seconds", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.redundantMatchAlt", + "Examples", + "Incorrect ordering of pattern matches"]}}, + "address": "/Error-Explanations/lean___redundantMatchAlt/"}, + {"id": + "seconds-_LPAR_in-Incorrect-ordering-of-pattern-matches_RPAR_-next", + "data": + {"/Error-Explanations/lean___redundantMatchAlt/#seconds-_LPAR_in-Incorrect-ordering-of-pattern-matches_RPAR_-next": + {"display": "seconds", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.redundantMatchAlt", + "Examples", + "Incorrect ordering of pattern matches"]}, + "/Error-Explanations/lean___redundantMatchAlt/#seconds-_LPAR_in-Incorrect-ordering-of-pattern-matches_RPAR_": + {"display": "seconds", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.redundantMatchAlt", + "Examples", + "Incorrect ordering of pattern matches"]}}, + "address": "/Error-Explanations/lean___redundantMatchAlt/"}], + "satisfyingIndices (in Iteration over Array Indices with for)": + [{"id": + "satisfyingIndices-_LPAR_in-Iteration-over-Array-Indices-with--for_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#satisfyingIndices-_LPAR_in-Iteration-over-Array-Indices-with--for_RPAR_": + {"display": "satisfyingIndices", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "do -Notation", + "Iteration", + "Iteration over Array Indices with for"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], - "s2": - [{"id": "NonEmptyString", - "data": null, - "address": "/Basic-Types/Subtypes/"}, - {"id": "NonEmptyString-next", - "data": null, + "s_eq (in Too Many Instances)": + [{"id": "s_eq-_LPAR_in-Too-Many-Instances_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#s_eq-_LPAR_in-Too-Many-Instances_RPAR_": + {"display": "s_eq", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Resource Limits", + "Too Many Instances"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "s2 (in Extensional Equality of Subtypes)": + [{"id": "s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_": + {"display": "s2", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Extensional Equality of Subtypes"]}}, "address": "/Basic-Types/Subtypes/"}], - "s1_eq_s2": - [{"id": "NonEmptyString", - "data": null, - "address": "/Basic-Types/Subtypes/"}, - {"id": "NonEmptyString-next", - "data": null, + "s2 (in Definitional Equality of Subtypes)": + [{"id": "s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_": + {"display": "s2", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Definitional Equality of Subtypes"]}}, "address": "/Basic-Types/Subtypes/"}], - "s1": - [{"id": "NonEmptyString", - "data": null, - "address": "/Basic-Types/Subtypes/"}, - {"id": "NonEmptyString-next", - "data": null, + "s1_eq_s2 (in Extensional Equality of Subtypes)": + [{"id": "s1_eq_s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#s1_eq_s2-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_": + {"display": "s1_eq_s2", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Extensional Equality of Subtypes"]}}, "address": "/Basic-Types/Subtypes/"}], - "runCountdown": - [{"id": "runCountdown", - "data": null, + "s1_eq_s2 (in Definitional Equality of Subtypes)": + [{"id": "s1_eq_s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#s1_eq_s2-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_": + {"display": "s1_eq_s2", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Definitional Equality of Subtypes"]}}, + "address": "/Basic-Types/Subtypes/"}], + "s1 (in Extensional Equality of Subtypes)": + [{"id": "s1-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#s1-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_": + {"display": "s1", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Extensional Equality of Subtypes"]}}, + "address": "/Basic-Types/Subtypes/"}], + "s1 (in Definitional Equality of Subtypes)": + [{"id": "s1-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#s1-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_": + {"display": "s1", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Definitional Equality of Subtypes"]}}, + "address": "/Basic-Types/Subtypes/"}], + "s (in Too Many Instances)": + [{"id": "s-_LPAR_in-Too-Many-Instances_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#s-_LPAR_in-Too-Many-Instances_RPAR_": + {"display": "s", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Resource Limits", + "Too Many Instances"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "runCountdown (in Redirecting Standard I/O to Strings)": + [{"id": + "runCountdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_", + "data": + {"/IO/Files___-File-Handles___-and-Streams/#runCountdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_": + {"display": "runCountdown", + "context": + ["The Lean Language Reference", + "IO", + "Files, File Handles, and Streams", + "Standard I/O", + "Redirecting Standard I/O to Strings"]}}, "address": "/IO/Files___-File-Handles___-and-Streams/"}], - "root": - [{"id": "Username___validate", - "data": null, + "root (in Generalized Field Notation)": + [{"id": "root-_LPAR_in-Generalized-Field-Notation_RPAR_", + "data": + {"/Terms/Function-Application/#root-_LPAR_in-Generalized-Field-Notation_RPAR_": + {"display": "root", + "context": + ["The Lean Language Reference", + "Terms", + "Function Application", + "Generalized Field Notation", + "Generalized Field Notation"]}}, "address": "/Terms/Function-Application/"}], - "reverse": - [{"id": "reverse", "data": null, "address": "/Interacting-with-Lean/"}], - "repeatAccessControl": - [{"id": "main-next-next-next", - "data": null, + "reverseDuplicate (in Insufficient type information)": + [{"id": "reverseDuplicate-_LPAR_in-Insufficient-type-information_RPAR_", + "data": + {"/Error-Explanations/lean___invalidDottedIdent/#reverseDuplicate-_LPAR_in-Insufficient-type-information_RPAR_": + {"display": "reverseDuplicate", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.invalidDottedIdent", + "Examples", + "Insufficient type information"]}}, + "address": "/Error-Explanations/lean___invalidDottedIdent/"}], + "reverse (in Testing Return Values)": + [{"id": "reverse-_LPAR_in-Testing-Return-Values_RPAR_", + "data": + {"/Interacting-with-Lean/#reverse-_LPAR_in-Testing-Return-Values_RPAR_": + {"display": "reverse", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Testing Output with #guard_msgs", + "Testing Return Values"]}}, + "address": "/Interacting-with-Lean/"}], + "repeatAccessControl (in Throwing and Catching Errors)": + [{"id": "repeatAccessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_", + "data": + {"/IO/Logical-Model/#repeatAccessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_": + {"display": "repeatAccessControl", + "context": + ["The Lean Language Reference", + "IO", + "Logical Model", + "Errors and Error Handling in IO", + "Throwing and Catching Errors"]}}, "address": "/IO/Logical-Model/"}], - "removeSourceInfo": - [{"id": "removeSourceInfo", - "data": null, + "removeSourceInfo (in Representing Syntax as Constructors)": + [{"id": + "removeSourceInfo-_LPAR_in-Representing-Syntax-as-Constructors_RPAR_", + "data": + {"/Notations-and-Macros/Defining-New-Syntax/#removeSourceInfo-_LPAR_in-Representing-Syntax-as-Constructors_RPAR_": + {"display": "removeSourceInfo", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Defining New Syntax", + "Inspecting Syntax", + "Representing Syntax as Constructors"]}}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], - "process'": - [{"id": "process___", - "data": null, + "red (in Missing namespace)": + [{"id": "red-_LPAR_in-Missing-namespace_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "red-_LPAR_in-Missing-namespace_RPAR_", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "red-_LPAR_in-Missing-namespace_RPAR_-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#red-_LPAR_in-Missing-namespace_RPAR_": + {"display": "red", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "q (in Forward Pattern Generation)": + [{"id": "q-_LPAR_in-Forward-Pattern-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#q-_LPAR_in-Forward-Pattern-Generation_RPAR_": + {"display": "q", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Forward Pattern Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "process' (in Reference Counts in IR)": + [{"id": "process___-_LPAR_in-Reference-Counts-in-IR_RPAR_", + "data": + {"/Run-Time-Code/Reference-Counting/#process___-_LPAR_in-Reference-Counts-in-IR_RPAR_": + {"display": "process'", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Compiler IR", + "Reference Counts in IR"]}}, "address": "/Run-Time-Code/Reference-Counting/"}], - "process": - [{"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Run-Time-Code/Reference-Counting/"}, - {"id": "process", - "data": null, + "process (in Reference Counts in IR)": + [{"id": "process-_LPAR_in-Reference-Counts-in-IR_RPAR_", + "data": + {"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Reference-Counts-in-IR_RPAR_": + {"display": "process", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Compiler IR", + "Reference Counts in IR"]}}, + "address": "/Run-Time-Code/Reference-Counting/"}], + "process (in Observing Uniqueness)": + [{"id": "process-_LPAR_in-Observing-Uniqueness_RPAR_", + "data": + {"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_-next": + {"display": "process", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}, + "/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_": + {"display": "process", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}}, "address": "/Run-Time-Code/Reference-Counting/"}, - {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, + {"id": "process-_LPAR_in-Observing-Uniqueness_RPAR_-next", + "data": + {"/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_-next": + {"display": "process", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}, + "/Run-Time-Code/Reference-Counting/#process-_LPAR_in-Observing-Uniqueness_RPAR_": + {"display": "process", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}}, "address": "/Run-Time-Code/Reference-Counting/"}], - "printEven": - [{"id": "EvenNumber", - "data": null, + "printEven (in No structure subtyping)": + [{"id": "printEven-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#printEven-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "printEven", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "postalCodes": - [{"id": "postalCodes", - "data": null, + "postalCodes (in Options as Safe Nullability)": + [{"id": "postalCodes-_LPAR_in-Options-as-Safe-Nullability_RPAR_", + "data": + {"/Basic-Types/Optional-Values/#postalCodes-_LPAR_in-Options-as-Safe-Nullability_RPAR_": + {"display": "postalCodes", + "context": + ["The Lean Language Reference", + "Basic Types", + "Optional Values", + "Options as Safe Nullability"]}}, "address": "/Basic-Types/Optional-Values/"}], - "pos0": - [{"id": "neg0", - "data": null, + "pos0 (in Floating-Point Equality Is Not a Congruence)": + [{"id": "pos0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_", + "data": + {"/Basic-Types/Floating-Point-Numbers/#pos0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_": + {"display": "pos0", + "context": + ["The Lean Language Reference", + "Basic Types", + "Floating-Point Numbers", + "Floating-Point Equality Is Not a Congruence"]}}, "address": "/Basic-Types/Floating-Point-Numbers/"}], - "popcount_spec": - [{"id": "popcount_spec", - "data": null, + "popcount_spec (in Popcount)": + [{"id": "popcount_spec-_LPAR_in-Popcount_RPAR_", + "data": + {"/Basic-Types/Bitvectors/#popcount_spec-_LPAR_in-Popcount_RPAR_": + {"display": "popcount_spec", + "context": + ["The Lean Language Reference", + "Basic Types", + "Bitvectors", + "Automation", + "Popcount"]}}, "address": "/Basic-Types/Bitvectors/"}], - "popcount_correct": - [{"id": "popcount_correct", - "data": null, + "popcount_correct (in Popcount)": + [{"id": "popcount_correct-_LPAR_in-Popcount_RPAR_", + "data": + {"/Basic-Types/Bitvectors/#popcount_correct-_LPAR_in-Popcount_RPAR_": + {"display": "popcount_correct", + "context": + ["The Lean Language Reference", + "Basic Types", + "Bitvectors", + "Automation", + "Popcount"]}}, "address": "/Basic-Types/Bitvectors/"}], - "popcount": - [{"id": "popcount", "data": null, "address": "/Basic-Types/Bitvectors/"}], - "plus_eq_add": - [{"id": "plus_eq_add", - "data": null, + "popcount (in Popcount)": + [{"id": "popcount-_LPAR_in-Popcount_RPAR_", + "data": + {"/Basic-Types/Bitvectors/#popcount-_LPAR_in-Popcount_RPAR_": + {"display": "popcount", + "context": + ["The Lean Language Reference", + "Basic Types", + "Bitvectors", + "Automation", + "Popcount"]}}, + "address": "/Basic-Types/Bitvectors/"}], + "plus_eq_add (in Reducibility and Tactics)": + [{"id": "plus_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#plus_eq_add-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "plus_eq_add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "plusTimes2": - [{"id": "AddMul", - "data": null, + "plusTwo (in Uninferred binder type due to resulting type annotation)": + [{"id": + "plusTwo-_LPAR_in-Uninferred-binder-type-due-to-resulting-type-annotation_RPAR_-next", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#plusTwo-_LPAR_in-Uninferred-binder-type-due-to-resulting-type-annotation_RPAR_-next": + {"display": "plusTwo", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Uninferred binder type due to resulting type annotation"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#plusTwo-_LPAR_in-Uninferred-binder-type-due-to-resulting-type-annotation_RPAR_": + {"display": "plusTwo", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Uninferred binder type due to resulting type annotation"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}, + {"id": + "plusTwo-_LPAR_in-Uninferred-binder-type-due-to-resulting-type-annotation_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#plusTwo-_LPAR_in-Uninferred-binder-type-due-to-resulting-type-annotation_RPAR_-next": + {"display": "plusTwo", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Uninferred binder type due to resulting type annotation"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#plusTwo-_LPAR_in-Uninferred-binder-type-due-to-resulting-type-annotation_RPAR_": + {"display": "plusTwo", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Uninferred binder type due to resulting type annotation"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "plusTimes2 (in Class Abbreviations)": + [{"id": "plusTimes2-_LPAR_in-Class-Abbreviations_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#plusTimes2-_LPAR_in-Class-Abbreviations_RPAR_": + {"display": "plusTimes2", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class Abbreviations", + "Class Abbreviations"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "plusTimes1": - [{"id": "AddMul", - "data": null, + "plusTimes1 (in Class Abbreviations)": + [{"id": "plusTimes1-_LPAR_in-Class-Abbreviations_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#plusTimes1-_LPAR_in-Class-Abbreviations_RPAR_": + {"display": "plusTimes1", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class Abbreviations", + "Class Abbreviations"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "plus": - [{"id": "tally", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "plus", - "data": null, + "plus (in Reducibility and Tactics)": + [{"id": "plus-_LPAR_in-Reducibility-and-Tactics_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#plus-_LPAR_in-Reducibility-and-Tactics_RPAR_": + {"display": "plus", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Tactics", + "Reducibility and Tactics"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "plus (in Coercing to Function Types)": + [{"id": "plus-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#plus-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "plus", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "perhapsFactorial": - [{"id": "fact", - "data": null, + "perhapsFactorial (in Custom Operators in Lean's Output)": + [{"id": + "perhapsFactorial-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_", + "data": + {"/Notations-and-Macros/Custom-Operators/#perhapsFactorial-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_": + {"display": "perhapsFactorial", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Custom Operators", + "Custom Operators in Lean's Output"]}}, "address": "/Notations-and-Macros/Custom-Operators/"}], - "p_all": - [{"id": "p_all-next-next", - "data": null, + "parenSeq (in Widths and Newlines)": + [{"id": "parenSeq-_LPAR_in-Widths-and-Newlines_RPAR_", + "data": + {"/Interacting-with-Lean/#parenSeq-_LPAR_in-Widths-and-Newlines_RPAR_": + {"display": "parenSeq", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Widths and Newlines"]}}, + "address": "/Interacting-with-Lean/"}], + "parenSeq (in Grouping and Filling)": + [{"id": "parenSeq-_LPAR_in-Grouping-and-Filling_RPAR_", + "data": + {"/Interacting-with-Lean/#parenSeq-_LPAR_in-Grouping-and-Filling_RPAR_": + {"display": "parenSeq", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Grouping and Filling"]}}, + "address": "/Interacting-with-Lean/"}], + "p_all (in Included and Omitted Section Variables)": + [{"id": "p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_", + "data": + {"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}, + "/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}, + "/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}}, "address": "/Namespaces-and-Sections/"}, - {"id": "p_all-next", - "data": null, + {"id": + "p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next", + "data": + {"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}, + "/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}, + "/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}}, "address": "/Namespaces-and-Sections/"}, - {"id": "p_all", "data": null, "address": "/Namespaces-and-Sections/"}], - "oneTwoThree'": - [{"id": "oneTwoThree___", - "data": null, + {"id": + "p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next", + "data": + {"/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next-next": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}, + "/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_-next": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}, + "/Namespaces-and-Sections/#p_all-_LPAR_in-Included-and-Omitted-Section-Variables_RPAR_": + {"display": "p_all", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Included and Omitted Section Variables"]}}, + "address": "/Namespaces-and-Sections/"}], + "p (in Forward Pattern Generation)": + [{"id": "p-_LPAR_in-Forward-Pattern-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#p-_LPAR_in-Forward-Pattern-Generation_RPAR_": + {"display": "p", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Forward Pattern Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "oneTwoThree' (in Anonymous constructors)": + [{"id": "oneTwoThree___-_LPAR_in-Anonymous-constructors_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#oneTwoThree___-_LPAR_in-Anonymous-constructors_RPAR_": + {"display": "oneTwoThree'", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Anonymous Constructor Syntax", + "Anonymous constructors"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "oneTwoThree": - [{"id": "oneTwoThree-next-next", - "data": null, - "address": "/Basic-Types/Arrays/"}, - {"id": "oneTwoThree-next", - "data": null, - "address": "/Coercions/Coercing-Between-Types/"}, - {"id": "oneTwoThree", - "data": null, + "oneTwoThree (in Dependent Coercion)": + [{"id": "oneTwoThree-_LPAR_in-Dependent-Coercion_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#oneTwoThree-_LPAR_in-Dependent-Coercion_RPAR_": + {"display": "oneTwoThree", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Dependent Coercion"]}}, + "address": "/Coercions/Coercing-Between-Types/"}], + "oneTwoThree (in Array Literals)": + [{"id": "oneTwoThree-_LPAR_in-Array-Literals_RPAR_", + "data": + {"/Basic-Types/Arrays/#oneTwoThree-_LPAR_in-Array-Literals_RPAR_": + {"display": "oneTwoThree", + "context": + ["The Lean Language Reference", + "Basic Types", + "Arrays", + "Syntax", + "Array Literals"]}}, + "address": "/Basic-Types/Arrays/"}], + "oneTwoThree (in Anonymous constructors)": + [{"id": "oneTwoThree-_LPAR_in-Anonymous-constructors_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#oneTwoThree-_LPAR_in-Anonymous-constructors_RPAR_": + {"display": "oneTwoThree", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Anonymous Constructor Syntax", + "Anonymous constructors"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "one": - [{"id": "twoHundredThirteen", "data": null, "address": "/Coercions/"}, - {"id": "two______", - "data": null, + "one (in Updating arrays)": + [{"id": "one-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#one-_LPAR_in-Updating-arrays_RPAR_": + {"display": "one", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ofNatEvenPlusTwo": - [{"id": "ofNatEvenPlusTwo", - "data": null, + "one (in Defining Coercions: Decimal Numbers)": + [{"id": "one-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_", + "data": + {"/Coercions/#one-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_": + {"display": "one", + "context": + ["The Lean Language Reference", + "Coercions", + "Defining Coercions: Decimal Numbers"]}}, + "address": "/Coercions/"}], + "ofNatEvenPlusTwo (in Default Instances)": + [{"id": "ofNatEvenPlusTwo-_LPAR_in-Default-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#ofNatEvenPlusTwo-_LPAR_in-Default-Instances_RPAR_": + {"display": "ofNatEvenPlusTwo", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Default Instances", + "Default Instances"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "ofNatEven0": - [{"id": "ofNatEvenPlusTwo", - "data": null, + "ofNatEven0 (in Default Instances)": + [{"id": "ofNatEven0-_LPAR_in-Default-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#ofNatEven0-_LPAR_in-Default-Instances_RPAR_": + {"display": "ofNatEven0", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Default Instances", + "Default Instances"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "odd": - [{"id": "odd", - "data": null, + "odd (in Mutual Structural Recursion Over Non-Mutual Types)": + [{"id": + "odd-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#odd-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_": + {"display": "odd", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Non-Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "observe": - [{"id": "observe", - "data": null, + "observe (in Lazy Lists)": + [{"id": "observe-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#observe-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "observe", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "notInductive": - [{"id": "notInductive", - "data": null, + "nums (in Grouping and Filling)": + [{"id": "nums-_LPAR_in-Grouping-and-Filling_RPAR_", + "data": + {"/Interacting-with-Lean/#nums-_LPAR_in-Grouping-and-Filling_RPAR_": + {"display": "nums", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Grouping and Filling"]}}, + "address": "/Interacting-with-Lean/"}], + "notInductive (in Ineligible decreasing parameters)": + [{"id": "notInductive-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#notInductive-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "notInductive", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "notAck": - [{"id": "notAck", - "data": null, + "notAck (in Inference too powerful)": + [{"id": "notAck-_LPAR_in-Inference-too-powerful_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#notAck-_LPAR_in-Inference-too-powerful_RPAR_": + {"display": "notAck", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Inferring Well-Founded Recursion", + "Inference too powerful"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "nonzero": - [{"id": "nonzero", "data": null, "address": "/Terms/Pattern-Matching/"}], - "nonParametric": - [{"id": "nonParametric", "data": null, "address": "/Axioms/"}], + "nonzero (in Match Patterns Follow Reduction)": + [{"id": "nonzero-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_", + "data": + {"/Terms/Pattern-Matching/#nonzero-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_": + {"display": "nonzero", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Custom Pattern Functions", + "Match Patterns Follow Reduction"]}}, + "address": "/Terms/Pattern-Matching/"}], + "nonParametric (in Inconsistencies From Axioms)": + [{"id": "nonParametric-_LPAR_in-Inconsistencies-From-Axioms_RPAR_", + "data": + {"/Axioms/#nonParametric-_LPAR_in-Inconsistencies-From-Axioms_RPAR_": + {"display": "nonParametric", + "context": + ["The Lean Language Reference", + "Axioms", + "Consistency", + "Inconsistencies From Axioms"]}}, + "address": "/Axioms/"}], "noConfusionDiagonal": - [{"id": "NoConfusion", - "data": null, + [{"id": "noConfusionDiagonal", + "data": + {"/Basic-Types/Natural-Numbers/#noConfusionDiagonal": + {"display": "noConfusionDiagonal", + "context": + ["The Lean Language Reference", + "Basic Types", + "Natural Numbers", + "Logical Model", + "Peano Axioms"]}}, "address": "/Basic-Types/Natural-Numbers/"}], "noConfusion": - [{"id": "NoConfusion", - "data": null, + [{"id": "noConfusion", + "data": + {"/Basic-Types/Natural-Numbers/#noConfusion": + {"display": "noConfusion", + "context": + ["The Lean Language Reference", + "Basic Types", + "Natural Numbers", + "Logical Model", + "Peano Axioms"]}}, "address": "/Basic-Types/Natural-Numbers/"}], - "nine": - [{"id": "DivBy3", "data": null, "address": "/Basic-Types/Subtypes/"}], - "nextPrime": - [{"id": "nextPrime", - "data": null, + "nine (in Subtype Coercions)": + [{"id": "nine-_LPAR_in-Subtype-Coercions_RPAR_", + "data": + {"/Basic-Types/Subtypes/#nine-_LPAR_in-Subtype-Coercions_RPAR_": + {"display": "nine", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Subtype Coercions"]}}, + "address": "/Basic-Types/Subtypes/"}], + "nextPrime (in Partial Functions in Proofs)": + [{"id": "nextPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#nextPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_": + {"display": "nextPrime", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Partial Functions", + "Partial Functions in Proofs"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "nextOdd": [{"id": "nextOdd", "data": null, "address": "/Axioms/"}], - "neg0": - [{"id": "neg0", - "data": null, + "nextOdd (in Axioms and Compilation)": + [{"id": "nextOdd-_LPAR_in-Axioms-and-Compilation_RPAR_", + "data": + {"/Axioms/#nextOdd-_LPAR_in-Axioms-and-Compilation_RPAR_": + {"display": "nextOdd", + "context": + ["The Lean Language Reference", + "Axioms", + "Reduction", + "Axioms and Compilation"]}}, + "address": "/Axioms/"}], + "neg0 (in Floating-Point Equality Is Not a Congruence)": + [{"id": "neg0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_", + "data": + {"/Basic-Types/Floating-Point-Numbers/#neg0-_LPAR_in-Floating-Point-Equality-Is-Not-a-Congruence_RPAR_": + {"display": "neg0", + "context": + ["The Lean Language Reference", + "Basic Types", + "Floating-Point Numbers", + "Floating-Point Equality Is Not a Congruence"]}}, "address": "/Basic-Types/Floating-Point-Numbers/"}], - "neg'": - [{"id": "neg___", - "data": null, + "neg' (in Integer Negation and Addition)": + [{"id": "neg___-_LPAR_in-Integer-Negation-and-Addition_RPAR_", + "data": + {"/The-Type-System/Quotients/#neg___-_LPAR_in-Integer-Negation-and-Addition_RPAR_": + {"display": "neg'", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Eliminating Quotients", + "Integer Negation and Addition"]}}, "address": "/The-Type-System/Quotients/"}], - "natWriter": - [{"id": "Writer___write", - "data": null, + "natWriter (in Dependent Coercion to Functions)": + [{"id": "natWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#natWriter-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_": + {"display": "natWriter", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Dependent Coercion to Functions"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "n": - [{"id": "NaturalNum", - "data": null, + "n (in Mutual Block Scope)": + [{"id": "n-_LPAR_in-Mutual-Block-Scope_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_-next": + {"display": "n", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}, + "/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_": + {"display": "n", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "NaturalNum-next", - "data": null, + {"id": "n-_LPAR_in-Mutual-Block-Scope_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_-next": + {"display": "n", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}, + "/Definitions/Recursive-Definitions/#n-_LPAR_in-Mutual-Block-Scope_RPAR_": + {"display": "n", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "mustBeEqual": - [{"id": "mustBeEqual", - "data": null, + "n (in Attempting to define multiple opaque constants at once)": + [{"id": + "n-_LPAR_in-Attempting-to-define-multiple-opaque-constants-at-once_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#n-_LPAR_in-Attempting-to-define-multiple-opaque-constants-at-once_RPAR_": + {"display": "n", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple opaque constants at once"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "mustBeEqual (in Parameter Scope)": + [{"id": "mustBeEqual-_LPAR_in-Parameter-Scope_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#mustBeEqual-_LPAR_in-Parameter-Scope_RPAR_": + {"display": "mustBeEqual", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Bracketed Parameter Bindings", + "Parameter Scope"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "mkStx": - [{"id": "mkStx", - "data": null, + "mkStx (in Optional Splices)": + [{"id": "mkStx-_LPAR_in-Optional-Splices_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#mkStx-_LPAR_in-Optional-Splices_RPAR_": + {"display": "mkStx", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Splices", + "Optional Splices"]}}, "address": "/Notations-and-Macros/Macros/"}], - "min'": - [{"id": "min___-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "min___", - "data": null, + "min' (in Structural Recursion Under Pairs)": + [{"id": "min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_-next": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Structural Recursion Under Pairs"]}, + "/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Structural Recursion Under Pairs"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "min___-next", - "data": null, + {"id": "min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_-next": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Structural Recursion Under Pairs"]}, + "/Definitions/Recursive-Definitions/#min___-_LPAR_in-Structural-Recursion-Under-Pairs_RPAR_": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Structural Recursion Under Pairs"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "min' (in Simultaneous Matching vs Matching Pairs for Structural Recursion)": + [{"id": + "min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_-next": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Simultaneous Matching vs Matching Pairs for Structural Recursion"]}, + "/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Simultaneous Matching vs Matching Pairs for Structural Recursion"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "min___-next-next-next", - "data": null, + {"id": + "min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_-next": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Simultaneous Matching vs Matching Pairs for Structural Recursion"]}, + "/Definitions/Recursive-Definitions/#min___-_LPAR_in-Simultaneous-Matching-vs-Matching-Pairs-for-Structural-Recursion_RPAR_": + {"display": "min'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Simultaneous Matching vs Matching Pairs for Structural Recursion"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "map": - [{"id": "map-next-next-next", - "data": null, - "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "map", "data": null, "address": "/The-Type-System/Universes/"}, - {"id": "map-next-next-next-next", - "data": null, - "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "map-next-next", - "data": null, + "map (in No Automatic Implicit Parameters)": + [{"id": "map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "map", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "No Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_": + {"display": "map", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "No Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "map-next", - "data": null, - "address": "/The-Type-System/Universes/"}], - "main": - [{"id": "main-next-next-next-next", - "data": null, - "address": "/IO/Console-Output/"}, - {"id": "main-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Processes/"}, - {"id": "main-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Processes/"}, - {"id": "main-next-next", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/API-Reference/"}, - {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Processes/"}, - {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Processes/"}, - {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Run-Time-Code/Reference-Counting/"}, - {"id": "main", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "main-next-next-next-next-next", - "data": null, - "address": "/IO/Mutable-References/"}, - {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Processes/"}, - {"id": "main-next-next-next-next-next-next", - "data": null, - "address": "/IO/Mutable-References/"}, - {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Basic-Types/Tuples/"}, - {"id": "main-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Files___-File-Handles___-and-Streams/"}, - {"id": "main-next-next-next", - "data": null, - "address": "/IO/Logical-Model/"}, + {"id": "map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next", + "data": + {"/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "map", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "No Automatic Implicit Parameters"]}, + "/Definitions/Headers-and-Signatures/#map-_LPAR_in-No-Automatic-Implicit-Parameters_RPAR_": + {"display": "map", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "No Automatic Implicit Parameters"]}}, + "address": "/Definitions/Headers-and-Signatures/"}], + "map (in Automatic Implicit Parameters)": + [{"id": "map-_LPAR_in-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#map-_LPAR_in-Automatic-Implicit-Parameters_RPAR_": + {"display": "map", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Automatic Implicit Parameters"]}}, + "address": "/Definitions/Headers-and-Signatures/"}], + "map (in Automatic Implicit Parameters and Universe Polymorphism)": + [{"id": + "map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_-next", + "data": + {"/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_-next": + {"display": "map", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic Implicit Parameters and Universe Polymorphism"]}, + "/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_": + {"display": "map", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic Implicit Parameters and Universe Polymorphism"]}}, + "address": "/The-Type-System/Universes/"}, {"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, + "map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_", + "data": + {"/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_-next": + {"display": "map", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic Implicit Parameters and Universe Polymorphism"]}, + "/The-Type-System/Universes/#map-_LPAR_in-Automatic-Implicit-Parameters-and-Universe-Polymorphism_RPAR_": + {"display": "map", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic Implicit Parameters and Universe Polymorphism"]}}, + "address": "/The-Type-System/Universes/"}], + "main (in Throwing and Catching Errors)": + [{"id": "main-_LPAR_in-Throwing-and-Catching-Errors_RPAR_", + "data": + {"/IO/Logical-Model/#main-_LPAR_in-Throwing-and-Catching-Errors_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Logical Model", + "Errors and Error Handling in IO", + "Throwing and Catching Errors"]}}, + "address": "/IO/Logical-Model/"}], + "main (in Running a Program)": + [{"id": "main-_LPAR_in-Running-a-Program_RPAR_", + "data": + {"/IO/Processes/#main-_LPAR_in-Running-a-Program_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Processes", + "Running Processes", + "Running a Program"]}}, + "address": "/IO/Processes/"}], + "main (in Running a Program on a File)": + [{"id": "main-_LPAR_in-Running-a-Program-on-a-File_RPAR_", + "data": + {"/IO/Processes/#main-_LPAR_in-Running-a-Program-on-a-File_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Processes", + "Running Processes", + "Running a Program on a File"]}}, + "address": "/IO/Processes/"}], + "main (in Reference Cells as Locks)": + [{"id": "main-_LPAR_in-Reference-Cells-as-Locks_RPAR_", + "data": + {"/IO/Mutable-References/#main-_LPAR_in-Reference-Cells-as-Locks_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Mutable References", + "Concurrency", + "Reference Cells as Locks"]}}, + "address": "/IO/Mutable-References/"}], + "main (in Reading from Standard Input)": + [{"id": "main-_LPAR_in-Reading-from-Standard-Input_RPAR_", + "data": + {"/IO/Files___-File-Handles___-and-Streams/#main-_LPAR_in-Reading-from-Standard-Input_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Files, File Handles, and Streams", + "Standard I/O", + "Reading from Standard Input"]}}, + "address": "/IO/Files___-File-Handles___-and-Streams/"}], + "main (in Printing)": + [{"id": "main-_LPAR_in-Printing_RPAR_", + "data": + {"/IO/Console-Output/#main-_LPAR_in-Printing_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", "IO", "Console Output", "Printing"]}}, + "address": "/IO/Console-Output/"}], + "main (in One File, Multiple Handles)": + [{"id": "main-_LPAR_in-One-File___-Multiple-Handles_RPAR_", + "data": + {"/IO/Files___-File-Handles___-and-Streams/#main-_LPAR_in-One-File___-Multiple-Handles_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Files, File Handles, and Streams", + "Low-Level File API", + "One File, Multiple Handles"]}}, + "address": "/IO/Files___-File-Handles___-and-Streams/"}], + "main (in Observing Uniqueness)": + [{"id": "main-_LPAR_in-Observing-Uniqueness_RPAR_-next", + "data": + {"/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_-next": + {"display": "main", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}, + "/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}}, "address": "/Run-Time-Code/Reference-Counting/"}, - {"id": "main-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Mutable-References/"}, - {"id": "main-next-next-next-next-next-next-next-next", - "data": null, - "address": "/IO/Files___-File-Handles___-and-Streams/"}, - {"id": "main-next", - "data": null, + {"id": "main-_LPAR_in-Observing-Uniqueness_RPAR_", + "data": + {"/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_-next": + {"display": "main", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}, + "/Run-Time-Code/Reference-Counting/#main-_LPAR_in-Observing-Uniqueness_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Observing Uniqueness", + "Observing Uniqueness"]}}, + "address": "/Run-Time-Code/Reference-Counting/"}], + "main (in Monadic Collection Operations)": + [{"id": "main-_LPAR_in-Monadic-Collection-Operations_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/API-Reference/#main-_LPAR_in-Monadic-Collection-Operations_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "API Reference", + "Monadic Collection Operations"]}}, + "address": "/Functors___-Monads-and--do--Notation/API-Reference/"}], + "main (in Infix Functor and Applicative Operators)": + [{"id": "main-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#main-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors", + "Infix Functor and Applicative Operators"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], - "loop": - [{"id": "loop", - "data": null, + "main (in Dependent Pairs with Data)": + [{"id": "main-_LPAR_in-Dependent-Pairs-with-Data_RPAR_", + "data": + {"/Basic-Types/Tuples/#main-_LPAR_in-Dependent-Pairs-with-Data_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs with Data"]}}, + "address": "/Basic-Types/Tuples/"}], + "main (in Data races with get and set)": + [{"id": "main-_LPAR_in-Data-races-with--get--and--set_RPAR_", + "data": + {"/IO/Mutable-References/#main-_LPAR_in-Data-races-with--get--and--set_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Mutable References", + "State Transformers", + "Reading and Writing", + "Data races with get and set"]}}, + "address": "/IO/Mutable-References/"}], + "main (in Closing a Subprocess's Standard Input)": + [{"id": "main-_LPAR_in-Closing-a-Subprocess___s-Standard-Input_RPAR_", + "data": + {"/IO/Processes/#main-_LPAR_in-Closing-a-Subprocess___s-Standard-Input_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Processes", + "Running Processes", + "Closing a Subprocess's Standard Input"]}}, + "address": "/IO/Processes/"}], + "main (in Checking Exit Codes)": + [{"id": "main-_LPAR_in-Checking-Exit-Codes_RPAR_", + "data": + {"/IO/Processes/#main-_LPAR_in-Checking-Exit-Codes_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Processes", + "Running Processes", + "Checking Exit Codes"]}}, + "address": "/IO/Processes/"}], + "main (in Avoiding data races with modify)": + [{"id": "main-_LPAR_in-Avoiding-data-races-with--modify_RPAR_", + "data": + {"/IO/Mutable-References/#main-_LPAR_in-Avoiding-data-races-with--modify_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Mutable References", + "State Transformers", + "Reading and Writing", + "Avoiding data races with modify"]}}, + "address": "/IO/Mutable-References/"}], + "main (in Asynchronous Subprocesses)": + [{"id": "main-_LPAR_in-Asynchronous-Subprocesses_RPAR_", + "data": + {"/IO/Processes/#main-_LPAR_in-Asynchronous-Subprocesses_RPAR_": + {"display": "main", + "context": + ["The Lean Language Reference", + "IO", + "Processes", + "Running Processes", + "Asynchronous Subprocesses"]}}, + "address": "/IO/Processes/"}], + "main": + [{"id": "main", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#main": + {"display": "main", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors"]}}, + "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], + "m (in Attempting to define multiple opaque constants at once)": + [{"id": + "m-_LPAR_in-Attempting-to-define-multiple-opaque-constants-at-once_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#m-_LPAR_in-Attempting-to-define-multiple-opaque-constants-at-once_RPAR_": + {"display": "m", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple opaque constants at once"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "lsts (in Widths and Newlines)": + [{"id": "lsts-_LPAR_in-Widths-and-Newlines_RPAR_", + "data": + {"/Interacting-with-Lean/#lsts-_LPAR_in-Widths-and-Newlines_RPAR_": + {"display": "lsts", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Widths and Newlines"]}}, + "address": "/Interacting-with-Lean/"}], + "lst (in Widths and Newlines)": + [{"id": "lst-_LPAR_in-Widths-and-Newlines_RPAR_", + "data": + {"/Interacting-with-Lean/#lst-_LPAR_in-Widths-and-Newlines_RPAR_": + {"display": "lst", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Widths and Newlines"]}}, + "address": "/Interacting-with-Lean/"}], + "loop (in Loops are Tail Recursive Functions)": + [{"id": "loop-_LPAR_in-Loops-are-Tail-Recursive-Functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#loop-_LPAR_in-Loops-are-Tail-Recursive-Functions_RPAR_": + {"display": "loop", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Tail-Recursive Functions", + "Loops are Tail Recursive Functions"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "location": - [{"id": "location", - "data": null, + "location (in where for structures)": + [{"id": "location-_LPAR_in-where--for-structures_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#location-_LPAR_in-where--for-structures_RPAR_": + {"display": "location", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "where for structures"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "listLen": - [{"id": "listLen", - "data": null, + "listLen (in Matching on Complex Expressions Can Prevent Elaboration)": + [{"id": + "listLen-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#listLen-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_": + {"display": "listLen", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Matching on Complex Expressions Can Prevent Elaboration"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "last?'": - [{"id": "last______", - "data": null, + "last?' (in Pattern Equality Proofs)": + [{"id": "last______-_LPAR_in-Pattern-Equality-Proofs_RPAR_", + "data": + {"/Terms/Pattern-Matching/#last______-_LPAR_in-Pattern-Equality-Proofs_RPAR_": + {"display": "last?'", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Pattern Equality Proofs", + "Pattern Equality Proofs"]}}, "address": "/Terms/Pattern-Matching/"}], - "last?": - [{"id": "last___", "data": null, "address": "/Terms/Pattern-Matching/"}], - "isZero'": - [{"id": "isZero___", - "data": null, + "last? (in Pattern Equality Proofs)": + [{"id": "last___-_LPAR_in-Pattern-Equality-Proofs_RPAR_", + "data": + {"/Terms/Pattern-Matching/#last___-_LPAR_in-Pattern-Equality-Proofs_RPAR_": + {"display": "last?", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Pattern Equality Proofs", + "Pattern Equality Proofs"]}}, "address": "/Terms/Pattern-Matching/"}], - "isZero": - [{"id": "isZero___", - "data": null, + "isZero' (in Pattern-Matching Functions)": + [{"id": "isZero___-_LPAR_in-Pattern-Matching-Functions_RPAR_", + "data": + {"/Terms/Pattern-Matching/#isZero___-_LPAR_in-Pattern-Matching-Functions_RPAR_": + {"display": "isZero'", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Pattern Matching Functions", + "Pattern-Matching Functions"]}}, "address": "/Terms/Pattern-Matching/"}], - "isPrime": - [{"id": "nextPrime", - "data": null, + "isZero (in Pattern-Matching Functions)": + [{"id": "isZero-_LPAR_in-Pattern-Matching-Functions_RPAR_", + "data": + {"/Terms/Pattern-Matching/#isZero-_LPAR_in-Pattern-Matching-Functions_RPAR_": + {"display": "isZero", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Pattern Matching Functions", + "Pattern-Matching Functions"]}}, + "address": "/Terms/Pattern-Matching/"}], + "isPrime (in Partial Functions in Proofs)": + [{"id": "isPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#isPrime-_LPAR_in-Partial-Functions-in-Proofs_RPAR_": + {"display": "isPrime", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Partial Functions", + "Partial Functions in Proofs"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "intersperse": - [{"id": "intersperse", - "data": null, + "iota_succ (in Increasing E-matching Limits)": + [{"id": "iota_succ-_LPAR_in-Increasing-E-matching-Limits_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#iota_succ-_LPAR_in-Increasing-E-matching-Limits_RPAR_": + {"display": "iota_succ", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Resource Limits", + "Increasing E-matching Limits"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "iota (in Increasing E-matching Limits)": + [{"id": "iota-_LPAR_in-Increasing-E-matching-Limits_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#iota-_LPAR_in-Increasing-E-matching-Limits_RPAR_": + {"display": "iota", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Resource Limits", + "Increasing E-matching Limits"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "inv_eq (in The @[grind ←=] Attribute)": + [{"id": "inv_eq-_LPAR_in-The--____LSQ_grind-_______RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#inv_eq-_LPAR_in-The--____LSQ_grind-_______RSQ_--Attribute_RPAR_": + {"display": "inv_eq", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ←=] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "intersperse (in Printing Equations)": + [{"id": "intersperse-_LPAR_in-Printing-Equations_RPAR_", + "data": + {"/Interacting-with-Lean/#intersperse-_LPAR_in-Printing-Equations_RPAR_": + {"display": "intersperse", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Querying the Context", + "Printing Equations"]}}, "address": "/Interacting-with-Lean/"}], - "interestingName": - [{"id": "interestingName", - "data": null, + "interestingName (in Querying the Environment)": + [{"id": "interestingName-_LPAR_in-Querying-the-Environment_RPAR_", + "data": + {"/Notations-and-Macros/Elaborators/#interestingName-_LPAR_in-Querying-the-Environment_RPAR_": + {"display": "interestingName", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Elaborators", + "Command Elaborators", + "Querying the Environment"]}}, "address": "/Notations-and-Macros/Elaborators/"}], - "instDecidableEqStringList": - [{"id": "instDecidableEqStringList", - "data": null, + "instDecidableEqStringList (in A recursive instance for a sum class)": + [{"id": + "instDecidableEqStringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#instDecidableEqStringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_": + {"display": "instDecidableEqStringList", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "A recursive instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "instBeqNatWrapper": - [{"id": "instBeqNatWrapper", - "data": null, + "instCommRingR": + [{"id": "instCommRingR", + "data": + {"/The--grind--tactic/Bigger-Examples/#instCommRingR": + {"display": "instCommRingR", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "Integrating grind 's Features"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "instBeqNatWrapper (in Variations in Instance Definitions)": + [{"id": + "instBeqNatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#instBeqNatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_": + {"display": "instBeqNatWrapper", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Variations in Instance Definitions"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "incrOrFail": - [{"id": "incrOrFail-next", - "data": null, + "incrOrFail (in Lifting Transformed Monads)": + [{"id": "incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next": + {"display": "incrOrFail", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}, + "/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_": + {"display": "incrOrFail", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}, - {"id": "incrOrFail", - "data": null, + {"id": "incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next": + {"display": "incrOrFail", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}, + "/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrOrFail-_LPAR_in-Lifting-Transformed-Monads_RPAR_": + {"display": "incrOrFail", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}], - "incrBy": - [{"id": "incrOrFail-next", - "data": null, + "incrBy (in Lifting Transformed Monads)": + [{"id": "incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next": + {"display": "incrBy", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}, + "/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_": + {"display": "incrBy", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}, - {"id": "incrOrFail", - "data": null, + {"id": "incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_-next": + {"display": "incrBy", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}, + "/Functors___-Monads-and--do--Notation/Lifting-Monads/#incrBy-_LPAR_in-Lifting-Transformed-Monads_RPAR_": + {"display": "incrBy", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting Transformed Monads"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}], - "id₃": - [{"id": "id___-next", - "data": null, + "id₃ (in The universe command when autoImplicit is false)": + [{"id": + "id___-_LPAR_in-The--universe--command-when--autoImplicit--is--false_RPAR_", + "data": + {"/The-Type-System/Universes/#id___-_LPAR_in-The--universe--command-when--autoImplicit--is--false_RPAR_": + {"display": "id₃", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "The universe command when autoImplicit is false"]}}, "address": "/The-Type-System/Universes/"}], - "identity": - [{"id": "___", - "data": null, + "identity (in Mutual Block Scope and Automatic Implicit Parameters)": + [{"id": + "identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "identity", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}, + "/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_": + {"display": "identity", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "___-next", - "data": null, + {"id": + "identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_-next": + {"display": "identity", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}, + "/Definitions/Recursive-Definitions/#identity-_LPAR_in-Mutual-Block-Scope-and-Automatic-Implicit-Parameters_RPAR_": + {"display": "identity", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope and Automatic Implicit Parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], + "identity (in Definition type uninferrable due to unknown parameter type)": + [{"id": + "identity-_LPAR_in-Definition-type-uninferrable-due-to-unknown-parameter-type_RPAR_", + "data": + {"/Error-Explanations/lean___inferDefTypeFailed/#identity-_LPAR_in-Definition-type-uninferrable-due-to-unknown-parameter-type_RPAR_": + {"display": "identity", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferDefTypeFailed", + "Examples", + "Definition type uninferrable due to unknown parameter type"]}}, + "address": "/Error-Explanations/lean___inferDefTypeFailed/"}], + "identity (in Binder type requires new type variable)": + [{"id": "identity-_LPAR_in-Binder-type-requires-new-type-variable_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#identity-_LPAR_in-Binder-type-requires-new-type-variable_RPAR_": + {"display": "identity", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Binder type requires new type variable"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], "id'": - [{"id": "id___", "data": null, "address": "/The-Type-System/Universes/"}], - "helper": - [{"id": "half___", - "data": null, + [{"id": "id___", + "data": + {"/The-Type-System/Universes/#id___": + {"display": "id'", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism"]}}, + "address": "/The-Type-System/Universes/"}], + "h₆ (in Left-to-Right Generation)": + [{"id": "h___-_LPAR_in-Left-to-Right-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#h___-_LPAR_in-Left-to-Right-Generation_RPAR_": + {"display": "h₆", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Left-to-Right Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "h₅ (in Failing Backward Pattern Generation)": + [{"id": "h___-_LPAR_in-Failing-Backward-Pattern-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#h___-_LPAR_in-Failing-Backward-Pattern-Generation_RPAR_": + {"display": "h₅", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Failing Backward Pattern Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "h₄ (in Patterns from Conclusion and Hypotheses)": + [{"id": "h___-_LPAR_in-Patterns-from-Conclusion-and-Hypotheses_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#h___-_LPAR_in-Patterns-from-Conclusion-and-Hypotheses_RPAR_": + {"display": "h₄", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Patterns from Conclusion and Hypotheses"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "h₃ (in Bidirectional Equality Pattern Generation)": + [{"id": "h___-_LPAR_in-Bidirectional-Equality-Pattern-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#h___-_LPAR_in-Bidirectional-Equality-Pattern-Generation_RPAR_": + {"display": "h₃", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Bidirectional Equality Pattern Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "h₂ (in Backward Pattern Generation)": + [{"id": "h___-_LPAR_in-Backward-Pattern-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#h___-_LPAR_in-Backward-Pattern-Generation_RPAR_": + {"display": "h₂", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Backward Pattern Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "h₁ (in Forward Pattern Generation)": + [{"id": "h___-_LPAR_in-Forward-Pattern-Generation_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#h___-_LPAR_in-Forward-Pattern-Generation_RPAR_": + {"display": "h₁", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Forward Pattern Generation"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "helper (in Recursion vs Recursors)": + [{"id": "helper-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#helper-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "helper", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "hello (in Reducibility and Instance Synthesis)": + [{"id": "hello-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#hello-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_": + {"display": "hello", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Instance Synthesis"]}}, "address": "/Definitions/Recursive-Definitions/"}], "hello": - [{"id": "hello-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "hello", "data": null, "address": "/Introduction/"}], - "half'''": - [{"id": "half_________", - "data": null, + [{"id": "hello", + "data": + {"/Introduction/#hello": + {"display": "hello", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Lean Code"]}}, + "address": "/Introduction/"}], + "half''' (in Recursion vs Recursors)": + [{"id": "half_________-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half_________-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "half'''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "half''": - [{"id": "half______-next-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half______-next-next", - "data": null, + "half'' (in Recursion vs Recursors)": + [{"id": "half______-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "half'' (in Elaboration Walkthrough)": + [{"id": "half______-_LPAR_in-Elaboration-Walkthrough_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half______", - "data": null, + {"id": "half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next", + "data": + {"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half______-next", - "data": null, + {"id": + "half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next", + "data": + {"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half______-next-next-next", - "data": null, + {"id": "half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half______-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half''", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "half'": - [{"id": "half___-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half___", - "data": null, + "half' (in Recursion vs Recursors)": + [{"id": "half___-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half___-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "half'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "half": - [{"id": "half-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next-next-next-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next-next-next-next-next", - "data": null, + "half' (in Elaboration Walkthrough)": + [{"id": "half___-_LPAR_in-Elaboration-Walkthrough_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half___-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "half (in Specifying Decreasing Parameters)": + [{"id": "half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Specifying Decreasing Parameters"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Specifying Decreasing Parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next", - "data": null, + {"id": "half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Specifying Decreasing Parameters"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Specifying-Decreasing-Parameters_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Specifying Decreasing Parameters"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "half (in Recursion vs Recursors)": + [{"id": "half-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "half (in Matching on Complex Expressions Can Prevent Elaboration)": + [{"id": + "half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Matching on Complex Expressions Can Prevent Elaboration"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Matching on Complex Expressions Can Prevent Elaboration"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next-next", - "data": null, + {"id": + "half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Matching on Complex Expressions Can Prevent Elaboration"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Matching-on-Complex-Expressions-Can-Prevent-Elaboration_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Matching on Complex Expressions Can Prevent Elaboration"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "half (in Inferred Termination Annotations)": + [{"id": "half-_LPAR_in-Inferred-Termination-Annotations_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Inferred-Termination-Annotations_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Inferring Structural Recursion", + "Inferred Termination Annotations"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "half (in Inaccessible Patterns)": + [{"id": "half-_LPAR_in-Inaccessible-Patterns_RPAR_", + "data": + {"/Terms/Pattern-Matching/#half-_LPAR_in-Inaccessible-Patterns_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Inaccessible Patterns"]}}, + "address": "/Terms/Pattern-Matching/"}], + "half (in Elaboration Walkthrough)": + [{"id": "half-_LPAR_in-Elaboration-Walkthrough_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half", - "data": null, + {"id": "half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "half-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Terms/Pattern-Matching/"}], - "goodMorning": - [{"id": "hello-next", - "data": null, + {"id": "half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next", + "data": + {"/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_-next": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}, + "/Definitions/Recursive-Definitions/#half-_LPAR_in-Elaboration-Walkthrough_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Elaboration Walkthrough"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "goodEvening": - [{"id": "goodEvening", - "data": null, + "gt1 (in E-matching and Pattern Matching)": + [{"id": "gt1-_LPAR_in-E-matching-and-Pattern-Matching_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#gt1-_LPAR_in-E-matching-and-Pattern-Matching_RPAR_": + {"display": "gt1", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Resource Limits", + "E-matching and Pattern Matching"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "grouped (in Grouping and Filling)": + [{"id": "grouped-_LPAR_in-Grouping-and-Filling_RPAR_", + "data": + {"/Interacting-with-Lean/#grouped-_LPAR_in-Grouping-and-Filling_RPAR_": + {"display": "grouped", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Grouping and Filling"]}}, + "address": "/Interacting-with-Lean/"}], + "goodMorning (in Reducibility and Instance Synthesis)": + [{"id": "goodMorning-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#goodMorning-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_": + {"display": "goodMorning", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Instance Synthesis"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "getValues": + "goodEvening (in Reducibility and Instance Synthesis)": + [{"id": "goodEvening-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#goodEvening-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_": + {"display": "goodEvening", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Instance Synthesis"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "gf (in Selecting Patterns)": + [{"id": "gf-_LPAR_in-Selecting-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#gf-_LPAR_in-Selecting-Patterns_RPAR_": + {"display": "gf", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "Selecting Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "gf (in E-matching Patterns)": + [{"id": "gf-_LPAR_in-E-matching-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#gf-_LPAR_in-E-matching-Patterns_RPAR_": + {"display": "gf", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "E-matching Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "getWitness (in Extracting the witness from an existential proof)": [{"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, + "getWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_", + "data": + {"/Error-Explanations/lean___propRecLargeElim/#getWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_-next": + {"display": "getWitness", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.propRecLargeElim", + "Examples", + "Extracting the witness from an existential proof"]}, + "/Error-Explanations/lean___propRecLargeElim/#getWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_": + {"display": "getWitness", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.propRecLargeElim", + "Examples", + "Extracting the witness from an existential proof"]}}, + "address": "/Error-Explanations/lean___propRecLargeElim/"}, + {"id": + "getWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_-next", + "data": + {"/Error-Explanations/lean___propRecLargeElim/#getWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_-next": + {"display": "getWitness", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.propRecLargeElim", + "Examples", + "Extracting the witness from an existential proof"]}, + "/Error-Explanations/lean___propRecLargeElim/#getWitness-_LPAR_in-Extracting-the-witness-from-an-existential-proof_RPAR_": + {"display": "getWitness", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.propRecLargeElim", + "Examples", + "Extracting the witness from an existential proof"]}}, + "address": "/Error-Explanations/lean___propRecLargeElim/"}], + "getValues (in Dependent Pairs with Data)": + [{"id": "getValues-_LPAR_in-Dependent-Pairs-with-Data_RPAR_", + "data": + {"/Basic-Types/Tuples/#getValues-_LPAR_in-Dependent-Pairs-with-Data_RPAR_": + {"display": "getValues", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs with Data"]}}, "address": "/Basic-Types/Tuples/"}], - "getThird": - [{"id": "getThird", "data": null, "address": "/Terms/Conditionals/"}, - {"id": "getThird-next-next", - "data": null, + "getThird (in Checking Array Bounds)": + [{"id": "getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next", + "data": + {"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}, + "/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}, + "/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}}, "address": "/Terms/Conditionals/"}, - {"id": "getThird-next", - "data": null, + {"id": "getThird-_LPAR_in-Checking-Array-Bounds_RPAR_", + "data": + {"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}, + "/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}, + "/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}}, + "address": "/Terms/Conditionals/"}, + {"id": "getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next", + "data": + {"/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next-next": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}, + "/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_-next": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}, + "/Terms/Conditionals/#getThird-_LPAR_in-Checking-Array-Bounds_RPAR_": + {"display": "getThird", + "context": + ["The Lean Language Reference", + "Terms", + "Conditionals", + "Checking Array Bounds"]}}, "address": "/Terms/Conditionals/"}], - "getPPContext": - [{"id": "getPPContext", - "data": null, + "getPPContext (in Pretty-Printed Syntax)": + [{"id": "getPPContext-_LPAR_in-Pretty-Printed-Syntax_RPAR_", + "data": + {"/Notations-and-Macros/Defining-New-Syntax/#getPPContext-_LPAR_in-Pretty-Printed-Syntax_RPAR_": + {"display": "getPPContext", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Defining New Syntax", + "Inspecting Syntax", + "Pretty-Printed Syntax"]}}, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], - "getName": - [{"id": "main-next", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], - "getNLinesRev": + "getOrDefault (in Noncomputable dependency can be made computable)": [{"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Basic-Types/Tuples/"}], - "getNLines": + "getOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_-next", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#getOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_-next": + {"display": "getOrDefault", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Noncomputable dependency can be made computable"]}, + "/Error-Explanations/lean___dependsOnNoncomputable/#getOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_": + {"display": "getOrDefault", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Noncomputable dependency can be made computable"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}, + {"id": + "getOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#getOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_-next": + {"display": "getOrDefault", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Noncomputable dependency can be made computable"]}, + "/Error-Explanations/lean___dependsOnNoncomputable/#getOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_": + {"display": "getOrDefault", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Noncomputable dependency can be made computable"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}], + "getName (in Infix Functor and Applicative Operators)": [{"id": - "main-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", - "data": null, + "getName-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#getName-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_": + {"display": "getName", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors", + "Infix Functor and Applicative Operators"]}}, + "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], + "getNLinesRev (in Dependent Pairs with Data)": + [{"id": "getNLinesRev-_LPAR_in-Dependent-Pairs-with-Data_RPAR_", + "data": + {"/Basic-Types/Tuples/#getNLinesRev-_LPAR_in-Dependent-Pairs-with-Data_RPAR_": + {"display": "getNLinesRev", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs with Data"]}}, "address": "/Basic-Types/Tuples/"}], - "getFavoriteNat": - [{"id": "main-next", - "data": null, + "getNLines (in Dependent Pairs with Data)": + [{"id": "getNLines-_LPAR_in-Dependent-Pairs-with-Data_RPAR_", + "data": + {"/Basic-Types/Tuples/#getNLines-_LPAR_in-Dependent-Pairs-with-Data_RPAR_": + {"display": "getNLines", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs with Data"]}}, + "address": "/Basic-Types/Tuples/"}], + "getFavoriteNat (in Infix Functor and Applicative Operators)": + [{"id": + "getFavoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#getFavoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_": + {"display": "getFavoriteNat", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors", + "Infix Functor and Applicative Operators"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], - "getBytes'": - [{"id": "getBytes___", - "data": null, + "getBytes' (in Exceptions and Lifting)": + [{"id": "getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_-next": + {"display": "getBytes'", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Reversing Lifts", + "Reversible Lifting with MonadControl", + "Exceptions and Lifting"]}, + "/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_": + {"display": "getBytes'", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Reversing Lifts", + "Reversible Lifting with MonadControl", + "Exceptions and Lifting"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}, - {"id": "getBytes___-next", - "data": null, + {"id": "getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_-next", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_-next": + {"display": "getBytes'", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Reversing Lifts", + "Reversible Lifting with MonadControl", + "Exceptions and Lifting"]}, + "/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes___-_LPAR_in-Exceptions-and-Lifting_RPAR_": + {"display": "getBytes'", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Reversing Lifts", + "Reversible Lifting with MonadControl", + "Exceptions and Lifting"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}], - "getBytes": - [{"id": "getByte", - "data": null, + "getBytes (in Exceptions and Lifting)": + [{"id": "getBytes-_LPAR_in-Exceptions-and-Lifting_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getBytes-_LPAR_in-Exceptions-and-Lifting_RPAR_": + {"display": "getBytes", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Reversing Lifts", + "Reversible Lifting with MonadControl", + "Exceptions and Lifting"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}], - "getByte": - [{"id": "getByte", - "data": null, + "getByte (in Exceptions and Lifting)": + [{"id": "getByte-_LPAR_in-Exceptions-and-Lifting_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#getByte-_LPAR_in-Exceptions-and-Lifting_RPAR_": + {"display": "getByte", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Reversing Lifts", + "Reversible Lifting with MonadControl", + "Exceptions and Lifting"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}], - "getAlpha": - [{"id": "getAlpha", - "data": null, + "getAlpha (in Coercions and Option)": + [{"id": "getAlpha-_LPAR_in-Coercions-and--Option_RPAR_", + "data": + {"/Basic-Types/Optional-Values/#getAlpha-_LPAR_in-Coercions-and--Option_RPAR_": + {"display": "getAlpha", + "context": + ["The Lean Language Reference", + "Basic Types", + "Optional Values", + "Coercions", + "Coercions and Option"]}}, "address": "/Basic-Types/Optional-Values/"}], - "g": - [{"id": "f-next-next-next-next-next", - "data": null, - "address": "/Terms/Functions/"}, - {"id": "g-next", - "data": null, - "address": "/Basic-Types/The-Empty-Type/"}, - {"id": "g", "data": null, "address": "/Basic-Propositions/Truth/"}, - {"id": "f-next-next-next-next", - "data": null, + "g (in Selecting Patterns)": + [{"id": "g-_LPAR_in-Selecting-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#g-_LPAR_in-Selecting-Patterns_RPAR_": + {"display": "g", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "Selecting Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "g (in Ordinary vs Strict Implicit Parameters)": + [{"id": "g-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_", + "data": + {"/Terms/Functions/#g-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_": + {"display": "g", + "context": + ["The Lean Language Reference", + "Terms", + "Functions", + "Implicit Parameters", + "Ordinary vs Strict Implicit Parameters"]}}, + "address": "/Terms/Functions/"}], + "g (in Mutual recursion without parameter decrease)": + [{"id": "g-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#g-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_": + {"display": "g", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Mutual Well-Founded Recursion", + "Mutual recursion without parameter decrease"]}}, "address": "/Definitions/Recursive-Definitions/"}], + "g (in Impossible Code Paths)": + [{"id": "g-_LPAR_in-Impossible-Code-Paths_RPAR_", + "data": + {"/Basic-Types/The-Empty-Type/#g-_LPAR_in-Impossible-Code-Paths_RPAR_": + {"display": "g", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Empty Type", + "Impossible Code Paths"]}}, + "address": "/Basic-Types/The-Empty-Type/"}], + "g (in E-matching Patterns)": + [{"id": "g-_LPAR_in-E-matching-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#g-_LPAR_in-E-matching-Patterns_RPAR_": + {"display": "g", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "E-matching Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "g (in Dead Code and Subsingleton Elimination)": + [{"id": "g-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_", + "data": + {"/Basic-Propositions/Truth/#g-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_": + {"display": "g", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Truth", + "Dead Code and Subsingleton Elimination"]}}, + "address": "/Basic-Propositions/Truth/"}], "funext'": [{"id": "funext___", - "data": null, + "data": + {"/The-Type-System/Quotients/#funext___": + {"display": "funext'", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotients and Function Extensionality"]}}, "address": "/The-Type-System/Quotients/"}], - "fromBaseIO": - [{"id": "fromBaseIO", - "data": null, + "fromImage (in Noncomputable instance in namespace)": + [{"id": "fromImage-_LPAR_in-Noncomputable-instance-in-namespace_RPAR_", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#fromImage-_LPAR_in-Noncomputable-instance-in-namespace_RPAR_": + {"display": "fromImage", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Noncomputable instance in namespace"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}], + "fromBaseIO (in Lifting IO Monads)": + [{"id": "fromBaseIO-_LPAR_in-Lifting--IO--Monads_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Lifting-Monads/#fromBaseIO-_LPAR_in-Lifting--IO--Monads_RPAR_": + {"display": "fromBaseIO", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lifting Monads", + "Lifting IO Monads"]}}, "address": "/Functors___-Monads-and--do--Notation/Lifting-Monads/"}], - "friday": - [{"id": "friday", - "data": null, + "friday (in Implementing Coercions)": + [{"id": "friday-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#friday-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "friday", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "four": - [{"id": "four", - "data": null, + "four (in Defining Coercions)": + [{"id": "four-_LPAR_in-Defining-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#four-_LPAR_in-Defining-Coercions_RPAR_": + {"display": "four", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Defining Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "fooInst": - [{"id": "fooInst", - "data": null, + "fooInst (in Default Size Instance)": + [{"id": "fooInst-_LPAR_in-Default-Size-Instance_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#fooInst-_LPAR_in-Default-Size-Instance_RPAR_": + {"display": "fooInst", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Well-Founded Relations", + "Default Size Instance"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "find": - [{"id": "find", - "data": null, + "find (in Definition by Partial Fixpoint)": + [{"id": "find-_LPAR_in-Definition-by-Partial-Fixpoint_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#find-_LPAR_in-Definition-by-Partial-Fixpoint_RPAR_": + {"display": "find", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Definition by Partial Fixpoint"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "fib": - [{"id": "fib-next-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "fib-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "fib-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "fib-next", - "data": null, + "filled (in Grouping and Filling)": + [{"id": "filled-_LPAR_in-Grouping-and-Filling_RPAR_", + "data": + {"/Interacting-with-Lean/#filled-_LPAR_in-Grouping-and-Filling_RPAR_": + {"display": "filled", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Format", + "Grouping and Filling"]}}, + "address": "/Interacting-with-Lean/"}], + "fib (in Termination Proof Obligations)": + [{"id": "fib-_LPAR_in-Termination-Proof-Obligations_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_-next": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Termination Proof Obligations"]}, + "/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Termination Proof Obligations"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "fib", - "data": null, + {"id": "fib-_LPAR_in-Termination-Proof-Obligations_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_-next": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Termination Proof Obligations"]}, + "/Definitions/Recursive-Definitions/#fib-_LPAR_in-Termination-Proof-Obligations_RPAR_": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Termination Proof Obligations"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "false_is_true": - [{"id": "two_eq_five", "data": null, "address": "/Axioms/"}], - "fact": - [{"id": "fact", - "data": null, + "fib (in Refined Parameters)": + [{"id": "fib-_LPAR_in-Refined-Parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Refined-Parameters_RPAR_": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Refined Parameters"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "fib (in Nested Patterns and Sub-Terms)": + [{"id": "fib-_LPAR_in-Nested-Patterns-and-Sub-Terms_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Nested-Patterns-and-Sub-Terms_RPAR_": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Nested Patterns and Sub-Terms"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "fib (in Enriched Proof Obligation Contexts)": + [{"id": "fib-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#fib-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_": + {"display": "fib", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "false_is_true (in Inconsistencies From Axioms)": + [{"id": "false_is_true-_LPAR_in-Inconsistencies-From-Axioms_RPAR_", + "data": + {"/Axioms/#false_is_true-_LPAR_in-Inconsistencies-From-Axioms_RPAR_": + {"display": "false_is_true", + "context": + ["The Lean Language Reference", + "Axioms", + "Consistency", + "Inconsistencies From Axioms"]}}, + "address": "/Axioms/"}], + "fact (in Custom Operators in Lean's Output)": + [{"id": "fact-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_", + "data": + {"/Notations-and-Macros/Custom-Operators/#fact-_LPAR_in-Custom-Operators-in-Lean___s-Output_RPAR_": + {"display": "fact", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Custom Operators", + "Custom Operators in Lean's Output"]}}, "address": "/Notations-and-Macros/Custom-Operators/"}], - "f": - [{"id": "f-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Basic-Types/The-Empty-Type/"}, - {"id": "f-next-next-next-next-next", - "data": null, - "address": "/Terms/Functions/"}, - {"id": "f-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "f-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "f-next-next-next-next-next-next-next", - "data": null, - "address": "/Basic-Propositions/Truth/"}, - {"id": "f-next-next-next-next-next-next", - "data": null, - "address": "/Terms/Pattern-Matching/"}, - {"id": "f", - "data": null, + "f (in Termination failure)": + [{"id": "f-_LPAR_in-Termination-failure_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#f-_LPAR_in-Termination-failure_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Inferring Well-Founded Recursion", + "Termination failure"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "f (in Selecting Patterns)": + [{"id": "f-_LPAR_in-Selecting-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#f-_LPAR_in-Selecting-Patterns_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "Selecting Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "f (in Ordinary vs Strict Implicit Parameters)": + [{"id": "f-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_", + "data": + {"/Terms/Functions/#f-_LPAR_in-Ordinary-vs-Strict-Implicit-Parameters_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Terms", + "Functions", + "Implicit Parameters", + "Ordinary vs Strict Implicit Parameters"]}}, + "address": "/Terms/Functions/"}], + "f (in Mutual recursion without parameter decrease)": + [{"id": "f-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#f-_LPAR_in-Mutual-recursion-without-parameter-decrease_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Mutual Well-Founded Recursion", + "Mutual recursion without parameter decrease"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "f (in Impossible Code Paths)": + [{"id": "f-_LPAR_in-Impossible-Code-Paths_RPAR_", + "data": + {"/Basic-Types/The-Empty-Type/#f-_LPAR_in-Impossible-Code-Paths_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Empty Type", + "Impossible Code Paths"]}}, + "address": "/Basic-Types/The-Empty-Type/"}], + "f (in Expanding Quasiquotation)": + [{"id": "f-_LPAR_in-Expanding-Quasiquotation_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#f-_LPAR_in-Expanding-Quasiquotation_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Quasiquotation", + "Expanding Quasiquotation"]}}, + "address": "/Notations-and-Macros/Macros/"}], + "f (in Enriched Proof Obligation Contexts)": + [{"id": "f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}, + "/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}, + "/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "f-next", - "data": null, + {"id": "f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next", + "data": + {"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}, + "/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}, + "/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "f-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Notations-and-Macros/Macros/"}, - {"id": "f-next-next-next-next", - "data": null, + {"id": "f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next-next": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}, + "/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_-next": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}, + "/Definitions/Recursive-Definitions/#f-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}}, "address": "/Definitions/Recursive-Definitions/"}], + "f (in E-matching Patterns)": + [{"id": "f-_LPAR_in-E-matching-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#f-_LPAR_in-E-matching-Patterns_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "E-matching Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "f (in Discriminant Refinement)": + [{"id": "f-_LPAR_in-Discriminant-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#f-_LPAR_in-Discriminant-Refinement_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Discriminant Refinement", + "Discriminant Refinement"]}}, + "address": "/Terms/Pattern-Matching/"}], + "f (in Dead Code and Subsingleton Elimination)": + [{"id": "f-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_", + "data": + {"/Basic-Propositions/Truth/#f-_LPAR_in-Dead-Code-and-Subsingleton-Elimination_RPAR_": + {"display": "f", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Truth", + "Dead Code and Subsingleton Elimination"]}}, + "address": "/Basic-Propositions/Truth/"}], "extEq": - [{"id": "ExtFun", - "data": null, + [{"id": "extEq", + "data": + {"/The-Type-System/Quotients/#extEq": + {"display": "extEq", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotients and Function Extensionality"]}}, "address": "/The-Type-System/Quotients/"}], "extApp": [{"id": "extApp", - "data": null, + "data": + {"/The-Type-System/Quotients/#extApp": + {"display": "extApp", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotients and Function Extensionality"]}}, "address": "/The-Type-System/Quotients/"}], - "expandRep": - [{"id": "expandRep", - "data": null, + "expandRep (in The Macro Attribute)": + [{"id": "expandRep-_LPAR_in-The-Macro-Attribute_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#expandRep-_LPAR_in-The-Macro-Attribute_RPAR_": + {"display": "expandRep", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Defining Macros", + "The Macro Attribute", + "The Macro Attribute"]}}, "address": "/Notations-and-Macros/Macros/"}], - "ex_four_plus_five'": - [{"id": "ex_four_plus_five___", - "data": null, + "ex_four_plus_five' (in Proving Existential Statements)": + [{"id": + "ex_four_plus_five___-_LPAR_in-Proving-Existential-Statements_RPAR_", + "data": + {"/Basic-Propositions/Quantifiers/#ex_four_plus_five___-_LPAR_in-Proving-Existential-Statements_RPAR_": + {"display": "ex_four_plus_five'", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Quantifiers", + "Proving Existential Statements"]}}, "address": "/Basic-Propositions/Quantifiers/"}], - "ex_four_plus_five": - [{"id": "ex_four_plus_five", - "data": null, + "ex_four_plus_five (in Proving Existential Statements)": + [{"id": "ex_four_plus_five-_LPAR_in-Proving-Existential-Statements_RPAR_", + "data": + {"/Basic-Propositions/Quantifiers/#ex_four_plus_five-_LPAR_in-Proving-Existential-Statements_RPAR_": + {"display": "ex_four_plus_five", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Quantifiers", + "Proving Existential Statements"]}}, "address": "/Basic-Propositions/Quantifiers/"}], - "ex3": - [{"id": "ex3", "data": null, "address": "/Notations-and-Macros/Macros/"}], - "ex2": - [{"id": "ex2-next", - "data": null, - "address": "/Notations-and-Macros/Macros/"}, - {"id": "ex2", "data": null, "address": "/Notations-and-Macros/Macros/"}], - "ex1": - [{"id": "ex1", "data": null, "address": "/Notations-and-Macros/Macros/"}, - {"id": "ex1-next", - "data": null, + "ex3 (in Suffixed Splices)": + [{"id": "ex3-_LPAR_in-Suffixed-Splices_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#ex3-_LPAR_in-Suffixed-Splices_RPAR_": + {"display": "ex3", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Splices", + "Suffixed Splices"]}}, "address": "/Notations-and-Macros/Macros/"}], - "everyOther": - [{"id": "everyOther", - "data": null, + "ex2 (in Suffixed Splices)": + [{"id": "ex2-_LPAR_in-Suffixed-Splices_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#ex2-_LPAR_in-Suffixed-Splices_RPAR_": + {"display": "ex2", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Splices", + "Suffixed Splices"]}}, + "address": "/Notations-and-Macros/Macros/"}], + "ex2 (in Antiquotation Annotations)": + [{"id": "ex2-_LPAR_in-Antiquotation-Annotations_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#ex2-_LPAR_in-Antiquotation-Annotations_RPAR_": + {"display": "ex2", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Quasiquotation", + "Antiquotation Annotations"]}}, + "address": "/Notations-and-Macros/Macros/"}], + "ex1 (in Suffixed Splices)": + [{"id": "ex1-_LPAR_in-Suffixed-Splices_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#ex1-_LPAR_in-Suffixed-Splices_RPAR_": + {"display": "ex1", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Splices", + "Suffixed Splices"]}}, + "address": "/Notations-and-Macros/Macros/"}], + "ex1 (in Antiquotation Annotations)": + [{"id": "ex1-_LPAR_in-Antiquotation-Annotations_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#ex1-_LPAR_in-Antiquotation-Annotations_RPAR_": + {"display": "ex1", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Quotation", + "Quasiquotation", + "Antiquotation Annotations"]}}, + "address": "/Notations-and-Macros/Macros/"}], + "everyOther (in Recursive Equational Lemmas)": + [{"id": "everyOther-_LPAR_in-Recursive-Equational-Lemmas_RPAR_", + "data": + {"/Elaboration-and-Compilation/#everyOther-_LPAR_in-Recursive-Equational-Lemmas_RPAR_": + {"display": "everyOther", + "context": + ["The Lean Language Reference", + "Elaboration and Compilation", + "Elaboration Results", + "Recursive Equational Lemmas"]}}, "address": "/Elaboration-and-Compilation/"}], - "even": - [{"id": "odd", - "data": null, + "even (in Mutual Structural Recursion Over Non-Mutual Types)": + [{"id": + "even-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#even-_LPAR_in-Mutual-Structural-Recursion-Over-Non-Mutual-Types_RPAR_": + {"display": "even", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Non-Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "emptyIsEmpty": - [{"id": "emptyIsEmpty", - "data": null, + "endsOrDefault (in Noncomputable dependency can be made computable)": + [{"id": + "endsOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_", + "data": + {"/Error-Explanations/lean___dependsOnNoncomputable/#endsOrDefault-_LPAR_in-Noncomputable-dependency-can-be-made-computable_RPAR_": + {"display": "endsOrDefault", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.dependsOnNoncomputable", + "Examples", + "Noncomputable dependency can be made computable"]}}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}], + "emptyNats (in Implicit argument cannot be inferred)": + [{"id": "emptyNats-_LPAR_in-Implicit-argument-cannot-be-inferred_RPAR_", + "data": + {"/Error-Explanations/lean___inferDefTypeFailed/#emptyNats-_LPAR_in-Implicit-argument-cannot-be-inferred_RPAR_-next": + {"display": "emptyNats", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferDefTypeFailed", + "Examples", + "Implicit argument cannot be inferred"]}, + "/Error-Explanations/lean___inferDefTypeFailed/#emptyNats-_LPAR_in-Implicit-argument-cannot-be-inferred_RPAR_": + {"display": "emptyNats", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferDefTypeFailed", + "Examples", + "Implicit argument cannot be inferred"]}}, + "address": "/Error-Explanations/lean___inferDefTypeFailed/"}, + {"id": + "emptyNats-_LPAR_in-Implicit-argument-cannot-be-inferred_RPAR_-next", + "data": + {"/Error-Explanations/lean___inferDefTypeFailed/#emptyNats-_LPAR_in-Implicit-argument-cannot-be-inferred_RPAR_-next": + {"display": "emptyNats", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferDefTypeFailed", + "Examples", + "Implicit argument cannot be inferred"]}, + "/Error-Explanations/lean___inferDefTypeFailed/#emptyNats-_LPAR_in-Implicit-argument-cannot-be-inferred_RPAR_": + {"display": "emptyNats", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferDefTypeFailed", + "Examples", + "Implicit argument cannot be inferred"]}}, + "address": "/Error-Explanations/lean___inferDefTypeFailed/"}], + "emptyIsEmpty (in Extending trivial)": + [{"id": "emptyIsEmpty-_LPAR_in-Extending--trivial_RPAR_", + "data": + {"/Tactic-Proofs/Custom-Tactics/#emptyIsEmpty-_LPAR_in-Extending--trivial_RPAR_": + {"display": "emptyIsEmpty", + "context": + ["The Lean Language Reference", + "Tactic Proofs", + "Custom Tactics", + "Tactic Macros", + "Extensible Tactic Macros", + "Extending trivial"]}}, "address": "/Tactic-Proofs/Custom-Tactics/"}], - "elabNotType": - [{"id": "elabNotType", - "data": null, + "elabNotType (in Avoiding a Type)": + [{"id": "elabNotType-_LPAR_in-Avoiding-a-Type_RPAR_", + "data": + {"/Notations-and-Macros/Elaborators/#elabNotType-_LPAR_in-Avoiding-a-Type_RPAR_": + {"display": "elabNotType", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Elaborators", + "Term Elaborators", + "Avoiding a Type"]}}, "address": "/Notations-and-Macros/Elaborators/"}], - "e": - [{"id": "e", - "data": null, + "e (in Duplicated Terms in Notation Expansion)": + [{"id": "e-_LPAR_in-Duplicated-Terms-in-Notation-Expansion_RPAR_", + "data": + {"/Notations-and-Macros/Notations/#e-_LPAR_in-Duplicated-Terms-in-Notation-Expansion_RPAR_": + {"display": "e", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Notations", + "Duplicated Terms in Notation Expansion"]}}, "address": "/Notations-and-Macros/Notations/"}], - "div.eq2": - [{"id": "div___eq2", - "data": null, + "div_trans (in Inspecting Patterns)": + [{"id": "div_trans-_LPAR_in-Inspecting-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#div_trans-_LPAR_in-Inspecting-Patterns_RPAR_": + {"display": "div_trans", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Inspecting Patterns", + "Inspecting Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "div.eq2 (in Division by Iterated Subtraction: Termination Proof)": + [{"id": + "div___eq2-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#div___eq2-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_": + {"display": "div.eq2", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "div.eq1": - [{"id": "div___eq2", - "data": null, + "div.eq1 (in Division by Iterated Subtraction: Termination Proof)": + [{"id": + "div___eq1-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#div___eq1-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_": + {"display": "div.eq1", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "div.eq0": - [{"id": "div___eq0", - "data": null, + "div.eq0 (in Division by Iterated Subtraction: Termination Proof)": + [{"id": + "div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_-next": + {"display": "div.eq0", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}, + "/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_": + {"display": "div.eq0", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "div___eq2", - "data": null, + {"id": + "div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_-next": + {"display": "div.eq0", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}, + "/Definitions/Recursive-Definitions/#div___eq0-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_": + {"display": "div.eq0", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "div": - [{"id": "div-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "div", - "data": null, + "div (in Division by Iterated Subtraction: Termination Proof)": + [{"id": + "div-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#div-_LPAR_in-Division-by-Iterated-Subtraction___-Termination-Proof_RPAR_": + {"display": "div", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Theory and Construction", + "Division by Iterated Subtraction: Termination Proof"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "discardElems": - [{"id": "discardElems", - "data": null, + "div (in Division by Iterated Subtraction)": + [{"id": "div-_LPAR_in-Division-by-Iterated-Subtraction_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#div-_LPAR_in-Division-by-Iterated-Subtraction_RPAR_": + {"display": "div", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Division by Iterated Subtraction"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "disjoinToNat (in Unresolvable name inferred by dotted-identifier notation)": + [{"id": + "disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next-next": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}, + "/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}, + "/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": + "disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next-next": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}, + "/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}, + "/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": + "disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next-next": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}, + "/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_-next": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}, + "/Error-Explanations/lean___unknownIdentifier/#disjoinToNat-_LPAR_in-Unresolvable-name-inferred-by-dotted-identifier-notation_RPAR_": + {"display": "disjoinToNat", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Unresolvable name inferred by dotted-identifier notation"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "discardElems (in Memory Re-Use in IR)": + [{"id": "discardElems-_LPAR_in-Memory-Re-Use-in-IR_RPAR_", + "data": + {"/Run-Time-Code/Reference-Counting/#discardElems-_LPAR_in-Memory-Re-Use-in-IR_RPAR_": + {"display": "discardElems", + "context": + ["The Lean Language Reference", + "Run-Time Code", + "Reference Counting", + "Compiler IR", + "Memory Re-Use in IR"]}}, "address": "/Run-Time-Code/Reference-Counting/"}], - "deriveIsEnum": - [{"id": "deriveIsEnum", - "data": null, + "deriveIsEnum (in Deriving Handlers)": + [{"id": "deriveIsEnum-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#deriveIsEnum-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "deriveIsEnum", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "countdown'": - [{"id": "countdown___-next-next", - "data": null, + "countdown' (in Structural Recursion vs Subtraction)": + [{"id": "countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_-next": + {"display": "countdown'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Structural Recursion vs Subtraction"]}, + "/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_": + {"display": "countdown'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Structural Recursion vs Subtraction"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "countdown___-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "countdown___", - "data": null, + {"id": + "countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_-next": + {"display": "countdown'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Structural Recursion vs Subtraction"]}, + "/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_": + {"display": "countdown'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Structural Recursion vs Subtraction"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "countdown": - [{"id": "countdown-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "countdown", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "runCountdown", - "data": null, + "countdown' (in Structural Recursion and Definitional Equality)": + [{"id": + "countdown___-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#countdown___-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_": + {"display": "countdown'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Structural Recursion and Definitional Equality"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "countdown (in Structural Recursion vs Subtraction)": + [{"id": "countdown-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#countdown-_LPAR_in-Structural-Recursion-vs-Subtraction_RPAR_": + {"display": "countdown", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Structural Recursion vs Subtraction"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "countdown (in Structural Recursion and Definitional Equality)": + [{"id": + "countdown-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#countdown-_LPAR_in-Structural-Recursion-and-Definitional-Equality_RPAR_": + {"display": "countdown", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Structural Recursion and Definitional Equality"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "countdown (in Redirecting Standard I/O to Strings)": + [{"id": "countdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_", + "data": + {"/IO/Files___-File-Handles___-and-Streams/#countdown-_LPAR_in-Redirecting-Standard-I___O-to-Strings_RPAR_": + {"display": "countdown", + "context": + ["The Lean Language Reference", + "IO", + "Files, File Handles, and Streams", + "Standard I/O", + "Redirecting Standard I/O to Strings"]}}, "address": "/IO/Files___-File-Handles___-and-Streams/"}], - "count": - [{"id": "count", "data": null, "address": "/The-Type-System/Universes/"}], - "coords": - [{"id": "coords", - "data": null, + "count (in Universe monomorphism in auto-bound implicit parameters)": + [{"id": + "count-_LPAR_in-Universe-monomorphism-in-auto-bound-implicit-parameters_RPAR_", + "data": + {"/The-Type-System/Universes/#count-_LPAR_in-Universe-monomorphism-in-auto-bound-implicit-parameters_RPAR_": + {"display": "count", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe monomorphism in auto-bound implicit parameters"]}}, + "address": "/The-Type-System/Universes/"}], + "cos": + [{"id": "cos", + "data": + {"/The--grind--tactic/Bigger-Examples/#cos": + {"display": "cos", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "Integrating grind 's Features"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "coords (in Field Indices and Structure Inheritance)": + [{"id": "coords-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#coords-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_": + {"display": "coords", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Field Indices and Structure Inheritance"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "constantIndex": - [{"id": "Fin______zero", - "data": null, + "constantIndex (in Ineligible decreasing parameters)": + [{"id": "constantIndex-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#constantIndex-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "constantIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "color": - [{"id": "Forest___statement", - "data": null, + "color (in Explicit Root Namespace)": + [{"id": "color-_LPAR_in-Explicit-Root-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#color-_LPAR_in-Explicit-Root-Namespace_RPAR_": + {"display": "color", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Explicit Root Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "broccoli": - [{"id": "sweetPotato", - "data": null, + "broccoli (in Using Ord Instances for LT and LE Instances)": + [{"id": + "broccoli-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_", + "data": + {"/Type-Classes/Basic-Classes/#broccoli-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_": + {"display": "broccoli", + "context": + ["The Lean Language Reference", + "Type Classes", + "Basic Classes", + "Ordering", + "Using Ord Instances for LT and LE Instances"]}}, "address": "/Type-Classes/Basic-Classes/"}], - "boolCases": - [{"id": "boolCases", "data": null, "address": "/Terms/Pattern-Matching/"}, - {"id": "boolCases-next", - "data": null, + "boolCases (in Matching, With and Without Generalization)": + [{"id": + "boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_", + "data": + {"/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_-next": + {"display": "boolCases", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Generalization", + "Matching, With and Without Generalization"]}, + "/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_": + {"display": "boolCases", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Generalization", + "Matching, With and Without Generalization"]}}, + "address": "/Terms/Pattern-Matching/"}, + {"id": + "boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_-next", + "data": + {"/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_-next": + {"display": "boolCases", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Generalization", + "Matching, With and Without Generalization"]}, + "/Terms/Pattern-Matching/#boolCases-_LPAR_in-Matching___-With-and-Without-Generalization_RPAR_": + {"display": "boolCases", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Generalization", + "Matching, With and Without Generalization"]}}, "address": "/Terms/Pattern-Matching/"}], - "bogus": [{"id": "bogus", "data": null, "address": "/Introduction/"}], - "binarySearch": - [{"id": "binarySearch", - "data": null, + "bogus": + [{"id": "bogus", + "data": + {"/Introduction/#bogus": + {"display": "bogus", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Lean Code"]}}, + "address": "/Introduction/"}], + "binarySearch (in Array Indexing)": + [{"id": "binarySearch-_LPAR_in-Array-Indexing_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#binarySearch-_LPAR_in-Array-Indexing_RPAR_": + {"display": "binarySearch", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Inferring Well-Founded Recursion", + "Array Indexing"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "asString": - [{"id": "succ", - "data": null, + "asString (in Coercing Decorated Functions to Function Types)": + [{"id": + "asString-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#asString-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "asString", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "append": - [{"id": "succ", - "data": null, + "append (in Coercing Decorated Functions to Function Types)": + [{"id": + "append-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#append-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "append", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "answer_eq_other": - [{"id": "answer_eq_other", - "data": null, + "answer_eq_other (in Partial Functions in Proofs)": + [{"id": "answer_eq_other-_LPAR_in-Partial-Functions-in-Proofs_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#answer_eq_other-_LPAR_in-Partial-Functions-in-Proofs_RPAR_": + {"display": "answer_eq_other", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Partial Functions", + "Partial Functions in Proofs"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "answerUser": - [{"id": "answerUser", - "data": null, + "answerUser (in Partial Functions in Proofs)": + [{"id": "answerUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#answerUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_": + {"display": "answerUser", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Partial Functions", + "Partial Functions in Proofs"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "answerOtherUser": - [{"id": "answerUser", - "data": null, + "answerOtherUser (in Partial Functions in Proofs)": + [{"id": "answerOtherUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#answerOtherUser-_LPAR_in-Partial-Functions-in-Proofs_RPAR_": + {"display": "answerOtherUser", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Partial Functions", + "Partial Functions in Proofs"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "afterVarying": - [{"id": "WithParam______zero", - "data": null, + "afterVarying (in Ineligible decreasing parameters)": + [{"id": "afterVarying-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#afterVarying-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "afterVarying", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "addPairs": - [{"id": "NatPair___x-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "NatPair___x", - "data": null, + "addPairs (in Local Instances)": + [{"id": "addPairs-_LPAR_in-Local-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#addPairs-_LPAR_in-Local-Instances_RPAR_": + {"display": "addPairs", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "addFirstThird": - [{"id": "addFirstThird", - "data": null, + "addPairs (in Local Instances Have Priority)": + [{"id": "addPairs-_LPAR_in-Local-Instances-Have-Priority_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#addPairs-_LPAR_in-Local-Instances-Have-Priority_RPAR_": + {"display": "addPairs", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances Have Priority"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "addFirstThird (in Idiom Brackets)": + [{"id": "addFirstThird-_LPAR_in-Idiom-Brackets_RPAR_", + "data": + {"/Notations-and-Macros/Macros/#addFirstThird-_LPAR_in-Idiom-Brackets_RPAR_": + {"display": "addFirstThird", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Macros", + "Defining Macros", + "The macro_rules Command", + "Idiom Brackets"]}}, "address": "/Notations-and-Macros/Macros/"}], - "addAll": - [{"id": "addAll", "data": null, "address": "/Namespaces-and-Sections/"}, - {"id": "addAll-next", - "data": null, + "addAll (in Section Variables)": + [{"id": "addAll-_LPAR_in-Section-Variables_RPAR_", + "data": + {"/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_-next": + {"display": "addAll", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Section Variables"]}, + "/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_": + {"display": "addAll", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Section Variables"]}}, + "address": "/Namespaces-and-Sections/"}, + {"id": "addAll-_LPAR_in-Section-Variables_RPAR_-next", + "data": + {"/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_-next": + {"display": "addAll", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Section Variables"]}, + "/Namespaces-and-Sections/#addAll-_LPAR_in-Section-Variables_RPAR_": + {"display": "addAll", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Section Variables", + "Section Variables"]}}, "address": "/Namespaces-and-Sections/"}], - "add'": - [{"id": "add___-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "add___", - "data": null, + "addAlias'' (in Modifying Values in Maps)": + [{"id": "addAlias______-_LPAR_in-Modifying-Values-in-Maps_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#addAlias______-_LPAR_in-Modifying-Values-in-Maps_RPAR_": + {"display": "addAlias''", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Suitable Operators for Uniqueness", + "Modifying Values in Maps"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "addAlias' (in Modifying Values in Maps)": + [{"id": "addAlias___-_LPAR_in-Modifying-Values-in-Maps_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#addAlias___-_LPAR_in-Modifying-Values-in-Maps_RPAR_": + {"display": "addAlias'", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Suitable Operators for Uniqueness", + "Modifying Values in Maps"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "addAlias (in Modifying Values in Maps)": + [{"id": "addAlias-_LPAR_in-Modifying-Values-in-Maps_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#addAlias-_LPAR_in-Modifying-Values-in-Maps_RPAR_": + {"display": "addAlias", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Suitable Operators for Uniqueness", + "Modifying Values in Maps"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "add' (in Recursion vs Recursors)": + [{"id": "add___-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#add___-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "add'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "add' (in Integer Negation and Addition)": + [{"id": "add___-_LPAR_in-Integer-Negation-and-Addition_RPAR_", + "data": + {"/The-Type-System/Quotients/#add___-_LPAR_in-Integer-Negation-and-Addition_RPAR_": + {"display": "add'", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Eliminating Quotients", + "Integer Negation and Addition"]}}, "address": "/The-Type-System/Quotients/"}], - "add": - [{"id": "add", - "data": null, - "address": "/Definitions/Headers-and-Signatures/"}, - {"id": "add-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "add-next-next", - "data": null, + "add (in Recursion vs Recursors)": + [{"id": "add-_LPAR_in-Recursion-vs-Recursors_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#add-_LPAR_in-Recursion-vs-Recursors_RPAR_": + {"display": "add", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Recursion vs Recursors"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "add (in Parameter Scope)": + [{"id": "add-_LPAR_in-Parameter-Scope_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#add-_LPAR_in-Parameter-Scope_RPAR_": + {"display": "add", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Bracketed Parameter Bindings", + "Parameter Scope"]}}, + "address": "/Definitions/Headers-and-Signatures/"}], + "add (in Match Patterns Follow Reduction)": + [{"id": "add-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_", + "data": + {"/Terms/Pattern-Matching/#add-_LPAR_in-Match-Patterns-Follow-Reduction_RPAR_": + {"display": "add", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Custom Pattern Functions", + "Match Patterns Follow Reduction"]}}, "address": "/Terms/Pattern-Matching/"}], - "ack": - [{"id": "ack-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "ack-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "ack", - "data": null, + "ack (in Termination Proof Tactics During Inference)": + [{"id": "ack-_LPAR_in-Termination-Proof-Tactics-During-Inference_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#ack-_LPAR_in-Termination-Proof-Tactics-During-Inference_RPAR_": + {"display": "ack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Inferring Well-Founded Recursion", + "Termination Proof Tactics During Inference"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "accessControl": - [{"id": "main-next-next-next", - "data": null, + "ack (in No Backtracking of Lexicographic Order)": + [{"id": "ack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#ack-_LPAR_in-No-Backtracking-of-Lexicographic-Order_RPAR_": + {"display": "ack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Default Termination Proof Tactic", + "No Backtracking of Lexicographic Order"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "ack (in Monadic functions)": + [{"id": "ack-_LPAR_in-Monadic-functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#ack-_LPAR_in-Monadic-functions_RPAR_": + {"display": "ack", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "accessControl (in Throwing and Catching Errors)": + [{"id": "accessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_", + "data": + {"/IO/Logical-Model/#accessControl-_LPAR_in-Throwing-and-Catching-Errors_RPAR_": + {"display": "accessControl", + "context": + ["The Lean Language Reference", + "IO", + "Logical Model", + "Errors and Error Handling in IO", + "Throwing and Catching Errors"]}}, "address": "/IO/Logical-Model/"}], - "aNonemptySumInstance": - [{"id": "aNonemptySumInstance", - "data": null, + "abcs (in Atomic Types and Repr)": + [{"id": "abcs-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#abcs-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "abcs", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "abc (in Atomic Types and Repr)": + [{"id": "abc-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#abc-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "abc", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "aNonemptySumInstance (in Implicit and Explicit Parameters to Instances)": + [{"id": + "aNonemptySumInstance-_LPAR_in-Implicit-and-Explicit-Parameters-to-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#aNonemptySumInstance-_LPAR_in-Implicit-and-Explicit-Parameters-to-Instances_RPAR_": + {"display": "aNonemptySumInstance", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Instance Parameters and Synthesis", + "Implicit and Explicit Parameters to Instances"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "_private.Manual.Language.InductiveTypes.Structures.0.NatStringBimap.mk": + "_private.Manual.Language.InductiveTypes.Structures.0.NatStringBimap.mk (in Modifiers on structure constructor)": [{"id": - "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk", - "data": null, + "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk-_LPAR_in-Modifiers-on-structure-constructor_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk-_LPAR_in-Modifiers-on-structure-constructor_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Modifiers on structure constructor"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Z_mk'_respects_eq": - [{"id": "Z_mk____respects_eq", - "data": null, + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.values": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___values", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___values": + {"display": "values", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.size_keys'": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys___", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys___": + {"display": "size_keys'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.size_keys": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___size_keys": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.mem_indices_of_mem": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___mem_indices_of_mem", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___mem_indices_of_mem": + {"display": "mem_indices_of_mem", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.keys": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___keys", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___keys": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.indices": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___indices", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___indices": + {"display": "indices", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem_indices_lt": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_indices_lt", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_indices_lt": + {"display": "getElem_indices_lt", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem_def": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_def", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem_def": + {"display": "getElem_def", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem?_def": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def": + {"display": "getElem?_def", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.getElem!_def": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___getElem____def-next": + {"display": "getElem!_def", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.WF'": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF___", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF___": + {"display": "WF'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.Manual.Grind.ExtendedExamples.IndexMap.0.IndexMap.WF": + [{"id": + "_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___Manual___Grind___ExtendedExamples___IndexMap___0___IndexMap___WF": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.values": + [{"id": "_private___0___IndexMap___values", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___values": + {"display": "values", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.size_keys'": + [{"id": "_private___0___IndexMap___size_keys___-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___-next": + {"display": "size_keys'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___": + {"display": "size_keys'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___size_keys___", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___-next": + {"display": "size_keys'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys___": + {"display": "size_keys'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.size_keys": + [{"id": "_private___0___IndexMap___size_keys-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next-next": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___size_keys", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next-next": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___size_keys-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next-next": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys-next": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___size_keys": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.mem_indices_of_mem": + [{"id": "_private___0___IndexMap___mem_indices_of_mem", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___mem_indices_of_mem": + {"display": "mem_indices_of_mem", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.keys": + [{"id": "_private___0___IndexMap___keys-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next-next": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___keys", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next-next": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___keys-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next-next": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys-next": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___keys": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.indices": + [{"id": "_private___0___IndexMap___indices", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___indices": + {"display": "indices", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.getElem_indices_lt": + [{"id": "_private___0___IndexMap___getElem_indices_lt", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem_indices_lt": + {"display": "getElem_indices_lt", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.getElem_def": + [{"id": "_private___0___IndexMap___getElem_def", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem_def": + {"display": "getElem_def", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.getElem?_def": + [{"id": "_private___0___IndexMap___getElem____def", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem____def": + {"display": "getElem?_def", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.getElem!_def": + [{"id": "_private___0___IndexMap___getElem____def-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___getElem____def-next": + {"display": "getElem!_def", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.WF'": + [{"id": "_private___0___IndexMap___WF___", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF___": + {"display": "WF'", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "_private.0.IndexMap.WF": + [{"id": "_private___0___IndexMap___WF-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___WF", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___WF-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "_private___0___IndexMap___WF-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF-next": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#_private___0___IndexMap___WF": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "Z_mk'_respects_eq (in Manually Quotiented Integers)": + [{"id": "Z_mk____respects_eq-_LPAR_in-Manually-Quotiented-Integers_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z_mk____respects_eq-_LPAR_in-Manually-Quotiented-Integers_RPAR_": + {"display": "Z_mk'_respects_eq", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Manually Quotiented Integers"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.mk'": - [{"id": "Z___mk___", - "data": null, + "Z.mk' (in Manually Quotiented Integers)": + [{"id": "Z___mk___-_LPAR_in-Manually-Quotiented-Integers_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___mk___-_LPAR_in-Manually-Quotiented-Integers_RPAR_": + {"display": "Z.mk'", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Manually Quotiented Integers"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.mk": - [{"id": "Z___mk", - "data": null, + "Z.mk (in The Integers as a Quotient Type)": + [{"id": "Z___mk-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___mk-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_": + {"display": "Z.mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Introducing Quotients", + "The Integers as a Quotient Type"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.instSetoid": - [{"id": "Z___instSetoid", - "data": null, + "Z.instSetoid (in The Integers as a Quotient Type)": + [{"id": "Z___instSetoid-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___instSetoid-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_": + {"display": "Z.instSetoid", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Introducing Quotients", + "The Integers as a Quotient Type"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.eq.eqv": - [{"id": "Z___eq___eqv", - "data": null, + "Z.eq.eqv (in The Integers as a Quotient Type)": + [{"id": "Z___eq___eqv-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___eq___eqv-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_": + {"display": "Z.eq.eqv", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Introducing Quotients", + "The Integers as a Quotient Type"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.eq": - [{"id": "Z___eq", - "data": null, + "Z.eq (in The Integers as a Quotient Type)": + [{"id": "Z___eq-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___eq-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_": + {"display": "Z.eq", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Introducing Quotients", + "The Integers as a Quotient Type"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.canonical": - [{"id": "Z___a", "data": null, "address": "/The-Type-System/Quotients/"}], - "Z.b": - [{"id": "Z___a", "data": null, "address": "/The-Type-System/Quotients/"}], - "Z.add_neg_inverse": - [{"id": "Z___add_neg_inverse", - "data": null, + "Z.canonical (in Manually Quotiented Integers)": + [{"id": "Z___canonical-_LPAR_in-Manually-Quotiented-Integers_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___canonical-_LPAR_in-Manually-Quotiented-Integers_RPAR_": + {"display": "canonical", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Manually Quotiented Integers"]}}, "address": "/The-Type-System/Quotients/"}], - "Z.a": - [{"id": "Z___a", "data": null, "address": "/The-Type-System/Quotients/"}], - "Z'": - [{"id": "Z___eq", - "data": null, + "Z.b (in Manually Quotiented Integers)": + [{"id": "Z___b-_LPAR_in-Manually-Quotiented-Integers_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___b-_LPAR_in-Manually-Quotiented-Integers_RPAR_": + {"display": "b", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Manually Quotiented Integers"]}}, "address": "/The-Type-System/Quotients/"}], - "Z": - [{"id": "Z___a", "data": null, "address": "/The-Type-System/Quotients/"}, - {"id": "Z", "data": null, "address": "/The-Type-System/Quotients/"}], - "Yes.intro": - [{"id": "Yes___intro", - "data": null, + "Z.add_neg_inverse (in Proofs About Quotients)": + [{"id": "Z___add_neg_inverse-_LPAR_in-Proofs-About-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___add_neg_inverse-_LPAR_in-Proofs-About-Quotients_RPAR_": + {"display": "Z.add_neg_inverse", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Proofs About Quotients", + "Proofs About Quotients"]}}, + "address": "/The-Type-System/Quotients/"}], + "Z.a (in Manually Quotiented Integers)": + [{"id": "Z___a-_LPAR_in-Manually-Quotiented-Integers_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___a-_LPAR_in-Manually-Quotiented-Integers_RPAR_": + {"display": "a", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Manually Quotiented Integers"]}}, + "address": "/The-Type-System/Quotients/"}], + "Z' (in The Integers as a Quotient Type)": + [{"id": "Z___-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z___-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_": + {"display": "Z'", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Introducing Quotients", + "The Integers as a Quotient Type"]}}, + "address": "/The-Type-System/Quotients/"}], + "Z (in The Integers as a Quotient Type)": + [{"id": "Z-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z-_LPAR_in-The-Integers-as-a-Quotient-Type_RPAR_": + {"display": "Z", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotient API", + "Introducing Quotients", + "The Integers as a Quotient Type"]}}, + "address": "/The-Type-System/Quotients/"}], + "Z (in Manually Quotiented Integers)": + [{"id": "Z-_LPAR_in-Manually-Quotiented-Integers_RPAR_", + "data": + {"/The-Type-System/Quotients/#Z-_LPAR_in-Manually-Quotiented-Integers_RPAR_": + {"display": "Z", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Alternatives to Quotient Types", + "Manually Quotiented Integers"]}}, + "address": "/The-Type-System/Quotients/"}], + "Yes.intro (in A true proposition)": + [{"id": "Yes___intro-_LPAR_in-A-true-proposition_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Yes___intro-_LPAR_in-A-true-proposition_RPAR_": + {"display": "intro", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A true proposition"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Yes": - [{"id": "Yes___intro", - "data": null, + "Yes (in A true proposition)": + [{"id": "Yes-_LPAR_in-A-true-proposition_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Yes-_LPAR_in-A-true-proposition_RPAR_": + {"display": "Yes", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A true proposition"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Writer.write": - [{"id": "Writer___write", - "data": null, + "Writer.write (in Dependent Coercion to Functions)": + [{"id": "Writer___write-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Writer___write-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_": + {"display": "write", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Dependent Coercion to Functions"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Writer.Writes": - [{"id": "Writer___write", - "data": null, + "Writer.Writes (in Dependent Coercion to Functions)": + [{"id": "Writer___Writes-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Writer___Writes-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_": + {"display": "Writes", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Dependent Coercion to Functions"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Writer": - [{"id": "Writer___write", - "data": null, + "Writer (in Dependent Coercion to Functions)": + [{"id": "Writer-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Writer-_LPAR_in-Dependent-Coercion-to-Functions_RPAR_": + {"display": "Writer", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Dependent Coercion to Functions"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "WithParam.mk": - [{"id": "WithParam___mk", - "data": null, + "WithParam.mk (in Definitional Equality of Unit-Like Types)": + [{"id": + "WithParam___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#WithParam___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "WithParam'.zero": - [{"id": "WithParam______zero", - "data": null, + "WithParam'.zero (in Ineligible decreasing parameters)": + [{"id": + "WithParam______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#WithParam______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "WithParam'.succ": - [{"id": "WithParam______zero", - "data": null, + "WithParam'.succ (in Ineligible decreasing parameters)": + [{"id": + "WithParam______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#WithParam______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "WithParam'": - [{"id": "WithParam______zero", - "data": null, + "WithParam' (in Ineligible decreasing parameters)": + [{"id": "WithParam___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#WithParam___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "WithParam'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "WithParam": - [{"id": "WithParam___mk", - "data": null, + "WithParam (in Definitional Equality of Unit-Like Types)": + [{"id": + "WithParam-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#WithParam-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "WithParam", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "WithCheck": - [{"id": "WithCheck", - "data": null, + "WithCheck (in Invalid Nested Inductive Types)": + [{"id": "WithCheck-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#WithCheck-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "WithCheck", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Weekday.we": - [{"id": "Weekday___sa", - "data": null, + "Weekday.we (in Implementing Coercions)": + [{"id": "Weekday___we-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___we-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "we", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.tu": - [{"id": "Weekday___sa", - "data": null, + "Weekday.tu (in Implementing Coercions)": + [{"id": "Weekday___tu-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___tu-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "tu", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.toFin": - [{"id": "Weekday___fromFin", - "data": null, + "Weekday.toFin (in Implementing Coercions)": + [{"id": "Weekday___toFin-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___toFin-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "Weekday.toFin", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.th": - [{"id": "Weekday___sa", - "data": null, + "Weekday.th (in Implementing Coercions)": + [{"id": "Weekday___th-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___th-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "th", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.su": - [{"id": "Weekday___sa", - "data": null, + "Weekday.su (in Implementing Coercions)": + [{"id": "Weekday___su-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___su-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "su", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.sa": - [{"id": "Weekday___sa", - "data": null, + "Weekday.sa (in Implementing Coercions)": + [{"id": "Weekday___sa-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___sa-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "sa", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.mo": - [{"id": "Weekday___sa", - "data": null, + "Weekday.mo (in Implementing Coercions)": + [{"id": "Weekday___mo-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___mo-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "mo", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.fromFin": - [{"id": "Weekday___fromFin", - "data": null, + "Weekday.fromFin (in Implementing Coercions)": + [{"id": "Weekday___fromFin-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___fromFin-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "Weekday.fromFin", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday.fr": - [{"id": "Weekday___sa", - "data": null, + "Weekday.fr (in Implementing Coercions)": + [{"id": "Weekday___fr-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday___fr-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "fr", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Weekday": - [{"id": "Weekday___sa", - "data": null, + "Weekday (in Implementing Coercions)": + [{"id": "Weekday-_LPAR_in-Implementing-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Weekday-_LPAR_in-Implementing-Coercions_RPAR_": + {"display": "Weekday", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Implementing Coercions", + "Implementing Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Vehicle.wheels": - [{"id": "ElectricVehicle", - "data": null, + "Vehicle.wheels (in #print and Structure Types)": + [{"id": "Vehicle___wheels-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Vehicle___wheels-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "wheels", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Vehicle": - [{"id": "ElectricVehicle", - "data": null, + "Vehicle (in #print and Structure Types)": + [{"id": "Vehicle-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Vehicle-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "Vehicle", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Vegetable.size": - [{"id": "Vegetable", - "data": null, + "Vegetable.size (in Using Ord Instances for LT and LE Instances)": + [{"id": + "Vegetable___size-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_", + "data": + {"/Type-Classes/Basic-Classes/#Vegetable___size-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_": + {"display": "size", + "context": + ["The Lean Language Reference", + "Type Classes", + "Basic Classes", + "Ordering", + "Using Ord Instances for LT and LE Instances"]}}, "address": "/Type-Classes/Basic-Classes/"}], - "Vegetable.color": - [{"id": "Vegetable", - "data": null, + "Vegetable.color (in Using Ord Instances for LT and LE Instances)": + [{"id": + "Vegetable___color-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_", + "data": + {"/Type-Classes/Basic-Classes/#Vegetable___color-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_": + {"display": "color", + "context": + ["The Lean Language Reference", + "Type Classes", + "Basic Classes", + "Ordering", + "Using Ord Instances for LT and LE Instances"]}}, "address": "/Type-Classes/Basic-Classes/"}], - "Vegetable": - [{"id": "Vegetable", - "data": null, + "Vegetable (in Using Ord Instances for LT and LE Instances)": + [{"id": + "Vegetable-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_", + "data": + {"/Type-Classes/Basic-Classes/#Vegetable-_LPAR_in-Using--Ord--Instances-for--LT--and--LE--Instances_RPAR_": + {"display": "Vegetable", + "context": + ["The Lean Language Reference", + "Type Classes", + "Basic Classes", + "Ordering", + "Using Ord Instances for LT and LE Instances"]}}, "address": "/Type-Classes/Basic-Classes/"}], - "Veg.Leafy.spinach": - [{"id": "Veg___Leafy___cabbage", - "data": null, + "Veg.Leafy.spinach (in Exported Names)": + [{"id": "Veg___Leafy___spinach-_LPAR_in-Exported-Names_RPAR_", + "data": + {"/Namespaces-and-Sections/#Veg___Leafy___spinach-_LPAR_in-Exported-Names_RPAR_": + {"display": "spinach", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Exporting Names", + "Exported Names"]}}, "address": "/Namespaces-and-Sections/"}], - "Veg.Leafy.cabbage": - [{"id": "Veg___Leafy___cabbage", - "data": null, + "Veg.Leafy.cabbage (in Exported Names)": + [{"id": "Veg___Leafy___cabbage-_LPAR_in-Exported-Names_RPAR_", + "data": + {"/Namespaces-and-Sections/#Veg___Leafy___cabbage-_LPAR_in-Exported-Names_RPAR_": + {"display": "cabbage", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Exporting Names", + "Exported Names"]}}, "address": "/Namespaces-and-Sections/"}], - "Veg.Leafy": - [{"id": "Veg___Leafy___cabbage", - "data": null, + "Veg.Leafy (in Exported Names)": + [{"id": "Veg___Leafy-_LPAR_in-Exported-Names_RPAR_", + "data": + {"/Namespaces-and-Sections/#Veg___Leafy-_LPAR_in-Exported-Names_RPAR_": + {"display": "Leafy", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Exporting Names", + "Exported Names"]}}, "address": "/Namespaces-and-Sections/"}], - "Vector.append_assoc'": - [{"id": "Vector___append_assoc___", - "data": null, + "Vector.append_associative' (in Heterogeneous Equality)": + [{"id": + "Vector___append_associative___-_LPAR_in-Heterogeneous-Equality_RPAR_", + "data": + {"/Basic-Propositions/Propositional-Equality/#Vector___append_associative___-_LPAR_in-Heterogeneous-Equality_RPAR_": + {"display": "Vector.append_associative'", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Heterogeneous Equality", + "Heterogeneous Equality"]}}, "address": "/Basic-Propositions/Propositional-Equality/"}], - "Vector.append_assoc": - [{"id": "Vector___append_assoc-next", - "data": null, + "Vector.append_associative (in Heterogeneous Equality)": + [{"id": + "Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_", + "data": + {"/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_-next": + {"display": "Vector.append_associative", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Heterogeneous Equality", + "Heterogeneous Equality"]}, + "/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_": + {"display": "Vector.append_associative", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Heterogeneous Equality", + "Heterogeneous Equality"]}}, "address": "/Basic-Propositions/Propositional-Equality/"}, - {"id": "Vector___append_assoc", - "data": null, + {"id": + "Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_-next", + "data": + {"/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_-next": + {"display": "Vector.append_associative", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Heterogeneous Equality", + "Heterogeneous Equality"]}, + "/Basic-Propositions/Propositional-Equality/#Vector___append_associative-_LPAR_in-Heterogeneous-Equality_RPAR_": + {"display": "Vector.append_associative", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Heterogeneous Equality", + "Heterogeneous Equality"]}}, "address": "/Basic-Propositions/Propositional-Equality/"}], - "Vacant": - [{"id": "Vacant", - "data": null, + "Vec.nil (in Vector length index as a parameter)": + [{"id": "Vec___nil-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMismatch/#Vec___nil-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMismatch", + "Examples", + "Vector length index as a parameter"]}}, + "address": "/Error-Explanations/lean___inductiveParamMismatch/"}], + "Vec.cons (in Vector length index as a parameter)": + [{"id": "Vec___cons-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMismatch/#Vec___cons-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMismatch", + "Examples", + "Vector length index as a parameter"]}}, + "address": "/Error-Explanations/lean___inductiveParamMismatch/"}], + "Vec (in Vector length index as a parameter)": + [{"id": "Vec-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMismatch/#Vec-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_-next": + {"display": "Vec", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMismatch", + "Examples", + "Vector length index as a parameter"]}, + "/Error-Explanations/lean___inductiveParamMismatch/#Vec-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_": + {"display": "Vec", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMismatch", + "Examples", + "Vector length index as a parameter"]}}, + "address": "/Error-Explanations/lean___inductiveParamMismatch/"}, + {"id": "Vec-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMismatch/#Vec-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_-next": + {"display": "Vec", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMismatch", + "Examples", + "Vector length index as a parameter"]}, + "/Error-Explanations/lean___inductiveParamMismatch/#Vec-_LPAR_in-Vector-length-index-as-a-parameter_RPAR_": + {"display": "Vec", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMismatch", + "Examples", + "Vector length index as a parameter"]}}, + "address": "/Error-Explanations/lean___inductiveParamMismatch/"}], + "Vacant (in A constructorless type)": + [{"id": "Vacant-_LPAR_in-A-constructorless-type_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Vacant-_LPAR_in-A-constructorless-type_RPAR_": + {"display": "Vacant", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A constructorless type"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Utterance": - [{"id": "Clause", - "data": null, + "Utterance (in Reducibility and Instance Synthesis)": + [{"id": "Utterance-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Utterance-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_": + {"display": "Utterance", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Instance Synthesis"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Username.validate": - [{"id": "Username___validate", - "data": null, + "Username.validate (in Generalized Field Notation)": + [{"id": "Username___validate-_LPAR_in-Generalized-Field-Notation_RPAR_", + "data": + {"/Terms/Function-Application/#Username___validate-_LPAR_in-Generalized-Field-Notation_RPAR_": + {"display": "Username.validate", + "context": + ["The Lean Language Reference", + "Terms", + "Function Application", + "Generalized Field Notation", + "Generalized Field Notation"]}}, "address": "/Terms/Function-Application/"}], - "Username": - [{"id": "Username", - "data": null, + "Username (in Generalized Field Notation)": + [{"id": "Username-_LPAR_in-Generalized-Field-Notation_RPAR_", + "data": + {"/Terms/Function-Application/#Username-_LPAR_in-Generalized-Field-Notation_RPAR_": + {"display": "Username", + "context": + ["The Lean Language Reference", + "Terms", + "Function Application", + "Generalized Field Notation", + "Generalized Field Notation"]}}, "address": "/Terms/Function-Application/"}], + "User.name (in Infix Functor and Applicative Operators)": + [{"id": + "User___name-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#User___name-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_": + {"display": "name", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors", + "Infix Functor and Applicative Operators"]}}, + "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], "User.name": - [{"id": "main", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "main-next", - "data": null, + [{"id": "User___name", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#User___name": + {"display": "name", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors"]}}, + "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], + "User.favoriteNat (in Infix Functor and Applicative Operators)": + [{"id": + "User___favoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#User___favoriteNat-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_": + {"display": "favoriteNat", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors", + "Infix Functor and Applicative Operators"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], "User.favoriteNat": - [{"id": "main", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "main-next", - "data": null, + [{"id": "User___favoriteNat", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#User___favoriteNat": + {"display": "favoriteNat", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors"]}}, + "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], + "User (in Infix Functor and Applicative Operators)": + [{"id": "User-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#User-_LPAR_in-Infix--Functor--and--Applicative--Operators_RPAR_": + {"display": "User", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors", + "Infix Functor and Applicative Operators"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], "User": - [{"id": "main", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "main-next", - "data": null, + [{"id": "User", + "data": + {"/Functors___-Monads-and--do--Notation/Syntax/#User": + {"display": "User", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Syntax", + "Infix Operators", + "Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], - "Ty.nat": - [{"id": "Ty___interp", - "data": null, + "Ty.nat (in Coercing to Function Types)": + [{"id": "Ty___nat-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Ty___nat-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "nat", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Ty.interp": - [{"id": "Ty___interp", - "data": null, + "Ty.interp (in Coercing to Function Types)": + [{"id": "Ty___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Ty___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Ty.interp", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Ty.arr": - [{"id": "Ty___interp", - "data": null, + "Ty.arr (in Coercing to Function Types)": + [{"id": "Ty___arr-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Ty___arr-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "arr", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Ty": - [{"id": "Ty___interp", - "data": null, + "Ty (in Coercing to Function Types)": + [{"id": "Ty-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Ty-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Ty", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Two.mk": - [{"id": "Three", - "data": null, + "Two.mk (in Spuriously mutual types)": + [{"id": "Two___mk-_LPAR_in-Spuriously-mutual-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Two___mk-_LPAR_in-Spuriously-mutual-types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Spuriously mutual types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Two": - [{"id": "Three", - "data": null, + "Two (in Spuriously mutual types)": + [{"id": "Two-_LPAR_in-Spuriously-mutual-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Two-_LPAR_in-Spuriously-mutual-types_RPAR_": + {"display": "Two", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Spuriously mutual types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Twice.second": - [{"id": "Twice", - "data": null, + "Twice.second (in Duplicate Evaluation in Coercions)": + [{"id": "Twice___second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#Twice___second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_": + {"display": "second", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Duplicate Evaluation in Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "Twice.first_eq_second": - [{"id": "Twice", - "data": null, + "Twice.first_eq_second (in Duplicate Evaluation in Coercions)": + [{"id": + "Twice___first_eq_second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#Twice___first_eq_second-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_": + {"display": "first_eq_second", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Duplicate Evaluation in Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "Twice.first": - [{"id": "Twice", - "data": null, + "Twice.first (in Duplicate Evaluation in Coercions)": + [{"id": "Twice___first-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#Twice___first-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_": + {"display": "first", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Duplicate Evaluation in Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "Twice": - [{"id": "Twice", - "data": null, + "Twice (in Duplicate Evaluation in Coercions)": + [{"id": "Twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#Twice-_LPAR_in-Duplicate-Evaluation-in-Coercions_RPAR_": + {"display": "Twice", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Duplicate Evaluation in Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "Truthy.val": - [{"id": "Decision", - "data": null, + "Truthy.val (in CoeOut vs Coe instances)": + [{"id": "Truthy___val-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Truthy___val-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Truthy.toBool": - [{"id": "Truthy___toBool", - "data": null, + "Truthy.toBool (in CoeOut vs Coe instances)": + [{"id": "Truthy___toBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Truthy___toBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "Truthy.toBool", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Truthy.isTrue": - [{"id": "Decision", - "data": null, + "Truthy.isTrue (in CoeOut vs Coe instances)": + [{"id": "Truthy___isTrue-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Truthy___isTrue-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "isTrue", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Truthy": - [{"id": "Decision", - "data": null, + "Truthy (in CoeOut vs Coe instances)": + [{"id": "Truthy-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Truthy-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "Truthy", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Triple.thd": - [{"id": "coords", - "data": null, + "Triple.thd (in Field Indices and Structure Inheritance)": + [{"id": + "Triple___thd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Triple___thd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_": + {"display": "thd", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Field Indices and Structure Inheritance"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Triple": - [{"id": "coords", - "data": null, + "Triple (in Field Indices and Structure Inheritance)": + [{"id": "Triple-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Triple-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_": + {"display": "Triple", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Field Indices and Structure Inheritance"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Tree.val": - [{"id": "Tree___branches", - "data": null, + "Tree.val (in Displaying Differences)": + [{"id": "Tree___val-_LPAR_in-Displaying-Differences_RPAR_", + "data": + {"/Interacting-with-Lean/#Tree___val-_LPAR_in-Displaying-Differences_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Testing Output with #guard_msgs", + "Displaying Differences"]}}, "address": "/Interacting-with-Lean/"}], - "Tree.rev'": - [{"id": "Tree___rev___", - "data": null, + "Tree.rev' (in Monadic functions)": + [{"id": "Tree___rev___-_LPAR_in-Monadic-functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___rev___-_LPAR_in-Monadic-functions_RPAR_": + {"display": "Tree.rev'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.rev": - [{"id": "Tree___rev___", - "data": null, + "Tree.rev (in Monadic functions)": + [{"id": "Tree___rev-_LPAR_in-Monadic-functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___rev-_LPAR_in-Monadic-functions_RPAR_": + {"display": "Tree.rev", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.node": - [{"id": "Tree___node", - "data": null, + "Tree.node (in Typo in resulting type)": + [{"id": "Tree___node-_LPAR_in-Typo-in-resulting-type_RPAR_", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Tree___node-_LPAR_in-Typo-in-resulting-type_RPAR_": + {"display": "node", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Typo in resulting type"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}], + "Tree.node (in Preprocessing for a custom data type)": + [{"id": "Tree___node-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___node-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "node", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.map": - [{"id": "Tree___map-next", - "data": null, + "Tree.map (in Preprocessing for a custom data type)": + [{"id": + "Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next", + "data": + {"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___map-next-next-next", - "data": null, + {"id": + "Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next", + "data": + {"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___map-next-next", - "data": null, + {"id": + "Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___map", - "data": null, + {"id": "Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_-next": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}, + "/Definitions/Recursive-Definitions/#Tree___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Tree.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.leaf": - [{"id": "Tree", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___node", - "data": null, + "Tree.leaf (in Typo in resulting type)": + [{"id": "Tree___leaf-_LPAR_in-Typo-in-resulting-type_RPAR_", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Tree___leaf-_LPAR_in-Typo-in-resulting-type_RPAR_": + {"display": "leaf", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Typo in resulting type"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}], + "Tree.leaf (in Preprocessing for a custom data type)": + [{"id": "Tree___leaf-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___leaf-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "leaf", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.fastBEq": - [{"id": "Tree___fastBEq", - "data": null, + "Tree.leaf (in Course-of-Values Tables)": + [{"id": "Tree___leaf-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___leaf-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "leaf", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.empty": - [{"id": "Tree___empty", - "data": null, + "Tree.fastBEq (in Checking Equality with Pointers)": + [{"id": "Tree___fastBEq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___fastBEq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_": + {"display": "Tree.fastBEq", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Checking Equality with Pointers"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.cs": - [{"id": "Tree___rev___", - "data": null, + "Tree.empty (in Checking Equality with Pointers)": + [{"id": "Tree___empty-_LPAR_in-Checking-Equality-with-Pointers_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___empty-_LPAR_in-Checking-Equality-with-Pointers_RPAR_": + {"display": "empty", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Checking Equality with Pointers"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.brecOnTable": - [{"id": "Tree___brecOnTable", - "data": null, + "Tree.cs (in Monadic functions)": + [{"id": "Tree___cs-_LPAR_in-Monadic-functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___cs-_LPAR_in-Monadic-functions_RPAR_": + {"display": "cs", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.brecOn'": - [{"id": "Tree___brecOn___", - "data": null, + "Tree.brecOnTable (in Course-of-Values Tables)": + [{"id": "Tree___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "Tree.brecOnTable", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.branches": - [{"id": "Tree___branches", - "data": null, + "Tree.brecOn' (in Course-of-Values Tables)": + [{"id": "Tree___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "Tree.brecOn'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "Tree.branches (in Displaying Differences)": + [{"id": "Tree___branches-_LPAR_in-Displaying-Differences_RPAR_", + "data": + {"/Interacting-with-Lean/#Tree___branches-_LPAR_in-Displaying-Differences_RPAR_": + {"display": "branches", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Testing Output with #guard_msgs", + "Displaying Differences"]}}, "address": "/Interacting-with-Lean/"}], - "Tree.branch": - [{"id": "Tree", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___empty", - "data": null, + "Tree.branch (in Course-of-Values Tables)": + [{"id": "Tree___branch-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___branch-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "branch", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.big": - [{"id": "Tree___branches", - "data": null, + "Tree.branch (in Checking Equality with Pointers)": + [{"id": "Tree___branch-_LPAR_in-Checking-Equality-with-Pointers_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___branch-_LPAR_in-Checking-Equality-with-Pointers_RPAR_": + {"display": "branch", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Checking Equality with Pointers"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "Tree.big (in Displaying Differences)": + [{"id": "Tree___big-_LPAR_in-Displaying-Differences_RPAR_", + "data": + {"/Interacting-with-Lean/#Tree___big-_LPAR_in-Displaying-Differences_RPAR_": + {"display": "Tree.big", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Testing Output with #guard_msgs", + "Displaying Differences"]}}, "address": "/Interacting-with-Lean/"}], - "Tree.beq": - [{"id": "Tree___beq", - "data": null, + "Tree.beq (in Checking Equality with Pointers)": + [{"id": "Tree___beq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___beq-_LPAR_in-Checking-Equality-with-Pointers_RPAR_": + {"display": "Tree.beq", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Checking Equality with Pointers"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree.below'": - [{"id": "Tree___below___", - "data": null, + "Tree.below' (in Course-of-Values Tables)": + [{"id": "Tree___below___-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree___below___-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "Tree.below'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tree": - [{"id": "Tree___rev___", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___branches", - "data": null, - "address": "/Interacting-with-Lean/"}, - {"id": "Tree___node", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Tree___empty", - "data": null, + "Tree (in Typo in resulting type)": + [{"id": "Tree-_LPAR_in-Typo-in-resulting-type_RPAR_", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Tree-_LPAR_in-Typo-in-resulting-type_RPAR_-next": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Typo in resulting type"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Tree-_LPAR_in-Typo-in-resulting-type_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Typo in resulting type"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}, + {"id": "Tree-_LPAR_in-Typo-in-resulting-type_RPAR_-next", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Tree-_LPAR_in-Typo-in-resulting-type_RPAR_-next": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Typo in resulting type"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Tree-_LPAR_in-Typo-in-resulting-type_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Typo in resulting type"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}], + "Tree (in Preprocessing for a custom data type)": + [{"id": "Tree-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Tm.zero": - [{"id": "Tm-next", - "data": null, + "Tree (in Monadic functions)": + [{"id": "Tree-_LPAR_in-Monadic-functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Monadic-functions_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "Tree (in Displaying Differences)": + [{"id": "Tree-_LPAR_in-Displaying-Differences_RPAR_", + "data": + {"/Interacting-with-Lean/#Tree-_LPAR_in-Displaying-Differences_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Testing Output with #guard_msgs", + "Displaying Differences"]}}, + "address": "/Interacting-with-Lean/"}], + "Tree (in Course-of-Values Tables)": + [{"id": "Tree-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "Tree (in Checking Equality with Pointers)": + [{"id": "Tree-_LPAR_in-Checking-Equality-with-Pointers_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Tree-_LPAR_in-Checking-Equality-with-Pointers_RPAR_": + {"display": "Tree", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial and Unsafe Definitions", + "Unsafe Definitions", + "Checking Equality with Pointers"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "Tm.zero (in Coercing to Function Types)": + [{"id": "Tm___zero-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___zero-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.var": - [{"id": "Tm-next", - "data": null, + "Tm.var (in Coercing to Function Types)": + [{"id": "Tm___var-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___var-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "var", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.v": - [{"id": "Tm___v", - "data": null, + "Tm.v (in Coercing to Function Types)": + [{"id": "Tm___v-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___v-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Tm.v", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.succ": - [{"id": "Tm-next", - "data": null, + "Tm.succ (in Coercing to Function Types)": + [{"id": "Tm___succ-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___succ-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.rep": - [{"id": "Tm-next", - "data": null, + "Tm.rep (in Coercing to Function Types)": + [{"id": "Tm___rep-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___rep-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "rep", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.lam": - [{"id": "Tm-next", - "data": null, + "Tm.lam (in Coercing to Function Types)": + [{"id": "Tm___lam-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___lam-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "lam", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.interp": - [{"id": "Tm___interp", - "data": null, + "Tm.interp (in Coercing to Function Types)": + [{"id": "Tm___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___interp-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Tm.interp", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm.app": - [{"id": "Tm-next", - "data": null, + "Tm.app (in Coercing to Function Types)": + [{"id": "Tm___app-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm___app-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "app", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Tm": - [{"id": "Tm-next", - "data": null, - "address": "/Coercions/Coercing-to-Function-Types/"}, - {"id": "Tm", - "data": null, + "Tm (in Mutual strict positivity)": + [{"id": "Tm-_LPAR_in-Mutual-strict-positivity_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Tm-_LPAR_in-Mutual-strict-positivity_RPAR_": + {"display": "Tm", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Mutual strict positivity"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ThreeChoices.yes": - [{"id": "ThreeChoices___yes", - "data": null, + "Tm (in Coercing to Function Types)": + [{"id": "Tm-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Tm-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Tm", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, + "address": "/Coercions/Coercing-to-Function-Types/"}], + "ThreeChoices.yes (in An instance for a sum class)": + [{"id": "ThreeChoices___yes-_LPAR_in-An-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#ThreeChoices___yes-_LPAR_in-An-instance-for-a-sum-class_RPAR_": + {"display": "yes", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "An instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "ThreeChoices.no": - [{"id": "ThreeChoices___yes", - "data": null, + "ThreeChoices.no (in An instance for a sum class)": + [{"id": "ThreeChoices___no-_LPAR_in-An-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#ThreeChoices___no-_LPAR_in-An-instance-for-a-sum-class_RPAR_": + {"display": "no", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "An instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "ThreeChoices.maybe": - [{"id": "ThreeChoices___yes", - "data": null, + "ThreeChoices.maybe (in An instance for a sum class)": + [{"id": "ThreeChoices___maybe-_LPAR_in-An-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#ThreeChoices___maybe-_LPAR_in-An-instance-for-a-sum-class_RPAR_": + {"display": "maybe", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "An instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "ThreeChoices": - [{"id": "ThreeChoices___yes", - "data": null, + "ThreeChoices (in An instance for a sum class)": + [{"id": "ThreeChoices-_LPAR_in-An-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#ThreeChoices-_LPAR_in-An-instance-for-a-sum-class_RPAR_": + {"display": "ThreeChoices", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "An instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "Three.mk": - [{"id": "Three", - "data": null, + "Three.mk (in Spuriously mutual types)": + [{"id": "Three___mk-_LPAR_in-Spuriously-mutual-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Three___mk-_LPAR_in-Spuriously-mutual-types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Spuriously mutual types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Three": - [{"id": "Three", - "data": null, + "Three (in Spuriously mutual types)": + [{"id": "Three-_LPAR_in-Spuriously-mutual-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Three-_LPAR_in-Spuriously-mutual-types_RPAR_": + {"display": "Three", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Spuriously mutual types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Textbook": - [{"id": "AcademicWork___author", - "data": null, + "Textbook (in Structure type inheritance with overlapping fields)": + [{"id": + "Textbook-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Textbook-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "Textbook", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Sum'.swap": - [{"id": "Sum______inl", "data": null, "address": "/Basic-Types/Tuples/"}], - "Sum'.inr": - [{"id": "Sum______inl", "data": null, "address": "/Basic-Types/Tuples/"}], - "Sum'.inl": - [{"id": "Sum______inl", "data": null, "address": "/Basic-Types/Tuples/"}], - "Sum'": - [{"id": "Sum___", "data": null, "address": "/Basic-Types/Tuples/"}], - "Stx.node": - [{"id": "Stx___node", - "data": null, + "Sum'.swap (in Dependent Pairs as Sums)": + [{"id": "Sum______swap-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_", + "data": + {"/Basic-Types/Tuples/#Sum______swap-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_": + {"display": "Sum'.swap", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs as Sums"]}}, + "address": "/Basic-Types/Tuples/"}], + "Sum'.inr (in Dependent Pairs as Sums)": + [{"id": "Sum______inr-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_", + "data": + {"/Basic-Types/Tuples/#Sum______inr-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_": + {"display": "Sum'.inr", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs as Sums"]}}, + "address": "/Basic-Types/Tuples/"}], + "Sum'.inl (in Dependent Pairs as Sums)": + [{"id": "Sum______inl-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_", + "data": + {"/Basic-Types/Tuples/#Sum______inl-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_": + {"display": "Sum'.inl", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs as Sums"]}}, + "address": "/Basic-Types/Tuples/"}], + "Sum' (in Dependent Pairs as Sums)": + [{"id": "Sum___-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_", + "data": + {"/Basic-Types/Tuples/#Sum___-_LPAR_in-Dependent-Pairs-as-Sums_RPAR_": + {"display": "Sum'", + "context": + ["The Lean Language Reference", + "Basic Types", + "Tuples", + "Dependent Pairs", + "Dependent Pairs as Sums"]}}, + "address": "/Basic-Types/Tuples/"}], + "Stx.node (in Nested positions)": + [{"id": "Stx___node-_LPAR_in-Nested-positions_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Stx___node-_LPAR_in-Nested-positions_RPAR_": + {"display": "node", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Nested positions"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Stx.atom": - [{"id": "Stx___node", - "data": null, + "Stx.atom (in Nested positions)": + [{"id": "Stx___atom-_LPAR_in-Nested-positions_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Stx___atom-_LPAR_in-Nested-positions_RPAR_": + {"display": "atom", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Nested positions"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Stx": - [{"id": "Stx___node", - "data": null, + "Stx (in Nested positions)": + [{"id": "Stx-_LPAR_in-Nested-positions_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Stx-_LPAR_in-Nested-positions_RPAR_": + {"display": "Stx", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Nested positions"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "StringMonoid": - [{"id": "StringMonoid", - "data": null, + "StringMonoid (in Sort Coercions)": + [{"id": "StringMonoid-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#StringMonoid-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "StringMonoid", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "StringList.nil": - [{"id": "StringList___nil", - "data": null, + "StringList.nil (in A recursive instance for a sum class)": + [{"id": + "StringList___nil-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#StringList___nil-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "A recursive instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "StringList.cons": - [{"id": "StringList___nil", - "data": null, + "StringList.cons (in A recursive instance for a sum class)": + [{"id": + "StringList___cons-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#StringList___cons-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "A recursive instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "StringList": - [{"id": "StringList___nil", - "data": null, + "StringList (in A recursive instance for a sum class)": + [{"id": "StringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#StringList-_LPAR_in-A-recursive-instance-for-a-sum-class_RPAR_": + {"display": "StringList", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instances of class inductive s", + "A recursive instance for a sum class"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "Spurious": - [{"id": "Spurious", - "data": null, + "Spurious (in Universes, constructors, and parameters)": + [{"id": + "Spurious-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Spurious-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_": + {"display": "Spurious", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Universe Levels", + "Universes, constructors, and parameters"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "SetTree": - [{"id": "SetTree", - "data": null, + "Solo.solo (in A unit type)": + [{"id": "Solo___solo-_LPAR_in-A-unit-type_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Solo___solo-_LPAR_in-A-unit-type_RPAR_": + {"display": "solo", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A unit type"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Solo.mk (in Custom Unit Type)": + [{"id": "Solo___mk-_LPAR_in-Custom-Unit-Type_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#Solo___mk-_LPAR_in-Custom-Unit-Type_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Custom Unit Type"]}}, + "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], + "Solo (in Custom Unit Type)": + [{"id": "Solo-_LPAR_in-Custom-Unit-Type_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#Solo-_LPAR_in-Custom-Unit-Type_RPAR_": + {"display": "Solo", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Custom Unit Type"]}}, + "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], + "Solo (in A unit type)": + [{"id": "Solo-_LPAR_in-A-unit-type_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Solo-_LPAR_in-A-unit-type_RPAR_": + {"display": "Solo", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A unit type"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "SetTree (in Nested Inductive Types and Quotients)": + [{"id": "SetTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#SetTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_": + {"display": "SetTree", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Logical Model", + "Quotients and Inductive Types", + "Nested Inductive Types and Quotients"]}}, "address": "/The-Type-System/Quotients/"}], - "Serialize.ser": - [{"id": "Serialize-next", - "data": null, + "Serialize.ser (in Output Parameters and Stuck Search)": + [{"id": + "Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next", + "data": + {"/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next": + {"display": "ser", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}, + "/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_": + {"display": "ser", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}}, "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "Serialize", - "data": null, + {"id": + "Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next": + {"display": "ser", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}, + "/Type-Classes/Instance-Synthesis/#Serialize___ser-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_": + {"display": "ser", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "Serialize": - [{"id": "Serialize-next", - "data": null, + "Serialize (in Output Parameters and Stuck Search)": + [{"id": + "Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next", + "data": + {"/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next": + {"display": "Serialize", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}, + "/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_": + {"display": "Serialize", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}}, "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "Serialize", - "data": null, + {"id": "Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_-next": + {"display": "Serialize", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}, + "/Type-Classes/Instance-Synthesis/#Serialize-_LPAR_in-Output-Parameters-and-Stuck-Search_RPAR_": + {"display": "Serialize", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters and Stuck Search"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "Sequence.ofList": - [{"id": "Sequence___ofList", - "data": null, + "Sequence.ofList (in Reducibility and Generalized Field Notation)": + [{"id": + "Sequence___ofList-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Sequence___ofList-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_": + {"display": "Sequence.ofList", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Generalized Field Notation"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Sequence": - [{"id": "Sequence___ofList", - "data": null, + "Sequence (in Reducibility and Generalized Field Notation)": + [{"id": + "Sequence-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Sequence-_LPAR_in-Reducibility-and-Generalized-Field-Notation_RPAR_": + {"display": "Sequence", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Generalized Field Notation"]}}, "address": "/Definitions/Recursive-Definitions/"}], "S.usize_2": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___usize_2", + "data": + {"/The-Type-System/Inductive-Types/#S___usize_2": + {"display": "usize_2", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.usize_1": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___usize_1", + "data": + {"/The-Type-System/Inductive-Types/#S___usize_1": + {"display": "usize_1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc8_2": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc8_2", + "data": + {"/The-Type-System/Inductive-Types/#S___sc8_2": + {"display": "sc8_2", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc8_1": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc8_1", + "data": + {"/The-Type-System/Inductive-Types/#S___sc8_1": + {"display": "sc8_1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc64_3": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc64_3", + "data": + {"/The-Type-System/Inductive-Types/#S___sc64_3": + {"display": "sc64_3", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc64_2": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc64_2", + "data": + {"/The-Type-System/Inductive-Types/#S___sc64_2": + {"display": "sc64_2", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc64_1": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc64_1", + "data": + {"/The-Type-System/Inductive-Types/#S___sc64_1": + {"display": "sc64_1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc32_1": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc32_1", + "data": + {"/The-Type-System/Inductive-Types/#S___sc32_1": + {"display": "sc32_1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc16_2": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc16_2", + "data": + {"/The-Type-System/Inductive-Types/#S___sc16_2": + {"display": "sc16_2", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.sc16_1": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___sc16_1", + "data": + {"/The-Type-System/Inductive-Types/#S___sc16_1": + {"display": "sc16_1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.ptr_3": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___ptr_3", + "data": + {"/The-Type-System/Inductive-Types/#S___ptr_3": + {"display": "ptr_3", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.ptr_2": [{"id": "S___ptr_2", - "data": null, + "data": + {"/The-Type-System/Inductive-Types/#S___ptr_2": + {"display": "ptr_2", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], "S.ptr_1": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S___ptr_1", + "data": + {"/The-Type-System/Inductive-Types/#S___ptr_1": + {"display": "ptr_1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "S.Semigroup.op_assoc": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Semigroup.op_assoc (in Class vs Structure Constructors)": + [{"id": + "S___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "op_assoc", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Semigroup": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Semigroup (in Class vs Structure Constructors)": + [{"id": "S___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Semigroup", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Monoid.ident_right": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Monoid.ident_right (in Class vs Structure Constructors)": + [{"id": + "S___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident_right", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Monoid.ident_left": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Monoid.ident_left (in Class vs Structure Constructors)": + [{"id": + "S___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident_left", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Monoid.ident": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Monoid.ident (in Class vs Structure Constructors)": + [{"id": + "S___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Monoid": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Monoid (in Class vs Structure Constructors)": + [{"id": "S___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Monoid", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Magma.op": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Magma.op (in Class vs Structure Constructors)": + [{"id": "S___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "op", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "S.Magma": - [{"id": "C1___Monoid___ident_right", - "data": null, + "S.Magma (in Class vs Structure Constructors)": + [{"id": "S___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#S___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Magma", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], "S": - [{"id": "S___ptr_2", - "data": null, + [{"id": "S", + "data": + {"/The-Type-System/Inductive-Types/#S": + {"display": "S", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Run-Time Representation", + "Other Inductive Types", + "FFI"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RunsMatch": - [{"id": "RunsMatch", - "data": null, + "RunsMatch (in Universe mismatch)": + [{"id": "RunsMatch-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RunsMatch-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "RunsMatch", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RunLengths": - [{"id": "RunsMatch", - "data": null, + "RunLengths (in Universe mismatch)": + [{"id": "RunLengths-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RunLengths-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "RunLengths", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RoseTree.leaf": - [{"id": "RoseTree___leaf", - "data": null, + "Rtrans (in Multi-Patterns)": + [{"id": "Rtrans-_LPAR_in-Multi-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#Rtrans-_LPAR_in-Multi-Patterns_RPAR_": + {"display": "Rtrans", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "Multi-Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "RoseTree.val (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "RoseTree___val-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree___val-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "val", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#RoseTree___val-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}, + {"id": + "RoseTree___val-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree___val-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "val", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#RoseTree___val-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "RoseTree.leaf (in Nested Inductive Types and Quotients)": + [{"id": + "RoseTree___leaf-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#RoseTree___leaf-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_": + {"display": "leaf", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Logical Model", + "Quotients and Inductive Types", + "Nested Inductive Types and Quotients"]}}, "address": "/The-Type-System/Quotients/"}], - "RoseTree.branch": - [{"id": "RoseTree___leaf", - "data": null, + "RoseTree.children (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "RoseTree___children-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree___children-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "children", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#RoseTree___children-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "children", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}, + {"id": + "RoseTree___children-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree___children-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "children", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#RoseTree___children-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "children", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "RoseTree.branch (in Nested Inductive Types and Quotients)": + [{"id": + "RoseTree___branch-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#RoseTree___branch-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_": + {"display": "branch", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Logical Model", + "Quotients and Inductive Types", + "Nested Inductive Types and Quotients"]}}, "address": "/The-Type-System/Quotients/"}], - "RoseTree": - [{"id": "RoseTree___leaf", - "data": null, + "RoseTree.All.intro (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "RoseTree___All___intro-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree___All___intro-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "intro", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "RoseTree.All (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "RoseTree___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "RoseTree.All", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "RoseTree (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "RoseTree-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "RoseTree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#RoseTree-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "RoseTree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}, + {"id": + "RoseTree-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#RoseTree-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "RoseTree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#RoseTree-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "RoseTree", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "RoseTree (in Nested Inductive Types and Quotients)": + [{"id": "RoseTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_", + "data": + {"/The-Type-System/Quotients/#RoseTree-_LPAR_in-Nested-Inductive-Types-and-Quotients_RPAR_": + {"display": "RoseTree", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Logical Model", + "Quotients and Inductive Types", + "Nested Inductive Types and Quotients"]}}, "address": "/The-Type-System/Quotients/"}], - "RTree.node": - [{"id": "RTree___node", - "data": null, + "RawMaze.passages (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___passages-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___passages-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "passages", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.insert_wf (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___insert_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___insert_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "RawMaze.insert_wf", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.insert (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "RawMaze.insert", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.description (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "description", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.base_wf (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___base_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___base_wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "RawMaze.base_wf", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.base (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "RawMaze.base", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.WF.mk (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___WF___mk-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___WF___mk-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze.WF (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze___WF-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze___WF-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "RawMaze.WF", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RawMaze (in Nested Inductive Types with Std.HashMap)": + [{"id": + "RawMaze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#RawMaze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "RawMaze", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "RTree.node (in Nested Inductive Types)": + [{"id": "RTree___node-_LPAR_in-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RTree___node-_LPAR_in-Nested-Inductive-Types_RPAR_": + {"display": "node", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RTree.empty": - [{"id": "RTree___node", - "data": null, + "RTree.empty (in Nested Inductive Types)": + [{"id": "RTree___empty-_LPAR_in-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RTree___empty-_LPAR_in-Nested-Inductive-Types_RPAR_": + {"display": "empty", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RTree": - [{"id": "Children", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "RTree___node", - "data": null, + "RTree'' (in Invalid Nested Inductive Types)": + [{"id": "RTree______-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RTree______-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "RTree''", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE.runsMatch": - [{"id": "RunsMatch", - "data": null, + "RTree (in Nested Inductive Types)": + [{"id": "RTree-_LPAR_in-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RTree-_LPAR_in-Nested-Inductive-Types_RPAR_": + {"display": "RTree", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE.run": - [{"id": "RLE___run", - "data": null, + "RTree (in Invalid Nested Inductive Types)": + [{"id": "RTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "RTree", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE.rle": - [{"id": "RunsMatch", - "data": null, + "RLE.runsMatch (in Universe mismatch)": + [{"id": "RLE___runsMatch-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE___runsMatch-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "runsMatch", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE.nonZero": - [{"id": "RunsMatch", - "data": null, + "RLE.run (in Universe mismatch)": + [{"id": "RLE___run-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE___run-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "run", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE.noRepeats": - [{"id": "RunsMatch", - "data": null, + "RLE.rle (in Universe mismatch)": + [{"id": "RLE___rle-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE___rle-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "rle", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE.nil": - [{"id": "RLE___run", - "data": null, + "RLE.nonZero (in Universe mismatch)": + [{"id": "RLE___nonZero-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE___nonZero-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "nonZero", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "RLE": - [{"id": "RunsMatch", - "data": null, + "RLE.noRepeats (in Universe mismatch)": + [{"id": "RLE___noRepeats-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE___noRepeats-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "noRepeats", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "RLE.nil (in Universe mismatch)": + [{"id": "RLE___nil-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE___nil-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "RLE (in Universe mismatch)": + [{"id": "RLE-_LPAR_in-Universe-mismatch_RPAR_-next", + "data": + {"/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_-next": + {"display": "RLE", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}, + "/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "RLE", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}, - {"id": "RLE___run", - "data": null, + {"id": "RLE-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_-next": + {"display": "RLE", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}, + "/The-Type-System/Inductive-Types/#RLE-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "RLE", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Quadrant.sw": - [{"id": "Quadrant___sw", - "data": null, + "R (in Multi-Patterns)": + [{"id": "R-_LPAR_in-Multi-Patterns_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#R-_LPAR_in-Multi-Patterns_RPAR_": + {"display": "R", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "Multi-Patterns"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "R": + [{"id": "R", + "data": + {"/The--grind--tactic/Bigger-Examples/#R": + {"display": "R", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "Integrating grind 's Features"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "Quadrant.sw (in Displaying Output)": + [{"id": "Quadrant___sw-_LPAR_in-Displaying-Output_RPAR_", + "data": + {"/Interacting-with-Lean/#Quadrant___sw-_LPAR_in-Displaying-Output_RPAR_": + {"display": "sw", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Evaluating Terms", + "Displaying Output"]}}, "address": "/Interacting-with-Lean/"}], - "Quadrant.se": - [{"id": "Quadrant___sw", - "data": null, + "Quadrant.se (in Displaying Output)": + [{"id": "Quadrant___se-_LPAR_in-Displaying-Output_RPAR_", + "data": + {"/Interacting-with-Lean/#Quadrant___se-_LPAR_in-Displaying-Output_RPAR_": + {"display": "se", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Evaluating Terms", + "Displaying Output"]}}, "address": "/Interacting-with-Lean/"}], - "Quadrant.nw": - [{"id": "Quadrant___sw", - "data": null, + "Quadrant.nw (in Displaying Output)": + [{"id": "Quadrant___nw-_LPAR_in-Displaying-Output_RPAR_", + "data": + {"/Interacting-with-Lean/#Quadrant___nw-_LPAR_in-Displaying-Output_RPAR_": + {"display": "nw", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Evaluating Terms", + "Displaying Output"]}}, "address": "/Interacting-with-Lean/"}], - "Quadrant.ne": - [{"id": "Quadrant___sw", - "data": null, + "Quadrant.ne (in Displaying Output)": + [{"id": "Quadrant___ne-_LPAR_in-Displaying-Output_RPAR_", + "data": + {"/Interacting-with-Lean/#Quadrant___ne-_LPAR_in-Displaying-Output_RPAR_": + {"display": "ne", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Evaluating Terms", + "Displaying Output"]}}, "address": "/Interacting-with-Lean/"}], - "Quadrant": - [{"id": "Quadrant___sw", - "data": null, + "Quadrant (in Displaying Output)": + [{"id": "Quadrant-_LPAR_in-Displaying-Output_RPAR_", + "data": + {"/Interacting-with-Lean/#Quadrant-_LPAR_in-Displaying-Output_RPAR_": + {"display": "Quadrant", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Evaluating Terms", + "Displaying Output"]}}, "address": "/Interacting-with-Lean/"}], - "ProofUnitLike.mk": - [{"id": "ProofUnitLike", - "data": null, + "ProofUnitLike.mk (in Definitional Equality of Unit-Like Types)": + [{"id": + "ProofUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#ProofUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "ProofUnitLike": - [{"id": "ProofUnitLike", - "data": null, + "ProofUnitLike (in Definitional Equality of Unit-Like Types)": + [{"id": + "ProofUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#ProofUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "ProofUnitLike", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "PrefixRunOf.zero": - [{"id": "RLE___run", - "data": null, + "PrefixRunOf.zero (in Universe mismatch)": + [{"id": "PrefixRunOf___zero-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#PrefixRunOf___zero-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "PrefixRunOf.succ": - [{"id": "RLE___run", - "data": null, + "PrefixRunOf.succ (in Universe mismatch)": + [{"id": "PrefixRunOf___succ-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#PrefixRunOf___succ-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "PrefixRunOf": - [{"id": "RLE___run", - "data": null, + "PrefixRunOf (in Universe mismatch)": + [{"id": "PrefixRunOf-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#PrefixRunOf-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "PrefixRunOf", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Phrase": - [{"id": "Clause", - "data": null, + "Point.y (in The @[grind ext] Attribute)": + [{"id": "Point___y-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#Point___y-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ext] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "Point.x (in The @[grind ext] Attribute)": + [{"id": "Point___x-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#Point___x-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ext] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "Point.swap (in The @[grind ext] Attribute)": + [{"id": + "Point___swap-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#Point___swap-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_": + {"display": "Point.swap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ext] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "Point (in The @[grind ext] Attribute)": + [{"id": "Point-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_", + "data": + {"/The--grind--tactic/E___matching/#Point-_LPAR_in-The--____LSQ_grind-ext_RSQ_--Attribute_RPAR_": + {"display": "Point", + "context": + ["The Lean Language Reference", + "The grind tactic", + "E‑matching", + "Patterns", + "The @[grind ext] Attribute"]}}, + "address": "/The--grind--tactic/E___matching/"}], + "Phrase (in Reducibility and Instance Synthesis)": + [{"id": "Phrase-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Phrase-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_": + {"display": "Phrase", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Instance Synthesis"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Permissions.writable": - [{"id": "Permissions___encode", - "data": null, - "address": "/Basic-Types/Fixed-Precision-Integers/"}], - "Permissions.readable": - [{"id": "Permissions___encode", - "data": null, - "address": "/Basic-Types/Fixed-Precision-Integers/"}], - "Permissions.executable": - [{"id": "Permissions___encode", - "data": null, - "address": "/Basic-Types/Fixed-Precision-Integers/"}], - "Permissions.encode": - [{"id": "Permissions___encode", - "data": null, - "address": "/Basic-Types/Fixed-Precision-Integers/"}], - "Permissions.decode": - [{"id": "Permissions___encode", - "data": null, - "address": "/Basic-Types/Fixed-Precision-Integers/"}], - "Permissions": - [{"id": "Permissions___encode", - "data": null, - "address": "/Basic-Types/Fixed-Precision-Integers/"}], - "Parity.odd": - [{"id": "Nat___parity", - "data": null, + "Person.givenName (in Attempting to define multiple structure fields on the same line)": + [{"id": + "Person___givenName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person___givenName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "givenName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person___givenName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "givenName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}, + {"id": + "Person___givenName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person___givenName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "givenName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person___givenName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "givenName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "Person.familyName (in Attempting to define multiple structure fields on the same line)": + [{"id": + "Person___familyName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person___familyName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "familyName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person___familyName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "familyName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}, + {"id": + "Person___familyName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person___familyName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "familyName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person___familyName-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "familyName", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "Person.age (in Attempting to define multiple structure fields on the same line)": + [{"id": + "Person___age-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person___age-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "age", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person___age-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "age", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}, + {"id": + "Person___age-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person___age-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "age", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person___age-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "age", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "Person (in Attempting to define multiple structure fields on the same line)": + [{"id": + "Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next-next": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}, + {"id": + "Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next-next": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}, + {"id": + "Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next", + "data": + {"/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next-next": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_-next": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}, + "/Error-Explanations/lean___inferBinderTypeFailed/#Person-_LPAR_in-Attempting-to-define-multiple-structure-fields-on-the-same-line_RPAR_": + {"display": "Person", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inferBinderTypeFailed", + "Examples", + "Attempting to define multiple structure fields on the same line"]}}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "Permissions.writable (in Fixed-Width Literals)": + [{"id": "Permissions___writable-_LPAR_in-Fixed-Width-Literals_RPAR_", + "data": + {"/Basic-Types/Fixed-Precision-Integers/#Permissions___writable-_LPAR_in-Fixed-Width-Literals_RPAR_": + {"display": "writable", + "context": + ["The Lean Language Reference", + "Basic Types", + "Fixed-Precision Integers", + "Syntax", + "Fixed-Width Literals"]}}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "Permissions.readable (in Fixed-Width Literals)": + [{"id": "Permissions___readable-_LPAR_in-Fixed-Width-Literals_RPAR_", + "data": + {"/Basic-Types/Fixed-Precision-Integers/#Permissions___readable-_LPAR_in-Fixed-Width-Literals_RPAR_": + {"display": "readable", + "context": + ["The Lean Language Reference", + "Basic Types", + "Fixed-Precision Integers", + "Syntax", + "Fixed-Width Literals"]}}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "Permissions.executable (in Fixed-Width Literals)": + [{"id": "Permissions___executable-_LPAR_in-Fixed-Width-Literals_RPAR_", + "data": + {"/Basic-Types/Fixed-Precision-Integers/#Permissions___executable-_LPAR_in-Fixed-Width-Literals_RPAR_": + {"display": "executable", + "context": + ["The Lean Language Reference", + "Basic Types", + "Fixed-Precision Integers", + "Syntax", + "Fixed-Width Literals"]}}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "Permissions.encode (in Fixed-Width Literals)": + [{"id": "Permissions___encode-_LPAR_in-Fixed-Width-Literals_RPAR_", + "data": + {"/Basic-Types/Fixed-Precision-Integers/#Permissions___encode-_LPAR_in-Fixed-Width-Literals_RPAR_": + {"display": "Permissions.encode", + "context": + ["The Lean Language Reference", + "Basic Types", + "Fixed-Precision Integers", + "Syntax", + "Fixed-Width Literals"]}}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "Permissions.decode (in Fixed-Width Literals)": + [{"id": "Permissions___decode-_LPAR_in-Fixed-Width-Literals_RPAR_", + "data": + {"/Basic-Types/Fixed-Precision-Integers/#Permissions___decode-_LPAR_in-Fixed-Width-Literals_RPAR_": + {"display": "Permissions.decode", + "context": + ["The Lean Language Reference", + "Basic Types", + "Fixed-Precision Integers", + "Syntax", + "Fixed-Width Literals"]}}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "Permissions (in Fixed-Width Literals)": + [{"id": "Permissions-_LPAR_in-Fixed-Width-Literals_RPAR_", + "data": + {"/Basic-Types/Fixed-Precision-Integers/#Permissions-_LPAR_in-Fixed-Width-Literals_RPAR_": + {"display": "Permissions", + "context": + ["The Lean Language Reference", + "Basic Types", + "Fixed-Precision Integers", + "Syntax", + "Fixed-Width Literals"]}}, + "address": "/Basic-Types/Fixed-Precision-Integers/"}], + "Parity.odd (in Inaccessible Patterns)": + [{"id": "Parity___odd-_LPAR_in-Inaccessible-Patterns_RPAR_", + "data": + {"/Terms/Pattern-Matching/#Parity___odd-_LPAR_in-Inaccessible-Patterns_RPAR_": + {"display": "odd", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Inaccessible Patterns"]}}, "address": "/Terms/Pattern-Matching/"}], - "Parity.even": - [{"id": "Nat___parity", - "data": null, + "Parity.even (in Inaccessible Patterns)": + [{"id": "Parity___even-_LPAR_in-Inaccessible-Patterns_RPAR_", + "data": + {"/Terms/Pattern-Matching/#Parity___even-_LPAR_in-Inaccessible-Patterns_RPAR_": + {"display": "even", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Inaccessible Patterns"]}}, "address": "/Terms/Pattern-Matching/"}], - "Parity": - [{"id": "Nat___parity", - "data": null, + "Parity (in Inaccessible Patterns)": + [{"id": "Parity-_LPAR_in-Inaccessible-Patterns_RPAR_", + "data": + {"/Terms/Pattern-Matching/#Parity-_LPAR_in-Inaccessible-Patterns_RPAR_": + {"display": "Parity", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Inaccessible Patterns"]}}, "address": "/Terms/Pattern-Matching/"}], - "Palindrome.text": - [{"id": "Palindrome___ofString", - "data": null, + "Palindrome.text (in Non-default constructor name)": + [{"id": "Palindrome___text-_LPAR_in-Non-default-constructor-name_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome___text-_LPAR_in-Non-default-constructor-name_RPAR_": + {"display": "text", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Non-default constructor name"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Palindrome.ofString": - [{"id": "Palindrome___ofString", - "data": null, + "Palindrome.single (in Invalid Nested Inductive Types)": + [{"id": + "Palindrome___single-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome___single-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "single", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Palindrome.is_palindrome": - [{"id": "Palindrome___ofString", - "data": null, + "Palindrome.ofString (in Non-default constructor name)": + [{"id": + "Palindrome___ofString-_LPAR_in-Non-default-constructor-name_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome___ofString-_LPAR_in-Non-default-constructor-name_RPAR_": + {"display": "ofString", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Non-default constructor name"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Palindrome": - [{"id": "Palindrome___ofString", - "data": null, + "Palindrome.nil (in Invalid Nested Inductive Types)": + [{"id": "Palindrome___nil-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome___nil-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Pair.unattach": - [{"id": "Pair___attach", - "data": null, + "Palindrome.is_palindrome (in Non-default constructor name)": + [{"id": + "Palindrome___is_palindrome-_LPAR_in-Non-default-constructor-name_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome___is_palindrome-_LPAR_in-Non-default-constructor-name_RPAR_": + {"display": "is_palindrome", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Non-default constructor name"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Palindrome.cons (in Invalid Nested Inductive Types)": + [{"id": "Palindrome___cons-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome___cons-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Palindrome (in Non-default constructor name)": + [{"id": "Palindrome-_LPAR_in-Non-default-constructor-name_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome-_LPAR_in-Non-default-constructor-name_RPAR_": + {"display": "Palindrome", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Non-default constructor name"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Palindrome (in Invalid Nested Inductive Types)": + [{"id": "Palindrome-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Palindrome-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "Palindrome", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Pair.unattach (in Preprocessing for a custom data type)": + [{"id": + "Pair___unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.unattach", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.snd": - [{"id": "coords", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Pair___fst", - "data": null, + "Pair.snd (in Preprocessing for a custom data type)": + [{"id": "Pair___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "snd", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.sizeOf_lt_of_mem": - [{"id": "Pair___sizeOf_lt_of_mem", - "data": null, + "Pair.snd (in Field Indices and Structure Inheritance)": + [{"id": + "Pair___snd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Pair___snd-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_": + {"display": "snd", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Field Indices and Structure Inheritance"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Pair.sizeOf_lt_of_mem (in Preprocessing for a custom data type)": + [{"id": + "Pair___sizeOf_lt_of_mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___sizeOf_lt_of_mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.sizeOf_lt_of_mem", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.map_wfParam": - [{"id": "Pair___map_unattach", - "data": null, + "Pair.map_wfParam (in Preprocessing for a custom data type)": + [{"id": + "Pair___map_wfParam-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___map_wfParam-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.map_wfParam", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.map_unattach": - [{"id": "Pair___map_unattach", - "data": null, + "Pair.map_unattach (in Preprocessing for a custom data type)": + [{"id": + "Pair___map_unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___map_unattach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.map_unattach", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.map": - [{"id": "Pair___fst", - "data": null, + "Pair.map (in Preprocessing for a custom data type)": + [{"id": "Pair___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___map-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.map", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.fst": - [{"id": "coords", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Pair___fst", - "data": null, + "Pair.fst (in Preprocessing for a custom data type)": + [{"id": "Pair___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "fst", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.attach": - [{"id": "Pair___attach", - "data": null, + "Pair.fst (in Field Indices and Structure Inheritance)": + [{"id": + "Pair___fst-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Pair___fst-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_": + {"display": "fst", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Field Indices and Structure Inheritance"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Pair.attach (in Preprocessing for a custom data type)": + [{"id": + "Pair___attach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___attach-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.attach", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.Mem.snd": - [{"id": "Pair___Mem___snd", - "data": null, + "Pair.Mem.snd (in Preprocessing for a custom data type)": + [{"id": + "Pair___Mem___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___Mem___snd-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "snd", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.Mem.fst": - [{"id": "Pair___Mem___snd", - "data": null, + "Pair.Mem.fst (in Preprocessing for a custom data type)": + [{"id": + "Pair___Mem___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___Mem___fst-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "fst", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair.Mem": - [{"id": "Pair___Mem___snd", - "data": null, + "Pair.Mem (in Preprocessing for a custom data type)": + [{"id": "Pair___Mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair___Mem-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair.Mem", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Pair": - [{"id": "coords", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Pair___fst", - "data": null, + "Pair (in Preprocessing for a custom data type)": + [{"id": "Pair-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Pair-_LPAR_in-Preprocessing-for-a-custom-data-type_RPAR_": + {"display": "Pair", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Preprocessing Function Definitions", + "Preprocessing for a custom data type"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "PBool": - [{"id": "PBool", - "data": null, + "Pair (in Field Indices and Structure Inheritance)": + [{"id": "Pair-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Pair-_LPAR_in-Field-Indices-and-Structure-Inheritance_RPAR_": + {"display": "Pair", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Field Indices and Structure Inheritance"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat.to_of_eq_id": - [{"id": "OptONat___to_of_eq_id", - "data": null, + "PBool (in Overly-universe-polymorphic Bool)": + [{"id": "PBool-_LPAR_in-Overly-universe-polymorphic--Bool_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#PBool-_LPAR_in-Overly-universe-polymorphic--Bool_RPAR_": + {"display": "PBool", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Prop vs Type", + "Overly-universe-polymorphic Bool"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat.toOption": - [{"id": "OptONat___ofOption", - "data": null, + "OptONat.to_of_eq_id (in Translating Nested Inductive Types)": + [{"id": + "OptONat___to_of_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat___to_of_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "OptONat.to_of_eq_id", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat.some": - [{"id": "OptONat___some", - "data": null, + "OptONat.toOption (in Translating Nested Inductive Types)": + [{"id": + "OptONat___toOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat___toOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "OptONat.toOption", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat.of_to_eq_id": - [{"id": "OptONat___to_of_eq_id", - "data": null, + "OptONat.some (in Translating Nested Inductive Types)": + [{"id": + "OptONat___some-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat___some-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "some", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat.ofOption": - [{"id": "OptONat___ofOption", - "data": null, + "OptONat.of_to_eq_id (in Translating Nested Inductive Types)": + [{"id": + "OptONat___of_to_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat___of_to_eq_id-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "OptONat.of_to_eq_id", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat.none": - [{"id": "OptONat___some", - "data": null, + "OptONat.ofOption (in Translating Nested Inductive Types)": + [{"id": + "OptONat___ofOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat___ofOption-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "OptONat.ofOption", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OptONat": - [{"id": "OptONat___some", - "data": null, + "OptONat.none (in Translating Nested Inductive Types)": + [{"id": + "OptONat___none-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat___none-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "none", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OneSmaller.shrink": - [{"id": "OneSmaller-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "OneSmaller", - "data": null, + "OptONat (in Translating Nested Inductive Types)": + [{"id": "OptONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OptONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "OptONat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "OneSmaller.shrink (in Semi-Output Parameters with Pre-Existing Values)": + [{"id": + "OneSmaller___shrink-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#OneSmaller___shrink-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_": + {"display": "shrink", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Semi-Output Parameters with Pre-Existing Values"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "OneSmaller.biggest": - [{"id": "OneSmaller-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "OneSmaller", - "data": null, + "OneSmaller.shrink (in Output Parameters with Pre-Existing Values)": + [{"id": + "OneSmaller___shrink-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#OneSmaller___shrink-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_": + {"display": "shrink", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters with Pre-Existing Values"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "OneSmaller": - [{"id": "OneSmaller-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "OneSmaller", - "data": null, + "OneSmaller.biggest (in Semi-Output Parameters with Pre-Existing Values)": + [{"id": + "OneSmaller___biggest-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#OneSmaller___biggest-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_": + {"display": "biggest", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Semi-Output Parameters with Pre-Existing Values"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "One.one": - [{"id": "One", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}], - "One.mk": - [{"id": "One-next", - "data": null, - "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "One": - [{"id": "One", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "One-next", - "data": null, - "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "OddList.cons": - [{"id": "EvenList___nil", - "data": null, + "OneSmaller.biggest (in Output Parameters with Pre-Existing Values)": + [{"id": + "OneSmaller___biggest-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#OneSmaller___biggest-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_": + {"display": "biggest", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters with Pre-Existing Values"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "OneSmaller (in Semi-Output Parameters with Pre-Existing Values)": + [{"id": + "OneSmaller-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#OneSmaller-_LPAR_in-Semi-Output-Parameters-with-Pre-Existing-Values_RPAR_": + {"display": "OneSmaller", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Semi-Output Parameters with Pre-Existing Values"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "OneSmaller (in Output Parameters with Pre-Existing Values)": + [{"id": + "OneSmaller-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#OneSmaller-_LPAR_in-Output-Parameters-with-Pre-Existing-Values_RPAR_": + {"display": "OneSmaller", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Output Parameters", + "Output Parameters with Pre-Existing Values"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "OddList.cons (in Mutually Defined Inductive Types)": + [{"id": "OddList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OddList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Mutually Defined Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "OddList": - [{"id": "EvenList___nil", - "data": null, + "OddList (in Mutually Defined Inductive Types)": + [{"id": "OddList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#OddList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_": + {"display": "OddList", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Mutually Defined Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Odd.succ": - [{"id": "Even___zero-next-next-next", - "data": null, + "Odd.succ (in Even and odd)": + [{"id": "Odd___succ-_LPAR_in-Even-and-odd_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Odd___succ-_LPAR_in-Even-and-odd_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Even and odd"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Odd": - [{"id": "Even___zero-next-next-next", - "data": null, + "Odd (in Even and odd)": + [{"id": "Odd-_LPAR_in-Even-and-odd_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Odd-_LPAR_in-Even-and-odd_RPAR_": + {"display": "Odd", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Even and odd"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ONat.rec": - [{"id": "ONat___rec", - "data": null, + "ONat.rec (in Translating Nested Inductive Types)": + [{"id": "ONat___rec-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat___rec-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "ONat.rec", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ONat.mk": - [{"id": "ONat___mk-next", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "ONat___mk-next-next", - "data": null, + "ONat.mk (in Translating Nested Inductive Types)": + [{"id": "ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next": + {"display": "ONat.mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}, + "/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}, - {"id": "ONat___mk", - "data": null, + {"id": + "ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next", + "data": + {"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next": + {"display": "ONat.mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}, + "/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ONat'.mk": - [{"id": "OptONat___some", - "data": null, + "ONat.mk (in Nested Inductive Types)": + [{"id": "ONat___mk-_LPAR_in-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat___mk-_LPAR_in-Nested-Inductive-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ONat'": - [{"id": "OptONat___some", - "data": null, + "ONat'.mk (in Translating Nested Inductive Types)": + [{"id": "ONat______mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat______mk-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ONat": - [{"id": "ONat", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "ONat___mk-next", - "data": null, + "ONat' (in Translating Nested Inductive Types)": + [{"id": "ONat___-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat___-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "ONat'", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "ONat (in Translating Nested Inductive Types)": + [{"id": "ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next": + {"display": "ONat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}, + "/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "ONat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}, - {"id": "ONat___mk", - "data": null, + {"id": "ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next", + "data": + {"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_-next": + {"display": "ONat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}, + "/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Translating-Nested-Inductive-Types_RPAR_": + {"display": "ONat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Translating Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NotUnitLike.mk": - [{"id": "NotUnitLike", - "data": null, + "ONat (in Nested Inductive Types)": + [{"id": "ONat-_LPAR_in-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ONat-_LPAR_in-Nested-Inductive-Types_RPAR_": + {"display": "ONat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Nested Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "NotUnitLike.mk (in Definitional Equality of Unit-Like Types)": + [{"id": + "NotUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#NotUnitLike___mk-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "NotUnitLike": - [{"id": "NotUnitLike", - "data": null, + "NotUnitLike (in Definitional Equality of Unit-Like Types)": + [{"id": + "NotUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#NotUnitLike-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "NotUnitLike", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "NonZero": - [{"id": "RunsMatch", - "data": null, + "Not30.lt (in Splitting Predicates)": + [{"id": "Not30___lt-_LPAR_in-Splitting-Predicates_RPAR_", + "data": + {"/The--grind--tactic/Case-Analysis/#Not30___lt-_LPAR_in-Splitting-Predicates_RPAR_": + {"display": "lt", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Case Analysis", + "Selection Heuristics", + "Splitting Predicates"]}}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Not30.gt (in Splitting Predicates)": + [{"id": "Not30___gt-_LPAR_in-Splitting-Predicates_RPAR_", + "data": + {"/The--grind--tactic/Case-Analysis/#Not30___gt-_LPAR_in-Splitting-Predicates_RPAR_": + {"display": "gt", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Case Analysis", + "Selection Heuristics", + "Splitting Predicates"]}}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Not30 (in Splitting Predicates)": + [{"id": "Not30-_LPAR_in-Splitting-Predicates_RPAR_", + "data": + {"/The--grind--tactic/Case-Analysis/#Not30-_LPAR_in-Splitting-Predicates_RPAR_": + {"display": "Not30", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Case Analysis", + "Selection Heuristics", + "Splitting Predicates"]}}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "NonZero (in Universe mismatch)": + [{"id": "NonZero-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NonZero-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "NonZero", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NonEmptyString": - [{"id": "NonEmptyString", - "data": null, - "address": "/Basic-Types/Subtypes/"}, - {"id": "NonEmptyString-next", - "data": null, + "NonEmptyString (in Extensional Equality of Subtypes)": + [{"id": "NonEmptyString-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#NonEmptyString-_LPAR_in-Extensional-Equality-of-Subtypes_RPAR_": + {"display": "NonEmptyString", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Extensional Equality of Subtypes"]}}, "address": "/Basic-Types/Subtypes/"}], - "NonEmptyList.non_empty": - [{"id": "NonEmptyList___non_empty", - "data": null, + "NonEmptyString (in Definitional Equality of Subtypes)": + [{"id": "NonEmptyString-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_", + "data": + {"/Basic-Types/Subtypes/#NonEmptyString-_LPAR_in-Definitional-Equality-of-Subtypes_RPAR_": + {"display": "NonEmptyString", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Definitional Equality of Subtypes"]}}, + "address": "/Basic-Types/Subtypes/"}], + "NonEmptyList.non_empty (in Dependent Coercion)": + [{"id": "NonEmptyList___non_empty-_LPAR_in-Dependent-Coercion_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#NonEmptyList___non_empty-_LPAR_in-Dependent-Coercion_RPAR_": + {"display": "non_empty", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Dependent Coercion"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "NonEmptyList.contents": - [{"id": "NonEmptyList___non_empty", - "data": null, + "NonEmptyList.contents (in Dependent Coercion)": + [{"id": "NonEmptyList___contents-_LPAR_in-Dependent-Coercion_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#NonEmptyList___contents-_LPAR_in-Dependent-Coercion_RPAR_": + {"display": "contents", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Dependent Coercion"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "NonEmptyList": - [{"id": "NonEmptyList___non_empty", - "data": null, + "NonEmptyList (in Dependent Coercion)": + [{"id": "NonEmptyList-_LPAR_in-Dependent-Coercion_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#NonEmptyList-_LPAR_in-Dependent-Coercion_RPAR_": + {"display": "NonEmptyList", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Dependent Coercion"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "NoRepeats": - [{"id": "RunsMatch", - "data": null, + "NoRepeats (in Universe mismatch)": + [{"id": "NoRepeats-_LPAR_in-Universe-mismatch_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NoRepeats-_LPAR_in-Universe-mismatch_RPAR_": + {"display": "NoRepeats", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Universe Levels", + "Universe mismatch"]}}, "address": "/The-Type-System/Inductive-Types/"}], "NoConfusion": [{"id": "NoConfusion", - "data": null, + "data": + {"/Basic-Types/Natural-Numbers/#NoConfusion": + {"display": "NoConfusion", + "context": + ["The Lean Language Reference", + "Basic Types", + "Natural Numbers", + "Logical Model", + "Peano Axioms"]}}, "address": "/Basic-Types/Natural-Numbers/"}], - "No": - [{"id": "No", - "data": null, + "No (in A constructorless proposition)": + [{"id": "No-_LPAR_in-A-constructorless-proposition_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#No-_LPAR_in-A-constructorless-proposition_RPAR_": + {"display": "No", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A constructorless proposition"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NaturalNum": - [{"id": "NaturalNum", - "data": null, + "NaturalNum (in Mutual Block Scope)": + [{"id": "NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_-next": + {"display": "NaturalNum", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}, + "/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_": + {"display": "NaturalNum", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "NaturalNum-next", - "data": null, + {"id": "NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_-next": + {"display": "NaturalNum", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}, + "/Definitions/Recursive-Definitions/#NaturalNum-_LPAR_in-Mutual-Block-Scope_RPAR_": + {"display": "NaturalNum", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Mutual Recursion", + "Mutual Block Scope"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "NatWrapper.val": - [{"id": "NatWrapper___val-next", - "data": null, - "address": "/Type-Classes/Instance-Declarations/"}, - {"id": "NatWrapper___val", - "data": null, + "NatWrapper.val (in Variations in Instance Definitions)": + [{"id": + "NatWrapper___val-_LPAR_in-Variations-in-Instance-Definitions_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatWrapper___val-_LPAR_in-Variations-in-Instance-Definitions_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Variations in Instance Definitions"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatWrapper": - [{"id": "NatWrapper___val-next", - "data": null, - "address": "/Type-Classes/Instance-Declarations/"}, - {"id": "NatWrapper___val", - "data": null, + "NatWrapper.val (in Instance Name Generation)": + [{"id": "NatWrapper___val-_LPAR_in-Instance-Name-Generation_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatWrapper___val-_LPAR_in-Instance-Name-Generation_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instance Name Generation"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatTree.leaf": - [{"id": "NatTree___leaf", - "data": null, + "NatWrapper (in Variations in Instance Definitions)": + [{"id": "NatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatWrapper-_LPAR_in-Variations-in-Instance-Definitions_RPAR_": + {"display": "NatWrapper", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Variations in Instance Definitions"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatTree.branch": - [{"id": "NatTree___leaf", - "data": null, + "NatWrapper (in Instance Name Generation)": + [{"id": "NatWrapper-_LPAR_in-Instance-Name-Generation_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatWrapper-_LPAR_in-Instance-Name-Generation_RPAR_": + {"display": "NatWrapper", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Instance Name Generation"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatTree.beq": - [{"id": "NatTree___beq", - "data": null, + "NatTree.leaf (in Instances are not recursive)": + [{"id": "NatTree___leaf-_LPAR_in-Instances-are-not-recursive_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatTree___leaf-_LPAR_in-Instances-are-not-recursive_RPAR_": + {"display": "leaf", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances are not recursive"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatTree": - [{"id": "NatTree___leaf", - "data": null, + "NatTree.branch (in Instances are not recursive)": + [{"id": "NatTree___branch-_LPAR_in-Instances-are-not-recursive_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatTree___branch-_LPAR_in-Instances-are-not-recursive_RPAR_": + {"display": "branch", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances are not recursive"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatStringBimap.stringToNat": + "NatTree.beq (in Instances are not recursive)": + [{"id": "NatTree___beq-_LPAR_in-Instances-are-not-recursive_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatTree___beq-_LPAR_in-Instances-are-not-recursive_RPAR_": + {"display": "NatTree.beq", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances are not recursive"]}}, + "address": "/Type-Classes/Instance-Declarations/"}], + "NatTree (in Instances are not recursive)": + [{"id": "NatTree-_LPAR_in-Instances-are-not-recursive_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatTree-_LPAR_in-Instances-are-not-recursive_RPAR_": + {"display": "NatTree", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances are not recursive"]}}, + "address": "/Type-Classes/Instance-Declarations/"}], + "NatStringBimap.stringToNat (in Modifiers on structure constructor)": [{"id": - "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk", - "data": null, + "NatStringBimap___stringToNat-_LPAR_in-Modifiers-on-structure-constructor_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NatStringBimap___stringToNat-_LPAR_in-Modifiers-on-structure-constructor_RPAR_": + {"display": "stringToNat", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Modifiers on structure constructor"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NatStringBimap.natToString": + "NatStringBimap.natToString (in Modifiers on structure constructor)": [{"id": - "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk", - "data": null, + "NatStringBimap___natToString-_LPAR_in-Modifiers-on-structure-constructor_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NatStringBimap___natToString-_LPAR_in-Modifiers-on-structure-constructor_RPAR_": + {"display": "natToString", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Modifiers on structure constructor"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NatStringBimap.insert": + "NatStringBimap.insert (in Modifiers on structure constructor)": [{"id": - "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk", - "data": null, + "NatStringBimap___insert-_LPAR_in-Modifiers-on-structure-constructor_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NatStringBimap___insert-_LPAR_in-Modifiers-on-structure-constructor_RPAR_": + {"display": "NatStringBimap.insert", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Modifiers on structure constructor"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NatStringBimap.empty": + "NatStringBimap.empty (in Modifiers on structure constructor)": [{"id": - "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk", - "data": null, + "NatStringBimap___empty-_LPAR_in-Modifiers-on-structure-constructor_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NatStringBimap___empty-_LPAR_in-Modifiers-on-structure-constructor_RPAR_": + {"display": "NatStringBimap.empty", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Modifiers on structure constructor"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NatStringBimap": + "NatStringBimap (in Modifiers on structure constructor)": [{"id": - "_private___Manual___Language___InductiveTypes___Structures___0___NatStringBimap___mk", - "data": null, + "NatStringBimap-_LPAR_in-Modifiers-on-structure-constructor_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#NatStringBimap-_LPAR_in-Modifiers-on-structure-constructor_RPAR_": + {"display": "NatStringBimap", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Modifiers on structure constructor"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "NatRoseTree.node": - [{"id": "NatRoseTree___node", - "data": null, + "NatRoseTree.node (in Instances for nested types)": + [{"id": "NatRoseTree___node-_LPAR_in-Instances-for-nested-types_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatRoseTree___node-_LPAR_in-Instances-for-nested-types_RPAR_": + {"display": "node", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances for nested types"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatRoseTree.beq": - [{"id": "NatRoseTree___beq", - "data": null, + "NatRoseTree.beq (in Instances for nested types)": + [{"id": + "NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_-next", + "data": + {"/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_-next": + {"display": "NatRoseTree.beq", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances for nested types"]}, + "/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_": + {"display": "NatRoseTree.beq", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances for nested types"]}}, "address": "/Type-Classes/Instance-Declarations/"}, - {"id": "NatRoseTree___beq-next", - "data": null, + {"id": "NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_-next": + {"display": "NatRoseTree.beq", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances for nested types"]}, + "/Type-Classes/Instance-Declarations/#NatRoseTree___beq-_LPAR_in-Instances-for-nested-types_RPAR_": + {"display": "NatRoseTree.beq", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances for nested types"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatRoseTree": - [{"id": "NatRoseTree___node", - "data": null, + "NatRoseTree (in Instances for nested types)": + [{"id": "NatRoseTree-_LPAR_in-Instances-for-nested-types_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#NatRoseTree-_LPAR_in-Instances-for-nested-types_RPAR_": + {"display": "NatRoseTree", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Recursive Instances", + "Instances for nested types"]}}, "address": "/Type-Classes/Instance-Declarations/"}], - "NatPair.y": - [{"id": "NatPair___x-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "NatPair___x", - "data": null, + "NatPair.y (in Local Instances)": + [{"id": "NatPair___y-_LPAR_in-Local-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#NatPair___y-_LPAR_in-Local-Instances_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "NatPair.x": - [{"id": "NatPair___x-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "NatPair___x", - "data": null, + "NatPair.y (in Local Instances Have Priority)": + [{"id": "NatPair___y-_LPAR_in-Local-Instances-Have-Priority_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#NatPair___y-_LPAR_in-Local-Instances-Have-Priority_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances Have Priority"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "NatPair": - [{"id": "NatPair___x-next", - "data": null, - "address": "/Type-Classes/Instance-Synthesis/"}, - {"id": "NatPair___x", - "data": null, + "NatPair.x (in Local Instances)": + [{"id": "NatPair___x-_LPAR_in-Local-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#NatPair___x-_LPAR_in-Local-Instances_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances"]}}, "address": "/Type-Classes/Instance-Synthesis/"}], - "NatOrBool.nat": - [{"id": "NatOrBool___nat", - "data": null, + "NatPair.x (in Local Instances Have Priority)": + [{"id": "NatPair___x-_LPAR_in-Local-Instances-Have-Priority_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#NatPair___x-_LPAR_in-Local-Instances-Have-Priority_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances Have Priority"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "NatPair (in Local Instances)": + [{"id": "NatPair-_LPAR_in-Local-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#NatPair-_LPAR_in-Local-Instances_RPAR_": + {"display": "NatPair", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "NatPair (in Local Instances Have Priority)": + [{"id": "NatPair-_LPAR_in-Local-Instances-Have-Priority_RPAR_", + "data": + {"/Type-Classes/Instance-Synthesis/#NatPair-_LPAR_in-Local-Instances-Have-Priority_RPAR_": + {"display": "NatPair", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Synthesis", + "Candidate Instances", + "Local Instances Have Priority"]}}, + "address": "/Type-Classes/Instance-Synthesis/"}], + "NatOrInt.nat (in Maximal Parentheses)": + [{"id": "NatOrInt___nat-_LPAR_in-Maximal-Parentheses_RPAR_", + "data": + {"/Interacting-with-Lean/#NatOrInt___nat-_LPAR_in-Maximal-Parentheses_RPAR_": + {"display": "nat", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Maximal Parentheses"]}}, + "address": "/Interacting-with-Lean/"}], + "NatOrInt.int (in Maximal Parentheses)": + [{"id": "NatOrInt___int-_LPAR_in-Maximal-Parentheses_RPAR_", + "data": + {"/Interacting-with-Lean/#NatOrInt___int-_LPAR_in-Maximal-Parentheses_RPAR_": + {"display": "int", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Maximal Parentheses"]}}, + "address": "/Interacting-with-Lean/"}], + "NatOrInt (in Maximal Parentheses)": + [{"id": "NatOrInt-_LPAR_in-Maximal-Parentheses_RPAR_", + "data": + {"/Interacting-with-Lean/#NatOrInt-_LPAR_in-Maximal-Parentheses_RPAR_": + {"display": "NatOrInt", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Maximal Parentheses"]}}, + "address": "/Interacting-with-Lean/"}], + "NatOrBool.nat (in Sort Coercions as Ordinary Coercions)": + [{"id": + "NatOrBool___nat-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#NatOrBool___nat-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_": + {"display": "nat", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions as Ordinary Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "NatOrBool.bool": - [{"id": "NatOrBool___nat", - "data": null, + "NatOrBool.bool (in Sort Coercions as Ordinary Coercions)": + [{"id": + "NatOrBool___bool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#NatOrBool___bool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_": + {"display": "bool", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions as Ordinary Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "NatOrBool.asType": - [{"id": "NatOrBool___nat", - "data": null, + "NatOrBool.asType (in Sort Coercions as Ordinary Coercions)": + [{"id": + "NatOrBool___asType-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#NatOrBool___asType-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_": + {"display": "NatOrBool.asType", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions as Ordinary Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "NatOrBool": - [{"id": "NatOrBool___nat", - "data": null, + "NatOrBool (in Sort Coercions as Ordinary Coercions)": + [{"id": "NatOrBool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#NatOrBool-_LPAR_in-Sort-Coercions-as-Ordinary-Coercions_RPAR_": + {"display": "NatOrBool", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions as Ordinary Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "NatInterval.low_le_high": - [{"id": "NatInterval", "data": null, "address": "/Terms/Literals/"}], - "NatInterval.low": - [{"id": "NatInterval", "data": null, "address": "/Terms/Literals/"}], - "NatInterval.high": - [{"id": "NatInterval", "data": null, "address": "/Terms/Literals/"}], - "NatInterval": - [{"id": "NatInterval", "data": null, "address": "/Terms/Literals/"}], - "Nat.parity": - [{"id": "Nat___parity", - "data": null, + "NatInterval.low_le_high (in Custom Natural Number Literals)": + [{"id": + "NatInterval___low_le_high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_", + "data": + {"/Terms/Literals/#NatInterval___low_le_high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_": + {"display": "low_le_high", + "context": + ["The Lean Language Reference", + "Terms", + "Literals", + "Natural Numbers", + "Custom Natural Number Literals"]}}, + "address": "/Terms/Literals/"}], + "NatInterval.low (in Custom Natural Number Literals)": + [{"id": "NatInterval___low-_LPAR_in-Custom-Natural-Number-Literals_RPAR_", + "data": + {"/Terms/Literals/#NatInterval___low-_LPAR_in-Custom-Natural-Number-Literals_RPAR_": + {"display": "low", + "context": + ["The Lean Language Reference", + "Terms", + "Literals", + "Natural Numbers", + "Custom Natural Number Literals"]}}, + "address": "/Terms/Literals/"}], + "NatInterval.high (in Custom Natural Number Literals)": + [{"id": + "NatInterval___high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_", + "data": + {"/Terms/Literals/#NatInterval___high-_LPAR_in-Custom-Natural-Number-Literals_RPAR_": + {"display": "high", + "context": + ["The Lean Language Reference", + "Terms", + "Literals", + "Natural Numbers", + "Custom Natural Number Literals"]}}, + "address": "/Terms/Literals/"}], + "NatInterval (in Custom Natural Number Literals)": + [{"id": "NatInterval-_LPAR_in-Custom-Natural-Number-Literals_RPAR_", + "data": + {"/Terms/Literals/#NatInterval-_LPAR_in-Custom-Natural-Number-Literals_RPAR_": + {"display": "NatInterval", + "context": + ["The Lean Language Reference", + "Terms", + "Literals", + "Natural Numbers", + "Custom Natural Number Literals"]}}, + "address": "/Terms/Literals/"}], + "Nat.parity (in Inaccessible Patterns)": + [{"id": "Nat___parity-_LPAR_in-Inaccessible-Patterns_RPAR_", + "data": + {"/Terms/Pattern-Matching/#Nat___parity-_LPAR_in-Inaccessible-Patterns_RPAR_": + {"display": "Nat.parity", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Inaccessible Patterns"]}}, "address": "/Terms/Pattern-Matching/"}], - "Nat.otherZero": - [{"id": "Nat___otherZero-next", "data": null, "address": "/Axioms/"}, - {"id": "Nat___otherZero", "data": null, "address": "/Axioms/"}], - "Nat.half": - [{"id": "Nat___half", - "data": null, + "Nat.otherZero (in Axioms and Stuck Reduction)": + [{"id": "Nat___otherZero-_LPAR_in-Axioms-and-Stuck-Reduction_RPAR_", + "data": + {"/Axioms/#Nat___otherZero-_LPAR_in-Axioms-and-Stuck-Reduction_RPAR_": + {"display": "Nat.otherZero", + "context": + ["The Lean Language Reference", + "Axioms", + "Reduction", + "Axioms and Stuck Reduction"]}}, + "address": "/Axioms/"}], + "Nat.otherZero (in Axioms and Compilation)": + [{"id": "Nat___otherZero-_LPAR_in-Axioms-and-Compilation_RPAR_", + "data": + {"/Axioms/#Nat___otherZero-_LPAR_in-Axioms-and-Compilation_RPAR_": + {"display": "Nat.otherZero", + "context": + ["The Lean Language Reference", + "Axioms", + "Reduction", + "Axioms and Compilation"]}}, + "address": "/Axioms/"}], + "Nat.half (in Turning Off Field Notation)": + [{"id": "Nat___half-_LPAR_in-Turning-Off-Field-Notation_RPAR_", + "data": + {"/Terms/Function-Application/#Nat___half-_LPAR_in-Turning-Off-Field-Notation_RPAR_": + {"display": "Nat.half", + "context": + ["The Lean Language Reference", + "Terms", + "Function Application", + "Generalized Field Notation", + "Turning Off Field Notation"]}}, "address": "/Terms/Function-Application/"}], - "NamedFun.name": - [{"id": "NamedFun", - "data": null, + "NamedFun.name (in Coercing Decorated Functions to Function Types)": + [{"id": + "NamedFun___name-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#NamedFun___name-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "name", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "NamedFun.function": - [{"id": "NamedFun", - "data": null, + "NamedFun.function (in Coercing Decorated Functions to Function Types)": + [{"id": + "NamedFun___function-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#NamedFun___function-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "function", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "NamedFun.comp": - [{"id": "NamedFun___comp", - "data": null, + "NamedFun.comp (in Coercing Decorated Functions to Function Types)": + [{"id": + "NamedFun___comp-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#NamedFun___comp-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "NamedFun.comp", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "NamedFun": - [{"id": "NamedFun", - "data": null, + "NamedFun (in Coercing Decorated Functions to Function Types)": + [{"id": + "NamedFun-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#NamedFun-_LPAR_in-Coercing-Decorated-Functions-to-Function-Types_RPAR_": + {"display": "NamedFun", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing Decorated Functions to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "NS.three": - [{"id": "NS___three", - "data": null, + "NS.three (in Opening Scoped Declarations)": + [{"id": "NS___three-_LPAR_in-Opening-Scoped-Declarations_RPAR_", + "data": + {"/Namespaces-and-Sections/#NS___three-_LPAR_in-Opening-Scoped-Declarations_RPAR_": + {"display": "three", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Scoped Declarations"]}}, "address": "/Namespaces-and-Sections/"}], - "NS.interestingName": - [{"id": "interestingName", - "data": null, + "NS.interestingName (in Querying the Environment)": + [{"id": "NS___interestingName-_LPAR_in-Querying-the-Environment_RPAR_", + "data": + {"/Notations-and-Macros/Elaborators/#NS___interestingName-_LPAR_in-Querying-the-Environment_RPAR_": + {"display": "NS.interestingName", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Elaborators", + "Command Elaborators", + "Querying the Environment"]}}, "address": "/Notations-and-Macros/Elaborators/"}], - "MyStructure.field2": - [{"id": "MyStructure___field2", - "data": null, + "N.NatOrInt.nat (in Inductive Types with Constructors)": + [{"id": + "N___NatOrInt___nat-_LPAR_in-Inductive-Types-with-Constructors_RPAR_", + "data": + {"/Interacting-with-Lean/#N___NatOrInt___nat-_LPAR_in-Inductive-Types-with-Constructors_RPAR_": + {"display": "nat", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Inductive Types with Constructors"]}}, + "address": "/Interacting-with-Lean/"}], + "N.NatOrInt.int (in Inductive Types with Constructors)": + [{"id": + "N___NatOrInt___int-_LPAR_in-Inductive-Types-with-Constructors_RPAR_", + "data": + {"/Interacting-with-Lean/#N___NatOrInt___int-_LPAR_in-Inductive-Types-with-Constructors_RPAR_": + {"display": "int", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Inductive Types with Constructors"]}}, + "address": "/Interacting-with-Lean/"}], + "N.NatOrInt (in Inductive Types with Constructors)": + [{"id": "N___NatOrInt-_LPAR_in-Inductive-Types-with-Constructors_RPAR_", + "data": + {"/Interacting-with-Lean/#N___NatOrInt-_LPAR_in-Inductive-Types-with-Constructors_RPAR_": + {"display": "NatOrInt", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Inductive Types with Constructors"]}}, + "address": "/Interacting-with-Lean/"}], + "MyStructure.field2 (in Auto-implicit parameters in structure fields)": + [{"id": + "MyStructure___field2-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#MyStructure___field2-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_": + {"display": "field2", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Auto-implicit parameters in structure fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "MyStructure.field1": - [{"id": "MyStructure___field2", - "data": null, + "MyStructure.field1 (in Auto-implicit parameters in structure fields)": + [{"id": + "MyStructure___field1-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#MyStructure___field1-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_": + {"display": "field1", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Auto-implicit parameters in structure fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "MyStructure": - [{"id": "MyStructure___field2", - "data": null, + "MyStructure (in Auto-implicit parameters in structure fields)": + [{"id": + "MyStructure-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#MyStructure-_LPAR_in-Auto-implicit-parameters-in-structure-fields_RPAR_": + {"display": "MyStructure", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Auto-implicit parameters in structure fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "MyList": - [{"id": "MyList", "data": null, "address": "/Terms/Identifiers/"}], - "Monoid.op_id_identity": - [{"id": "Monoid", - "data": null, + "MyList (in Leading . and Unfolding Definitions)": + [{"id": "MyList-_LPAR_in-Leading--___--and-Unfolding-Definitions_RPAR_", + "data": + {"/Terms/Identifiers/#MyList-_LPAR_in-Leading--___--and-Unfolding-Definitions_RPAR_": + {"display": "MyList", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Leading .", + "Leading . and Unfolding Definitions"]}}, + "address": "/Terms/Identifiers/"}], + "Monoid.op_id_identity (in Sort Coercions)": + [{"id": "Monoid___op_id_identity-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid___op_id_identity-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "op_id_identity", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "Monoid.op_assoc": - [{"id": "Monoid", - "data": null, + "Monoid.op_assoc (in Sort Coercions)": + [{"id": "Monoid___op_assoc-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid___op_assoc-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "op_assoc", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "Monoid.op": - [{"id": "Monoid", - "data": null, + "Monoid.op (in Sort Coercions)": + [{"id": "Monoid___op-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid___op-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "op", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "Monoid.id_op_identity": - [{"id": "Monoid", - "data": null, + "Monoid.id_op_identity (in Sort Coercions)": + [{"id": "Monoid___id_op_identity-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid___id_op_identity-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "id_op_identity", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "Monoid.id": - [{"id": "Monoid", - "data": null, + "Monoid.id (in Sort Coercions)": + [{"id": "Monoid___id-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid___id-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "id", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "Monoid.Carrier": - [{"id": "Monoid", - "data": null, + "Monoid.Carrier (in Sort Coercions)": + [{"id": "Monoid___Carrier-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid___Carrier-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "Carrier", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "Monoid": - [{"id": "Monoid", - "data": null, + "Monoid (in Sort Coercions)": + [{"id": "Monoid-_LPAR_in-Sort-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-to-Sorts/#Monoid-_LPAR_in-Sort-Coercions_RPAR_": + {"display": "Monoid", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Sorts", + "Sort Coercions"]}}, "address": "/Coercions/Coercing-to-Sorts/"}], - "M": - [{"id": "M", - "data": null, + "Maze.wf (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze___wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze___wf-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "wf", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Maze.raw (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze___raw-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze___raw-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "raw", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Maze.insert (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze___insert-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "Maze.insert", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Maze.go? (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze___go___-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze___go___-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "Maze.go?", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Maze.description (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze___description-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "Maze.description", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Maze.base (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze___base-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "Maze.base", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Maze (in Nested Inductive Types with Std.HashMap)": + [{"id": + "Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_-next", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_-next": + {"display": "Maze", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}, + "/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "Maze", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}, + {"id": "Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_", + "data": + {"/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_-next": + {"display": "Maze", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}, + "/Basic-Types/Maps-and-Sets/#Maze-_LPAR_in-Nested-Inductive-Types-with--Std___HashMap_RPAR_": + {"display": "Maze", + "context": + ["The Lean Language Reference", + "Basic Types", + "Maps and Sets", + "Library Design", + "Raw Data and Invariants", + "Nested Inductive Types with Std.HashMap"]}}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "M (in State Types)": + [{"id": "M-_LPAR_in-State-Types_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#M-_LPAR_in-State-Types_RPAR_": + {"display": "M", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Varieties of Monads", + "Monad Type Classes", + "State Types"]}}, "address": "/Functors___-Monads-and--do--Notation/Varieties-of-Monads/"}], - "LocatedStx.mk": - [{"id": "Stx___node", - "data": null, + "LocatedStx.mk (in Nested positions)": + [{"id": "LocatedStx___mk-_LPAR_in-Nested-positions_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#LocatedStx___mk-_LPAR_in-Nested-positions_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Nested positions"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "LocatedStx": - [{"id": "Stx___node", - "data": null, + "LocatedStx (in Nested positions)": + [{"id": "LocatedStx-_LPAR_in-Nested-positions_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#LocatedStx-_LPAR_in-Nested-positions_RPAR_": + {"display": "LocatedStx", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Nested positions"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ListCursor.right": - [{"id": "ListCursor___left", - "data": null, + "ListCursor.right (in Unexpansion and Arguments)": + [{"id": "ListCursor___right-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___right-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "ListCursor.right", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "ListCursor.rewind": - [{"id": "ListCursor___fastForward", - "data": null, + "ListCursor.rewind (in Unexpansion and Arguments)": + [{"id": "ListCursor___rewind-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___rewind-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "ListCursor.rewind", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "ListCursor.left": - [{"id": "ListCursor___left", - "data": null, + "ListCursor.left (in Unexpansion and Arguments)": + [{"id": "ListCursor___left-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___left-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "ListCursor.left", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "ListCursor.fastForward": - [{"id": "ListCursor___fastForward", - "data": null, + "ListCursor.fastForward (in Unexpansion and Arguments)": + [{"id": + "ListCursor___fastForward-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___fastForward-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "ListCursor.fastForward", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "ListCursor.before": - [{"id": "ListCursor___after", - "data": null, + "ListCursor.before (in Unexpansion and Arguments)": + [{"id": "ListCursor___before-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___before-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "before", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "ListCursor.after": - [{"id": "ListCursor___after", - "data": null, + "ListCursor.after (in Unexpansion and Arguments)": + [{"id": "ListCursor___after-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor___after-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "after", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "ListCursor": - [{"id": "ListCursor___after", - "data": null, + "ListCursor (in Unexpansion and Arguments)": + [{"id": "ListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_", + "data": + {"/Notations-and-Macros/Extending-Lean___s-Output/#ListCursor-_LPAR_in-Unexpansion-and-Arguments_RPAR_": + {"display": "ListCursor", + "context": + ["The Lean Language Reference", + "Notations and Macros", + "Extending Lean's Output", + "Unexpanders", + "Unexpansion and Arguments"]}}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], - "List.myMap": - [{"id": "f-next-next", - "data": null, + "List.myMap (in Enriched Proof Obligation Contexts)": + [{"id": "List___myMap-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___myMap-_LPAR_in-Enriched-Proof-Obligation-Contexts_RPAR_": + {"display": "List.myMap", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Well-Founded Recursion", + "Termination proofs", + "Enriched Proof Obligation Contexts"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "List.free_theorem": - [{"id": "List___free_theorem", "data": null, "address": "/Axioms/"}], - "List.findIndex_implies_pred": - [{"id": "List___findIndex_implies_pred", - "data": null, + "List.free_theorem (in Inconsistencies From Axioms)": + [{"id": "List___free_theorem-_LPAR_in-Inconsistencies-From-Axioms_RPAR_", + "data": + {"/Axioms/#List___free_theorem-_LPAR_in-Inconsistencies-From-Axioms_RPAR_": + {"display": "List.free_theorem", + "context": + ["The Lean Language Reference", + "Axioms", + "Consistency", + "Inconsistencies From Axioms"]}}, + "address": "/Axioms/"}], + "List.findIndex_implies_pred (in Partial Correctness Theorem)": + [{"id": + "List___findIndex_implies_pred-_LPAR_in-Partial-Correctness-Theorem_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___findIndex_implies_pred-_LPAR_in-Partial-Correctness-Theorem_RPAR_": + {"display": "List.findIndex_implies_pred", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Partial Correctness Theorems", + "Partial Correctness Theorem"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "List.findIndex": - [{"id": "List___findIndex-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "List___findIndex-next-next-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "List___findIndex", - "data": null, + "List.findIndex (in Tail Recursion with Branching)": + [{"id": "List___findIndex-_LPAR_in-Tail-Recursion-with-Branching_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Tail-Recursion-with-Branching_RPAR_": + {"display": "List.findIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Tail-Recursive Functions", + "Tail Recursion with Branching"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "List.findIndex (in Partial Correctness Theorem)": + [{"id": "List___findIndex-_LPAR_in-Partial-Correctness-Theorem_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Partial-Correctness-Theorem_RPAR_": + {"display": "List.findIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Partial Correctness Theorems", + "Partial Correctness Theorem"]}}, + "address": "/Definitions/Recursive-Definitions/"}], + "List.findIndex (in Monadic functions)": + [{"id": "List___findIndex-_LPAR_in-Monadic-functions_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_-next": + {"display": "List.findIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}, + "/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_": + {"display": "List.findIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "List___findIndex-next", - "data": null, + {"id": "List___findIndex-_LPAR_in-Monadic-functions_RPAR_-next", + "data": + {"/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_-next": + {"display": "List.findIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}, + "/Definitions/Recursive-Definitions/#List___findIndex-_LPAR_in-Monadic-functions_RPAR_": + {"display": "List.findIndex", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Monadic functions", + "Monadic functions"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "List.brecOnTable": - [{"id": "List___brecOnTable", - "data": null, + "List.disjoint": + [{"id": "List___disjoint", + "data": + {"/The--grind--tactic/Bigger-Examples/#List___disjoint": + {"display": "_root_.List.disjoint", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "List.brecOnTable (in Course-of-Values Tables)": + [{"id": "List___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___brecOnTable-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "List.brecOnTable", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "List.brecOn'": - [{"id": "List___brecOn___", - "data": null, + "List.brecOn' (in Course-of-Values Tables)": + [{"id": "List___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___brecOn___-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "List.brecOn'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "List.below'": - [{"id": "List___below___", - "data": null, + "List.below' (in Course-of-Values Tables)": + [{"id": "List___below___-_LPAR_in-Course-of-Values-Tables_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#List___below___-_LPAR_in-Course-of-Values-Tables_RPAR_": + {"display": "List.below'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Elaboration Using Course-of-Values Recursion", + "Course-of-Values Tables"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "LengthList": - [{"id": "LengthList", "data": null, "address": "/The-Type-System/"}], - "LenList.zipWith": - [{"id": "LenList___list", - "data": null, + "List.All.nil (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "List___All___nil-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#List___All___nil-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#List___All___nil-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}, + {"id": + "List___All___nil-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#List___All___nil-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#List___All___nil-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "List.All.cons (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "List___All___cons-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#List___All___cons-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#List___All___cons-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}, + {"id": + "List___All___cons-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#List___All___cons-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#List___All___cons-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "List.All (in Omitting parameter in argument to higher-order predicate)": + [{"id": + "List___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#List___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "List.All", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#List___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "List.All", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}, + {"id": + "List___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_", + "data": + {"/Error-Explanations/lean___inductiveParamMissing/#List___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_-next": + {"display": "List.All", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}, + "/Error-Explanations/lean___inductiveParamMissing/#List___All-_LPAR_in-Omitting-parameter-in-argument-to-higher-order-predicate_RPAR_": + {"display": "List.All", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.inductiveParamMissing", + "Examples", + "Omitting parameter in argument to higher-order predicate"]}}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "LengthList (in Computing types)": + [{"id": "LengthList-_LPAR_in-Computing-types_RPAR_", + "data": + {"/The-Type-System/#LengthList-_LPAR_in-Computing-types_RPAR_": + {"display": "LengthList", + "context": + ["The Lean Language Reference", + "The Type System", + "Computing types"]}}, + "address": "/The-Type-System/"}], + "LenList.zipWith (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___zipWith-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___zipWith-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList.zipWith", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.tail": - [{"id": "LenList___list", - "data": null, + "LenList.tail (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___tail-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___tail-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList.tail", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.map": - [{"id": "LenList___list", - "data": null, + "LenList.map (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___map-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___map-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList.map", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.list_length_eq": - [{"id": "LenList___diagonal", - "data": null, + "LenList.list_length_eq (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___list_length_eq-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___list_length_eq-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList.list_length_eq", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.list": - [{"id": "LenList___list", - "data": null, + "LenList.list (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___list-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___list-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "list", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.lengthOk": - [{"id": "LenList___list", - "data": null, + "LenList.lengthOk (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___lengthOk-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___lengthOk-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "lengthOk", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.head": - [{"id": "LenList___list", - "data": null, + "LenList.head (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___head-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___head-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList.head", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList.diagonal": - [{"id": "LenList___diagonal", - "data": null, + "LenList.diagonal (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList___diagonal-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList___diagonal-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList.diagonal", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LenList": - [{"id": "LenList___list", - "data": null, + "LenList (in Lists with Lengths as Applicative Functors)": + [{"id": + "LenList-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/#LenList-_LPAR_in-Lists-with-Lengths-as-Applicative-Functors_RPAR_": + {"display": "LenList", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Lists with Lengths as Applicative Functors"]}}, "address": "/Functors___-Monads-and--do--Notation/"}], - "LazyList.toList": - [{"id": "LazyList___toList", - "data": null, + "LazyList.toList (in Lazy Lists)": + [{"id": "LazyList___toList-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___toList-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "LazyList.toList", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList.take": - [{"id": "LazyList___take", - "data": null, + "LazyList.take (in Lazy Lists)": + [{"id": "LazyList___take-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___take-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "LazyList.take", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList.ofFn": - [{"id": "LazyList___take", - "data": null, + "LazyList.ofFn (in Lazy Lists)": + [{"id": "LazyList___ofFn-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___ofFn-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "LazyList.ofFn", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList.nil": - [{"id": "LazyList___cons", - "data": null, + "LazyList.nil (in Lazy Lists)": + [{"id": "LazyList___nil-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___nil-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList.delayed": - [{"id": "LazyList___cons", - "data": null, + "LazyList.delayed (in Lazy Lists)": + [{"id": "LazyList___delayed-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___delayed-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "delayed", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList.cons": - [{"id": "LazyList___cons", - "data": null, + "LazyList.cons (in Lazy Lists)": + [{"id": "LazyList___cons-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___cons-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList.append": - [{"id": "LazyList___take", - "data": null, + "LazyList.append (in Lazy Lists)": + [{"id": "LazyList___append-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList___append-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "LazyList.append", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "LazyList": - [{"id": "LazyList___cons", - "data": null, + "LazyList (in Lazy Lists)": + [{"id": "LazyList-_LPAR_in-Lazy-Lists_RPAR_", + "data": + {"/Basic-Types/Lazy-Computations/#LazyList-_LPAR_in-Lazy-Lists_RPAR_": + {"display": "LazyList", + "context": + ["The Lean Language Reference", + "Basic Types", + "Lazy Computations", + "Coercions", + "Lazy Lists"]}}, "address": "/Basic-Types/Lazy-Computations/"}], - "Later.get": - [{"id": "Later___get", - "data": null, + "Later.get (in Controlling Evaluation with Coercions)": + [{"id": + "Later___get-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#Later___get-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_": + {"display": "get", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Controlling Evaluation with Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "Later": - [{"id": "Later___get", - "data": null, + "Later (in Controlling Evaluation with Coercions)": + [{"id": "Later-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_", + "data": + {"/Coercions/Coercion-Insertion/#Later-_LPAR_in-Controlling-Evaluation-with-Coercions_RPAR_": + {"display": "Later", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercion Insertion", + "Controlling Evaluation with Coercions"]}}, "address": "/Coercions/Coercion-Insertion/"}], - "L": - [{"id": "L-next", "data": null, "address": "/The-Type-System/Universes/"}, - {"id": "L", "data": null, "address": "/The-Type-System/Universes/"}, - {"id": "L-next-next", - "data": null, + "L (in Automatic universe parameters and the universe command)": + [{"id": + "L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_", + "data": + {"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}, + "/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}, + "/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}}, + "address": "/The-Type-System/Universes/"}, + {"id": + "L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next", + "data": + {"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}, + "/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}, + "/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}}, + "address": "/The-Type-System/Universes/"}, + {"id": + "L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next", + "data": + {"/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next-next": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}, + "/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_-next": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}, + "/The-Type-System/Universes/#L-_LPAR_in-Automatic-universe-parameters-and-the--universe--command_RPAR_": + {"display": "L", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe Variable Bindings", + "Automatic universe parameters and the universe command"]}}, "address": "/The-Type-System/Universes/"}], "K": [{"id": "K", - "data": null, + "data": + {"/Basic-Propositions/Propositional-Equality/#K": + {"display": "K", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Uniqueness of Equality Proofs"]}}, "address": "/Basic-Propositions/Propositional-Equality/"}], - "IsEnum.to_from_id": - [{"id": "IsEnum___fromIdx", - "data": null, + "IsEnum.to_from_id (in Deriving Handlers)": + [{"id": "IsEnum___to_from_id-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#IsEnum___to_from_id-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "to_from_id", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "IsEnum.toIdx": - [{"id": "IsEnum___fromIdx", - "data": null, + "IsEnum.toIdx (in Deriving Handlers)": + [{"id": "IsEnum___toIdx-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#IsEnum___toIdx-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "toIdx", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "IsEnum.size": - [{"id": "IsEnum___fromIdx", - "data": null, + "IsEnum.size (in Deriving Handlers)": + [{"id": "IsEnum___size-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#IsEnum___size-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "size", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "IsEnum.from_to_id": - [{"id": "IsEnum___fromIdx", - "data": null, + "IsEnum.from_to_id (in Deriving Handlers)": + [{"id": "IsEnum___from_to_id-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#IsEnum___from_to_id-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "from_to_id", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "IsEnum.fromIdx": - [{"id": "IsEnum___fromIdx", - "data": null, + "IsEnum.fromIdx (in Deriving Handlers)": + [{"id": "IsEnum___fromIdx-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#IsEnum___fromIdx-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "fromIdx", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "IsEnum": - [{"id": "IsEnum___fromIdx", - "data": null, + "IsEnum (in Deriving Handlers)": + [{"id": "IsEnum-_LPAR_in-Deriving-Handlers_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#IsEnum-_LPAR_in-Deriving-Handlers_RPAR_": + {"display": "IsEnum", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Handlers", + "Deriving Handlers"]}}, "address": "/Type-Classes/Deriving-Instances/"}], - "IsEmpty": - [{"id": "IsEmpty", - "data": null, + "IsEmpty (in Extending trivial)": + [{"id": "IsEmpty-_LPAR_in-Extending--trivial_RPAR_", + "data": + {"/Tactic-Proofs/Custom-Tactics/#IsEmpty-_LPAR_in-Extending--trivial_RPAR_": + {"display": "IsEmpty", + "context": + ["The Lean Language Reference", + "Tactic Proofs", + "Custom Tactics", + "Tactic Macros", + "Extensible Tactic Macros", + "Extending trivial"]}}, "address": "/Tactic-Proofs/Custom-Tactics/"}], - "IdT.run": - [{"id": "IdT___run", - "data": null, + "IndexMap.values": + [{"id": "IndexMap___values", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___values": + {"display": "values", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.size_keys": + [{"id": "IndexMap___size_keys", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___size_keys": + {"display": "size_keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.size": + [{"id": "IndexMap___size-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___size-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___size-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___size", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size-next": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___size": + {"display": "size", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.mem_insert": + [{"id": "IndexMap___mem_insert", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next-next": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___mem_insert-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next-next": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___mem_insert-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next-next": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert-next": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___mem_insert": + {"display": "mem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.keys": + [{"id": "IndexMap___keys", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___keys": + {"display": "keys", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.insert": + [{"id": "IndexMap___insert-next-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___insert", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___insert-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___insert-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___insert-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert-next": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___insert": + {"display": "insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.indices": + [{"id": "IndexMap___indices", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___indices": + {"display": "indices", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.getIdx_findIdx": + [{"id": "IndexMap___getIdx_findIdx-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next-next": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___getIdx_findIdx-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next-next": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___getIdx_findIdx", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next-next": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx-next": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx_findIdx": + {"display": "getIdx_findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.getIdx?": + [{"id": "IndexMap___getIdx___-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___-next": + {"display": "getIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___": + {"display": "getIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___getIdx___", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___-next": + {"display": "getIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx___": + {"display": "getIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.getIdx": + [{"id": "IndexMap___getIdx", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx-next": + {"display": "getIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx": + {"display": "getIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___getIdx-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx-next": + {"display": "getIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getIdx": + {"display": "getIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.getElem_insert": + [{"id": "IndexMap___getElem_insert", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next-next": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___getElem_insert-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next-next": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___getElem_insert-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next-next": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert-next": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___getElem_insert": + {"display": "getElem_insert", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.findIdx_insert_self": + [{"id": "IndexMap___findIdx_insert_self-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next-next": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___findIdx_insert_self-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next-next": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___findIdx_insert_self", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next-next": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self-next": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx_insert_self": + {"display": "findIdx_insert_self", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.findIdx?": + [{"id": "IndexMap___findIdx___", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___-next": + {"display": "findIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___": + {"display": "findIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___findIdx___-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___-next": + {"display": "findIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx___": + {"display": "findIdx?", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.findIdx": + [{"id": "IndexMap___findIdx-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx-next": + {"display": "findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx": + {"display": "findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___findIdx", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx-next": + {"display": "findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___findIdx": + {"display": "findIdx", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.eraseSwap": + [{"id": "IndexMap___eraseSwap", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next": + {"display": "eraseSwap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap": + {"display": "eraseSwap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___eraseSwap-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap-next": + {"display": "eraseSwap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___eraseSwap": + {"display": "eraseSwap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.emptyWithCapacity": + [{"id": "IndexMap___emptyWithCapacity-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___emptyWithCapacity", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___emptyWithCapacity-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___emptyWithCapacity-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity-next": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___emptyWithCapacity": + {"display": "emptyWithCapacity", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.contains": + [{"id": "IndexMap___contains-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___contains-next": + {"display": "contains", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___contains": + {"display": "contains", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap___contains", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___contains-next": + {"display": "contains", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap___contains": + {"display": "contains", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap.WF": + [{"id": "IndexMap___WF", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap___WF": + {"display": "WF", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IndexMap": + [{"id": "IndexMap-next-next-next-next-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap-next-next-next-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap-next-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IndexMap-next-next-next-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap-next": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}, + "/The--grind--tactic/Bigger-Examples/#IndexMap": + {"display": "IndexMap", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "IndexMap"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfNormalization": + [{"id": "IfNormalization", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfNormalization": + {"display": "IfNormalization", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.vars": + [{"id": "IfExpr___vars", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___vars": + {"display": "vars", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.var": + [{"id": "IfExpr___var", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___var": + {"display": "var", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.normalized": + [{"id": "IfExpr___normalized", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalized": + {"display": "normalized", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.normalize_spec": + [{"id": "IfExpr___normalize_spec-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next-next": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IfExpr___normalize_spec-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next-next": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IfExpr___normalize_spec", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next-next": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec-next": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize_spec": + {"display": "normalize_spec", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.normalize": + [{"id": "IfExpr___normalize-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next-next": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IfExpr___normalize-next-next", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next-next": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}, + {"id": "IfExpr___normalize", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next-next": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize-next": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}, + "/The--grind--tactic/Bigger-Examples/#IfExpr___normalize": + {"display": "normalize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.normSize": + [{"id": "IfExpr___normSize", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___normSize": + {"display": "normSize", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The solution using grind"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.lit": + [{"id": "IfExpr___lit", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___lit": + {"display": "lit", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.ite": + [{"id": "IfExpr___ite", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___ite": + {"display": "ite", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.hasRedundantIf": + [{"id": "IfExpr___hasRedundantIf", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___hasRedundantIf": + {"display": "hasRedundantIf", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.hasNestedIf": + [{"id": "IfExpr___hasNestedIf", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___hasNestedIf": + {"display": "hasNestedIf", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.hasConstantIf": + [{"id": "IfExpr___hasConstantIf", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___hasConstantIf": + {"display": "hasConstantIf", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.eval": + [{"id": "IfExpr___eval", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___eval": + {"display": "eval", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr.disjoint": + [{"id": "IfExpr___disjoint", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr___disjoint": + {"display": "disjoint", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IfExpr": + [{"id": "IfExpr", + "data": + {"/The--grind--tactic/Bigger-Examples/#IfExpr": + {"display": "IfExpr", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Bigger Examples", + "if - then - else Normalization", + "The formal statement"]}}, + "address": "/The--grind--tactic/Bigger-Examples/"}], + "IdT.run (in The Identity Monad Transformer )": + [{"id": "IdT___run-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#IdT___run-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_": + {"display": "IdT.run", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Varieties of Monads", + "Monad Transformers", + "The Identity Monad Transformer "]}}, "address": "/Functors___-Monads-and--do--Notation/Varieties-of-Monads/"}], - "IdT": - [{"id": "IdT", - "data": null, + "IdT (in The Identity Monad Transformer )": + [{"id": "IdT-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_", + "data": + {"/Functors___-Monads-and--do--Notation/Varieties-of-Monads/#IdT-_LPAR_in-The-Identity-Monad-Transformer-_RPAR_": + {"display": "IdT", + "context": + ["The Lean Language Reference", + "Functors, Monads and do -Notation", + "Varieties of Monads", + "Monad Transformers", + "The Identity Monad Transformer "]}}, "address": "/Functors___-Monads-and--do--Notation/Varieties-of-Monads/"}], - "HotDrink.toString": - [{"id": "ColdDrink___toString", - "data": null, + "HotDrink.toString (in Current Namespace)": + [{"id": "HotDrink___toString-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#HotDrink___toString-_LPAR_in-Current-Namespace_RPAR_": + {"display": "toString", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "HotDrink.tea": - [{"id": "HotDrink___cocoa", - "data": null, + "HotDrink.tea (in Current Namespace)": + [{"id": "HotDrink___tea-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#HotDrink___tea-_LPAR_in-Current-Namespace_RPAR_": + {"display": "tea", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "HotDrink.ofString?": - [{"id": "HotDrink___ofString___", - "data": null, + "HotDrink.ofString? (in Current Namespace)": + [{"id": "HotDrink___ofString___-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#HotDrink___ofString___-_LPAR_in-Current-Namespace_RPAR_": + {"display": "HotDrink.ofString?", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "HotDrink.coffee": - [{"id": "HotDrink___cocoa", - "data": null, + "HotDrink.coffee (in Current Namespace)": + [{"id": "HotDrink___coffee-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#HotDrink___coffee-_LPAR_in-Current-Namespace_RPAR_": + {"display": "coffee", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "HotDrink.cocoa": - [{"id": "HotDrink___cocoa", - "data": null, + "HotDrink.cocoa (in Current Namespace)": + [{"id": "HotDrink___cocoa-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#HotDrink___cocoa-_LPAR_in-Current-Namespace_RPAR_": + {"display": "cocoa", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "HotDrink": - [{"id": "HotDrink___cocoa", - "data": null, + "HotDrink (in Current Namespace)": + [{"id": "HotDrink-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#HotDrink-_LPAR_in-Current-Namespace_RPAR_": + {"display": "HotDrink", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "Heap.insert": - [{"id": "Heap___insert", - "data": null, + "Heap.insert (in Instances are Not Unique)": + [{"id": "Heap___insert-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap___insert-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "Heap.insert", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap.contents": - [{"id": "Heap___insert", - "data": null, + "Heap.contents (in Instances are Not Unique)": + [{"id": "Heap___contents-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap___contents-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "contents", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap.bubbleUp": - [{"id": "Heap___insert", - "data": null, + "Heap.bubbleUp (in Instances are Not Unique)": + [{"id": "Heap___bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap___bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "Heap.bubbleUp", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap'.insert": - [{"id": "Heap______contents", - "data": null, + "Heap'.insert (in Instances are Not Unique)": + [{"id": "Heap______insert-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap______insert-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "Heap'.insert", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap'.contents": - [{"id": "Heap______contents", - "data": null, + "Heap'.contents (in Instances are Not Unique)": + [{"id": "Heap______contents-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap______contents-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "contents", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap'.bubbleUp": - [{"id": "Heap______contents", - "data": null, + "Heap'.bubbleUp (in Instances are Not Unique)": + [{"id": "Heap______bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap______bubbleUp-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "Heap'.bubbleUp", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap'": - [{"id": "Heap______contents", - "data": null, + "Heap' (in Instances are Not Unique)": + [{"id": "Heap___-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap___-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "Heap'", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Heap": - [{"id": "Heap___insert", - "data": null, + "Heap (in Instances are Not Unique)": + [{"id": "Heap-_LPAR_in-Instances-are-Not-Unique_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#Heap-_LPAR_in-Instances-are-Not-Unique_RPAR_": + {"display": "Heap", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Instances are Not Unique"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "Greetings.english": - [{"id": "Greetings___english", - "data": null, + "Greetings.english (in Named Section)": + [{"id": "Greetings___english-_LPAR_in-Named-Section_RPAR_", + "data": + {"/Namespaces-and-Sections/#Greetings___english-_LPAR_in-Named-Section_RPAR_": + {"display": "Greetings.english", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Controlling Section Scopes", + "Named Section"]}}, "address": "/Namespaces-and-Sections/"}], - "Graph.empty": - [{"id": "Graph", - "data": null, + "Graph.empty (in Default values)": + [{"id": "Graph___empty-_LPAR_in-Default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Graph___empty-_LPAR_in-Default-values_RPAR_": + {"display": "Graph.empty", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Graph.adjacency": - [{"id": "Graph", - "data": null, + "Graph.adjacency (in Default values)": + [{"id": "Graph___adjacency-_LPAR_in-Default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Graph___adjacency-_LPAR_in-Default-values_RPAR_": + {"display": "adjacency", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Graph": - [{"id": "Graph", - "data": null, + "Graph (in Default values)": + [{"id": "Graph-_LPAR_in-Default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Graph-_LPAR_in-Default-values_RPAR_": + {"display": "Graph", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Forest.statement": - [{"id": "Forest___statement", - "data": null, + "Forest.statement (in Explicit Root Namespace)": + [{"id": "Forest___statement-_LPAR_in-Explicit-Root-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#Forest___statement-_LPAR_in-Explicit-Root-Namespace_RPAR_": + {"display": "statement", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Explicit Root Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "Forest.nextStatement": - [{"id": "Forest___nextStatement", - "data": null, + "Forest.nextStatement (in Explicit Root Namespace)": + [{"id": "Forest___nextStatement-_LPAR_in-Explicit-Root-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#Forest___nextStatement-_LPAR_in-Explicit-Root-Namespace_RPAR_": + {"display": "nextStatement", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Explicit Root Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "Forest.color": - [{"id": "Forest___statement", - "data": null, + "Forest.color (in Explicit Root Namespace)": + [{"id": "Forest___color-_LPAR_in-Explicit-Root-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#Forest___color-_LPAR_in-Explicit-Root-Namespace_RPAR_": + {"display": "color", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Explicit Root Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "Float.zero_eq_zero_plus_zero": - [{"id": "Float___zero_eq_zero_plus_zero-next", - "data": null, + "Float.zero_eq_zero_plus_zero (in No Kernel Reasoning About Floating-Point Numbers)": + [{"id": + "Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_", + "data": + {"/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_-next": + {"display": "Float.zero_eq_zero_plus_zero", + "context": + ["The Lean Language Reference", + "Basic Types", + "Floating-Point Numbers", + "No Kernel Reasoning About Floating-Point Numbers"]}, + "/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_": + {"display": "Float.zero_eq_zero_plus_zero", + "context": + ["The Lean Language Reference", + "Basic Types", + "Floating-Point Numbers", + "No Kernel Reasoning About Floating-Point Numbers"]}}, "address": "/Basic-Types/Floating-Point-Numbers/"}, - {"id": "Float___zero_eq_zero_plus_zero", - "data": null, + {"id": + "Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_-next", + "data": + {"/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_-next": + {"display": "Float.zero_eq_zero_plus_zero", + "context": + ["The Lean Language Reference", + "Basic Types", + "Floating-Point Numbers", + "No Kernel Reasoning About Floating-Point Numbers"]}, + "/Basic-Types/Floating-Point-Numbers/#Float___zero_eq_zero_plus_zero-_LPAR_in-No-Kernel-Reasoning-About-Floating-Point-Numbers_RPAR_": + {"display": "Float.zero_eq_zero_plus_zero", + "context": + ["The Lean Language Reference", + "Basic Types", + "Floating-Point Numbers", + "No Kernel Reasoning About Floating-Point Numbers"]}}, "address": "/Basic-Types/Floating-Point-Numbers/"}], - "Fix": - [{"id": "Fix", - "data": null, + "Fix (in Non-strictly-positive inductive types)": + [{"id": "Fix-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Fix-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_": + {"display": "Fix", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Strict Positivity", + "Non-strictly-positive inductive types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Fin'.zero": - [{"id": "Fin______zero", - "data": null, + "Fin'.zero (in Ineligible decreasing parameters)": + [{"id": "Fin______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Fin______zero-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Fin'.succ": - [{"id": "Fin______zero", - "data": null, + "Fin'.succ (in Ineligible decreasing parameters)": + [{"id": "Fin______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Fin______succ-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Fin'": - [{"id": "Fin______zero", - "data": null, + "Fin' (in Ineligible decreasing parameters)": + [{"id": "Fin___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Fin___-_LPAR_in-Ineligible-decreasing-parameters_RPAR_": + {"display": "Fin'", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Explicit Structural Recursion", + "Ineligible decreasing parameters"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "FamilyBike": - [{"id": "ElectricVehicle", - "data": null, + "FamilyBike (in #print and Structure Types)": + [{"id": "FamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#FamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "FamilyBike", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], "ExtFun": [{"id": "ExtFun", - "data": null, + "data": + {"/The-Type-System/Quotients/#ExtFun": + {"display": "ExtFun", + "context": + ["The Lean Language Reference", + "The Type System", + "Quotients", + "Quotients and Function Extensionality"]}}, "address": "/The-Type-System/Quotients/"}], - "Exp.var": - [{"id": "Exp___app", - "data": null, + "Exp.var (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "Exp___var-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Exp___var-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "var", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Exp.size": - [{"id": "Exp___app", - "data": null, + "Exp.size (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "Exp___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Exp___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "Exp.size", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Exp.app": - [{"id": "Exp___app", - "data": null, + "Exp.app (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "Exp___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Exp___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "app", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Exp": - [{"id": "Exp___app", - "data": null, + "Exp (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "Exp-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Exp-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "Exp", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "EvenPrime.notOne": - [{"id": "EvenNumber", - "data": null, + "EvenPrime.notOne (in No structure subtyping)": + [{"id": "EvenPrime___notOne-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenPrime___notOne-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "notOne", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenPrime.isPrime": - [{"id": "EvenNumber", - "data": null, + "EvenPrime.isPrime (in No structure subtyping)": + [{"id": "EvenPrime___isPrime-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenPrime___isPrime-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "isPrime", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenPrime": - [{"id": "EvenNumber", - "data": null, + "EvenPrime (in No structure subtyping)": + [{"id": "EvenPrime-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenPrime-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "EvenPrime", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenOddList.nil": - [{"id": "EvenOddList___nil-next", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "EvenOddList___nil", - "data": null, + "EvenOddList.nil (in Recursor with parameters and indices)": + [{"id": + "EvenOddList___nil-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenOddList___nil-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Recursors", + "Recursor Types", + "Recursor with parameters and indices"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenOddList.cons": - [{"id": "EvenOddList___nil-next", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "EvenOddList___nil", - "data": null, + "EvenOddList.nil (in A type with parameter and index)": + [{"id": + "EvenOddList___nil-_LPAR_in-A-type-with-parameter-and-index_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenOddList___nil-_LPAR_in-A-type-with-parameter-and-index_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A type with parameter and index"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenOddList": - [{"id": "EvenOddList___nil-next", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "EvenOddList___nil", - "data": null, + "EvenOddList.cons (in Recursor with parameters and indices)": + [{"id": + "EvenOddList___cons-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenOddList___cons-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Recursors", + "Recursor Types", + "Recursor with parameters and indices"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenNumber.val": - [{"id": "EvenNumber", - "data": null, + "EvenOddList.cons (in A type with parameter and index)": + [{"id": + "EvenOddList___cons-_LPAR_in-A-type-with-parameter-and-index_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenOddList___cons-_LPAR_in-A-type-with-parameter-and-index_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A type with parameter and index"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenNumber.isEven": - [{"id": "EvenNumber", - "data": null, + "EvenOddList (in Recursor with parameters and indices)": + [{"id": "EvenOddList-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenOddList-_LPAR_in-Recursor-with-parameters-and-indices_RPAR_": + {"display": "EvenOddList", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Recursors", + "Recursor Types", + "Recursor with parameters and indices"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenNumber": - [{"id": "EvenNumber", - "data": null, + "EvenOddList (in A type with parameter and index)": + [{"id": "EvenOddList-_LPAR_in-A-type-with-parameter-and-index_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenOddList-_LPAR_in-A-type-with-parameter-and-index_RPAR_": + {"display": "EvenOddList", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "A type with parameter and index"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenList.nil": - [{"id": "EvenList___nil", - "data": null, + "EvenNumber.val (in No structure subtyping)": + [{"id": "EvenNumber___val-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenNumber___val-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenList.cons": - [{"id": "EvenList___nil", - "data": null, + "EvenNumber.isEven (in No structure subtyping)": + [{"id": "EvenNumber___isEven-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenNumber___isEven-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "isEven", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "EvenList": - [{"id": "EvenList___nil", - "data": null, + "EvenNumber (in No structure subtyping)": + [{"id": "EvenNumber-_LPAR_in-No-structure-subtyping_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenNumber-_LPAR_in-No-structure-subtyping_RPAR_": + {"display": "EvenNumber", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "No structure subtyping"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "EvenList.nil (in Mutually Defined Inductive Types)": + [{"id": "EvenList___nil-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenList___nil-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_": + {"display": "nil", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Mutually Defined Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], + "EvenList.cons (in Mutually Defined Inductive Types)": + [{"id": "EvenList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenList___cons-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_": + {"display": "cons", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Mutually Defined Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "EvenList (in Mutually Defined Inductive Types)": + [{"id": "EvenList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#EvenList-_LPAR_in-Mutually-Defined-Inductive-Types_RPAR_": + {"display": "EvenList", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Mutually Defined Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Even.zero (in Splitting Predicates)": + [{"id": "Even___zero-_LPAR_in-Splitting-Predicates_RPAR_", + "data": + {"/The--grind--tactic/Case-Analysis/#Even___zero-_LPAR_in-Splitting-Predicates_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Case Analysis", + "Selection Heuristics", + "Splitting Predicates"]}}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Even.zero (in Even and odd)": + [{"id": "Even___zero-_LPAR_in-Even-and-odd_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Even___zero-_LPAR_in-Even-and-odd_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Even and odd"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Even.zero (in Even Numbers)": + [{"id": "Even___zero-_LPAR_in-Even-Numbers_RPAR_", + "data": + {"/Introduction/#Even___zero-_LPAR_in-Even-Numbers_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Examples", + "Even Numbers"]}}, + "address": "/Introduction/"}], "Even.zero": - [{"id": "Even___zero", "data": null, "address": "/Introduction/"}, - {"id": "Even___zero-next-next-next", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Even___zero-next", "data": null, "address": "/Introduction/"}], - "Even.succ": - [{"id": "Even___zero-next-next-next", - "data": null, + [{"id": "Even___zero", + "data": + {"/Introduction/#Even___zero": + {"display": "zero", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Constant, Syntax, and Tactic References"]}}, + "address": "/Introduction/"}], + "Even.succ (in Even and odd)": + [{"id": "Even___succ-_LPAR_in-Even-and-odd_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Even___succ-_LPAR_in-Even-and-odd_RPAR_": + {"display": "succ", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Even and odd"]}}, "address": "/The-Type-System/Inductive-Types/"}], + "Even.step (in Splitting Predicates)": + [{"id": "Even___step-_LPAR_in-Splitting-Predicates_RPAR_", + "data": + {"/The--grind--tactic/Case-Analysis/#Even___step-_LPAR_in-Splitting-Predicates_RPAR_": + {"display": "step", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Case Analysis", + "Selection Heuristics", + "Splitting Predicates"]}}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Even.plusTwo (in Even Numbers)": + [{"id": "Even___plusTwo-_LPAR_in-Even-Numbers_RPAR_", + "data": + {"/Introduction/#Even___plusTwo-_LPAR_in-Even-Numbers_RPAR_": + {"display": "plusTwo", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Examples", + "Even Numbers"]}}, + "address": "/Introduction/"}], "Even.plusTwo": - [{"id": "Even___zero", "data": null, "address": "/Introduction/"}, - {"id": "Even___zero-next", "data": null, "address": "/Introduction/"}], - "Even.number": - [{"id": "Even___number", - "data": null, + [{"id": "Even___plusTwo", + "data": + {"/Introduction/#Even___plusTwo": + {"display": "plusTwo", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Constant, Syntax, and Tactic References"]}}, + "address": "/Introduction/"}], + "Even.number (in Defining Coercions)": + [{"id": "Even___number-_LPAR_in-Defining-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Even___number-_LPAR_in-Defining-Coercions_RPAR_": + {"display": "number", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Defining Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Even.isEven": - [{"id": "Even___number", - "data": null, + "Even.isEven (in Defining Coercions)": + [{"id": "Even___isEven-_LPAR_in-Defining-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Even___isEven-_LPAR_in-Defining-Coercions_RPAR_": + {"display": "isEven", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Defining Coercions"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Even.half": - [{"id": "Even", - "data": null, + "Even.half (in Default Instances)": + [{"id": "Even___half-_LPAR_in-Default-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#Even___half-_LPAR_in-Default-Instances_RPAR_": + {"display": "half", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Default Instances", + "Default Instances"]}}, + "address": "/Type-Classes/Instance-Declarations/"}], + "Even (in Splitting Predicates)": + [{"id": "Even-_LPAR_in-Splitting-Predicates_RPAR_", + "data": + {"/The--grind--tactic/Case-Analysis/#Even-_LPAR_in-Splitting-Predicates_RPAR_": + {"display": "Even", + "context": + ["The Lean Language Reference", + "The grind tactic", + "Case Analysis", + "Selection Heuristics", + "Splitting Predicates"]}}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Even (in Even and odd)": + [{"id": "Even-_LPAR_in-Even-and-odd_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Even-_LPAR_in-Even-and-odd_RPAR_": + {"display": "Even", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Recursors", + "Even and odd"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "Even (in Even Numbers)": + [{"id": "Even-_LPAR_in-Even-Numbers_RPAR_", + "data": + {"/Introduction/#Even-_LPAR_in-Even-Numbers_RPAR_": + {"display": "Even", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Examples", + "Even Numbers"]}}, + "address": "/Introduction/"}], + "Even (in Defining Coercions)": + [{"id": "Even-_LPAR_in-Defining-Coercions_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Even-_LPAR_in-Defining-Coercions_RPAR_": + {"display": "Even", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "Defining Coercions"]}}, + "address": "/Coercions/Coercing-Between-Types/"}], + "Even (in Default Instances)": + [{"id": "Even-_LPAR_in-Default-Instances_RPAR_", + "data": + {"/Type-Classes/Instance-Declarations/#Even-_LPAR_in-Default-Instances_RPAR_": + {"display": "Even", + "context": + ["The Lean Language Reference", + "Type Classes", + "Instance Declarations", + "Default Instances", + "Default Instances"]}}, "address": "/Type-Classes/Instance-Declarations/"}], "Even": [{"id": "Even", - "data": null, - "address": "/Type-Classes/Instance-Declarations/"}, - {"id": "Even___zero", "data": null, "address": "/Introduction/"}, - {"id": "Even___zero-next-next-next", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Even___number", - "data": null, - "address": "/Coercions/Coercing-Between-Types/"}, - {"id": "Even___zero-next", "data": null, "address": "/Introduction/"}], + "data": + {"/Introduction/#Even": + {"display": "Even", + "context": + ["The Lean Language Reference", + "Introduction", + "Typographical Conventions", + "Constant, Syntax, and Tactic References"]}}, + "address": "/Introduction/"}], "Eq.unique": [{"id": "Eq___unique", - "data": null, + "data": + {"/Basic-Propositions/Propositional-Equality/#Eq___unique": + {"display": "Eq.unique", + "context": + ["The Lean Language Reference", + "Basic Propositions", + "Propositional Equality", + "Uniqueness of Equality Proofs"]}}, "address": "/Basic-Propositions/Propositional-Equality/"}], - "Env.get": - [{"id": "Env", - "data": null, + "Env.get (in Coercing to Function Types)": + [{"id": "Env___get-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Env___get-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Env.get", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Env.extend": - [{"id": "Env", - "data": null, + "Env.extend (in Coercing to Function Types)": + [{"id": "Env___extend-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Env___extend-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Env.extend", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Env.empty": - [{"id": "Env", - "data": null, + "Env.empty (in Coercing to Function Types)": + [{"id": "Env___empty-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Env___empty-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Env.empty", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "Env": - [{"id": "Env", - "data": null, + "Env (in Coercing to Function Types)": + [{"id": "Env-_LPAR_in-Coercing-to-Function-Types_RPAR_", + "data": + {"/Coercions/Coercing-to-Function-Types/#Env-_LPAR_in-Coercing-to-Function-Types_RPAR_": + {"display": "Env", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing to Function Types", + "Coercing to Function Types"]}}, "address": "/Coercions/Coercing-to-Function-Types/"}], - "ElectricVehicle.batteries": - [{"id": "ElectricVehicle", - "data": null, + "ElectricVehicle.batteries (in #print and Structure Types)": + [{"id": + "ElectricVehicle___batteries-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ElectricVehicle___batteries-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "batteries", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ElectricVehicle": - [{"id": "ElectricVehicle", - "data": null, + "ElectricVehicle (in #print and Structure Types)": + [{"id": "ElectricVehicle-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ElectricVehicle-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "ElectricVehicle", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ElectricFamilyBike": - [{"id": "ElectricVehicle", - "data": null, + "ElectricFamilyBike (in #print and Structure Types)": + [{"id": "ElectricFamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ElectricFamilyBike-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "ElectricFamilyBike", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ElectricBike": - [{"id": "ElectricVehicle", - "data": null, + "ElectricBike (in #print and Structure Types)": + [{"id": "ElectricBike-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ElectricBike-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "ElectricBike", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either.right": - [{"id": "Either___right", - "data": null, + "Either.right (in Parameters before and after the colon)": + [{"id": + "Either___right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either___right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "right", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either.left": - [{"id": "Either___right", - "data": null, + "Either.left (in Parameters before and after the colon)": + [{"id": + "Either___left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either___left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "left", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either.inr": - [{"id": "Either___inl", - "data": null, + "Either.inr (in Universes, constructors, and parameters)": + [{"id": + "Either___inr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either___inr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_": + {"display": "inr", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Universe Levels", + "Universes, constructors, and parameters"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either.inl": - [{"id": "Either___inl", - "data": null, + "Either.inl (in Universes, constructors, and parameters)": + [{"id": + "Either___inl-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either___inl-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_": + {"display": "inl", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Universe Levels", + "Universes, constructors, and parameters"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either''.right": - [{"id": "Either_________right", - "data": null, + "Either''.right (in Parameters before and after the colon)": + [{"id": + "Either_________right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either_________right-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "right", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either''.left": - [{"id": "Either_________right", - "data": null, + "Either''.left (in Parameters before and after the colon)": + [{"id": + "Either_________left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either_________left-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "left", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either''": - [{"id": "Either_________right", - "data": null, + "Either'' (in Parameters before and after the colon)": + [{"id": + "Either______-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either______-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "Either''", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either'": - [{"id": "Either___", - "data": null, + "Either' (in Parameters before and after the colon)": + [{"id": "Either___-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either___-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "Either'", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Either": - [{"id": "Either___right", - "data": null, - "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Either___inl", - "data": null, + "Either (in Universes, constructors, and parameters)": + [{"id": + "Either-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_": + {"display": "Either", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Universe Levels", + "Universes, constructors, and parameters"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "DivBy3": - [{"id": "DivBy3", "data": null, "address": "/Basic-Types/Subtypes/"}], - "Dessert.cupcake": - [{"id": "Dessert___cupcake", - "data": null, + "Either (in Parameters before and after the colon)": + [{"id": "Either-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Either-_LPAR_in-Parameters-before-and-after-the-colon_RPAR_": + {"display": "Either", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Example Inductive Types", + "Parameters before and after the colon"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "DivBy3 (in Subtype Coercions)": + [{"id": "DivBy3-_LPAR_in-Subtype-Coercions_RPAR_", + "data": + {"/Basic-Types/Subtypes/#DivBy3-_LPAR_in-Subtype-Coercions_RPAR_": + {"display": "DivBy3", + "context": + ["The Lean Language Reference", + "Basic Types", + "Subtypes", + "Subtype Coercions"]}}, + "address": "/Basic-Types/Subtypes/"}], + "Dessert.cupcake (in Using in for Local Scopes)": + [{"id": "Dessert___cupcake-_LPAR_in-Using--in--for-Local-Scopes_RPAR_", + "data": + {"/Namespaces-and-Sections/#Dessert___cupcake-_LPAR_in-Using--in--for-Local-Scopes_RPAR_": + {"display": "Dessert.cupcake", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Section Scopes", + "Controlling Section Scopes", + "Using in for Local Scopes"]}}, "address": "/Namespaces-and-Sections/"}], - "Decision.yes": - [{"id": "Decision", - "data": null, + "Decision.yes (in CoeOut vs Coe instances)": + [{"id": "Decision___yes-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Decision___yes-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "yes", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Decision.ofBool": - [{"id": "Truthy___toBool", - "data": null, + "Decision.ofBool (in CoeOut vs Coe instances)": + [{"id": "Decision___ofBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Decision___ofBool-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "Decision.ofBool", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Decision.no": - [{"id": "Decision", - "data": null, + "Decision.no (in CoeOut vs Coe instances)": + [{"id": "Decision___no-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Decision___no-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "no", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Decision.maybe": - [{"id": "Decision", - "data": null, + "Decision.maybe (in CoeOut vs Coe instances)": + [{"id": "Decision___maybe-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Decision___maybe-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "maybe", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Decision": - [{"id": "Decision", - "data": null, + "Decision (in CoeOut vs Coe instances)": + [{"id": "Decision-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_", + "data": + {"/Coercions/Coercing-Between-Types/#Decision-_LPAR_in-CoeOut--vs--Coe--instances_RPAR_": + {"display": "Decision", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercing Between Types", + "CoeOut vs Coe instances"]}}, "address": "/Coercions/Coercing-Between-Types/"}], - "Decimal.toNat": - [{"id": "Decimal___toNat", "data": null, "address": "/Coercions/"}], - "Decimal.digits": - [{"id": "Decimal", "data": null, "address": "/Coercions/"}], - "Decimal": [{"id": "Decimal", "data": null, "address": "/Coercions/"}], - "DRTree": - [{"id": "DRTree", - "data": null, + "Decimal.toNat (in Defining Coercions: Decimal Numbers)": + [{"id": + "Decimal___toNat-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_", + "data": + {"/Coercions/#Decimal___toNat-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_": + {"display": "Decimal.toNat", + "context": + ["The Lean Language Reference", + "Coercions", + "Defining Coercions: Decimal Numbers"]}}, + "address": "/Coercions/"}], + "Decimal.digits (in Defining Coercions: Decimal Numbers)": + [{"id": + "Decimal___digits-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_", + "data": + {"/Coercions/#Decimal___digits-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_": + {"display": "digits", + "context": + ["The Lean Language Reference", + "Coercions", + "Defining Coercions: Decimal Numbers"]}}, + "address": "/Coercions/"}], + "Decimal (in Defining Coercions: Decimal Numbers)": + [{"id": "Decimal-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_", + "data": + {"/Coercions/#Decimal-_LPAR_in-Defining-Coercions___-Decimal-Numbers_RPAR_": + {"display": "Decimal", + "context": + ["The Lean Language Reference", + "Coercions", + "Defining Coercions: Decimal Numbers"]}}, + "address": "/Coercions/"}], + "DRTree (in Invalid Nested Inductive Types)": + [{"id": "DRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#DRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "DRTree", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "D.x": [{"id": "D___x", "data": null, "address": "/Terms/Identifiers/"}], - "CustomUnit.customUnit": - [{"id": "AlsoUnit", - "data": null, + "D.x (in Disambiguation via Typing)": + [{"id": "D___x-_LPAR_in-Disambiguation-via-Typing_RPAR_", + "data": + {"/Terms/Identifiers/#D___x-_LPAR_in-Disambiguation-via-Typing_RPAR_": + {"display": "D.x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Disambiguation via Typing"]}}, + "address": "/Terms/Identifiers/"}], + "CustomUnit.customUnit (in Definitional Equality of Unit-Like Types)": + [{"id": + "CustomUnit___customUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#CustomUnit___customUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "customUnit", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "CustomUnit": - [{"id": "AlsoUnit", - "data": null, + "CustomUnit (in Definitional Equality of Unit-Like Types)": + [{"id": + "CustomUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#CustomUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "CustomUnit", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "ColdDrink.water": - [{"id": "ColdDrink", - "data": null, + "Credential.pin (in Missing resulting type after constructor parameter)": + [{"id": + "Credential___pin-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___pin-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "pin", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___pin-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "pin", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}, + {"id": + "Credential___pin-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___pin-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "pin", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___pin-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "pin", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}], + "Credential.password (in Missing resulting type after constructor parameter)": + [{"id": + "Credential___password-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___password-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "password", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___password-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "password", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}, + {"id": + "Credential___password-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___password-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "password", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential___password-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "password", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}], + "Credential (in Missing resulting type after constructor parameter)": + [{"id": + "Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next-next": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}, + {"id": + "Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next-next": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}, + {"id": + "Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next", + "data": + {"/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next-next": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_-next": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}, + "/Error-Explanations/lean___ctorResultingTypeMismatch/#Credential-_LPAR_in-Missing-resulting-type-after-constructor-parameter_RPAR_": + {"display": "Credential", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.ctorResultingTypeMismatch", + "Examples", + "Missing resulting type after constructor parameter"]}}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}], + "Color.rgb (in Missing namespace)": + [{"id": "Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "Color___rgb-_LPAR_in-Missing-namespace_RPAR_", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___rgb-_LPAR_in-Missing-namespace_RPAR_": + {"display": "rgb", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "Color.grayscale (in Missing namespace)": + [{"id": "Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "Color___grayscale-_LPAR_in-Missing-namespace_RPAR_", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color___grayscale-_LPAR_in-Missing-namespace_RPAR_": + {"display": "grayscale", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "Color (in Missing namespace)": + [{"id": "Color-_LPAR_in-Missing-namespace_RPAR_", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "Color-_LPAR_in-Missing-namespace_RPAR_-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": "Color-_LPAR_in-Missing-namespace_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_-next-next": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_-next": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}, + "/Error-Explanations/lean___unknownIdentifier/#Color-_LPAR_in-Missing-namespace_RPAR_": + {"display": "Color", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Missing namespace"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "ColdDrink.water (in Current Namespace)": + [{"id": "ColdDrink___water-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#ColdDrink___water-_LPAR_in-Current-Namespace_RPAR_": + {"display": "water", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "ColdDrink.toString": - [{"id": "ColdDrink___toString", - "data": null, + "ColdDrink.toString (in Current Namespace)": + [{"id": "ColdDrink___toString-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#ColdDrink___toString-_LPAR_in-Current-Namespace_RPAR_": + {"display": "_root_.ColdDrink.toString", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "ColdDrink.juice": - [{"id": "ColdDrink", - "data": null, + "ColdDrink.juice (in Current Namespace)": + [{"id": "ColdDrink___juice-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#ColdDrink___juice-_LPAR_in-Current-Namespace_RPAR_": + {"display": "juice", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "ColdDrink": - [{"id": "ColdDrink", - "data": null, + "ColdDrink (in Current Namespace)": + [{"id": "ColdDrink-_LPAR_in-Current-Namespace_RPAR_", + "data": + {"/Namespaces-and-Sections/#ColdDrink-_LPAR_in-Current-Namespace_RPAR_": + {"display": "ColdDrink", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Current Namespace"]}}, "address": "/Namespaces-and-Sections/"}], - "Codec.type": - [{"id": "Codec___encode", - "data": null, + "Codec.type (in Universe level expressions)": + [{"id": "Codec___type-_LPAR_in-Universe-level-expressions_RPAR_", + "data": + {"/The-Type-System/Universes/#Codec___type-_LPAR_in-Universe-level-expressions_RPAR_": + {"display": "type", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe level expressions"]}}, "address": "/The-Type-System/Universes/"}], - "Codec.encode": - [{"id": "Codec___encode", - "data": null, + "Codec.encode (in Universe level expressions)": + [{"id": "Codec___encode-_LPAR_in-Universe-level-expressions_RPAR_", + "data": + {"/The-Type-System/Universes/#Codec___encode-_LPAR_in-Universe-level-expressions_RPAR_": + {"display": "encode", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe level expressions"]}}, "address": "/The-Type-System/Universes/"}], - "Codec.decode": - [{"id": "Codec___encode", - "data": null, + "Codec.decode (in Universe level expressions)": + [{"id": "Codec___decode-_LPAR_in-Universe-level-expressions_RPAR_", + "data": + {"/The-Type-System/Universes/#Codec___decode-_LPAR_in-Universe-level-expressions_RPAR_": + {"display": "decode", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe level expressions"]}}, "address": "/The-Type-System/Universes/"}], - "Codec.char": - [{"id": "Codec___char", - "data": null, + "Codec.char (in Universe level expressions)": + [{"id": "Codec___char-_LPAR_in-Universe-level-expressions_RPAR_", + "data": + {"/The-Type-System/Universes/#Codec___char-_LPAR_in-Universe-level-expressions_RPAR_": + {"display": "Codec.char", + "context": + ["The Lean Language Reference", + "The Type System", + "Universes", + "Polymorphism", + "Universe level expressions"]}}, "address": "/The-Type-System/Universes/"}], - "Clause": - [{"id": "Clause", - "data": null, + "Clause (in Reducibility and Instance Synthesis)": + [{"id": "Clause-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Clause-_LPAR_in-Reducibility-and-Instance-Synthesis_RPAR_": + {"display": "Clause", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Controlling Reduction", + "Reducibility and Instance Synthesis"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Children": - [{"id": "Children", - "data": null, + "Children (in Invalid Nested Inductive Types)": + [{"id": "Children-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Children-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "Children", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "CanRepr.mk": - [{"id": "CanRepr", - "data": null, + "CanRepr.mk (in Universes, constructors, and parameters)": + [{"id": + "CanRepr___mk-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#CanRepr___mk-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Universe Levels", + "Universes, constructors, and parameters"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "CanRepr": - [{"id": "CanRepr", - "data": null, + "CanRepr (in Universes, constructors, and parameters)": + [{"id": + "CanRepr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#CanRepr-_LPAR_in-Universes___-constructors___-and-parameters_RPAR_": + {"display": "CanRepr", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Universe Levels", + "Universes, constructors, and parameters"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "C2.Semigroup.op_assoc": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Semigroup.op_assoc (in Class vs Structure Constructors)": + [{"id": + "C2___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Semigroup___op_assoc-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "op_assoc", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Semigroup": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Semigroup (in Class vs Structure Constructors)": + [{"id": "C2___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Semigroup-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Semigroup", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Monoid.ident_right": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Monoid.ident_right (in Class vs Structure Constructors)": + [{"id": + "C2___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident_right", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Monoid.ident_left": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Monoid.ident_left (in Class vs Structure Constructors)": + [{"id": + "C2___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident_left", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Monoid.ident": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Monoid.ident (in Class vs Structure Constructors)": + [{"id": + "C2___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Monoid": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Monoid (in Class vs Structure Constructors)": + [{"id": "C2___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Monoid", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Magma.op": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Magma.op (in Class vs Structure Constructors)": + [{"id": "C2___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Magma___op-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "op", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C2.Magma": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C2.Magma (in Class vs Structure Constructors)": + [{"id": "C2___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C2___Magma-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Magma", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C1.Monoid.ident_right": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C1.Monoid.ident_right (in Class vs Structure Constructors)": + [{"id": + "C1___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C1___Monoid___ident_right-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident_right", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C1.Monoid.ident_left": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C1.Monoid.ident_left (in Class vs Structure Constructors)": + [{"id": + "C1___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C1___Monoid___ident_left-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident_left", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C1.Monoid.ident": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C1.Monoid.ident (in Class vs Structure Constructors)": + [{"id": + "C1___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C1___Monoid___ident-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "ident", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C1.Monoid": - [{"id": "C1___Monoid___ident_right", - "data": null, + "C1.Monoid (in Class vs Structure Constructors)": + [{"id": "C1___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#C1___Monoid-_LPAR_in-Class-vs-Structure-Constructors_RPAR_": + {"display": "Monoid", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class vs Structure Constructors"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "C.x": [{"id": "D___x", "data": null, "address": "/Terms/Identifiers/"}], - "C.a6": - [{"id": "A___B___C___a3", - "data": null, + "C.x (in Disambiguation via Typing)": + [{"id": "C___x-_LPAR_in-Disambiguation-via-Typing_RPAR_", + "data": + {"/Terms/Identifiers/#C___x-_LPAR_in-Disambiguation-via-Typing_RPAR_": + {"display": "C.x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Disambiguation via Typing"]}}, + "address": "/Terms/Identifiers/"}], + "C.a6 (in Opening Nested Namespaces)": + [{"id": "C___a6-_LPAR_in-Opening-Nested-Namespaces_RPAR_", + "data": + {"/Namespaces-and-Sections/#C___a6-_LPAR_in-Opening-Nested-Namespaces_RPAR_": + {"display": "a6", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Nested Namespaces"]}}, "address": "/Namespaces-and-Sections/"}], - "Book.title": - [{"id": "AcademicWork___author", - "data": null, + "Book.title (in Structure type inheritance with overlapping fields)": + [{"id": + "Book___title-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Book___title-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "title", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Book.author": - [{"id": "AcademicWork___author", - "data": null, + "Book.author (in Structure type inheritance with overlapping fields)": + [{"id": + "Book___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Book___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "author", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Book": - [{"id": "AcademicWork___author", - "data": null, + "Book (in Structure type inheritance with overlapping fields)": + [{"id": + "Book-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Book-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "Book", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Binding": - [{"id": "Tm", - "data": null, + "Binding (in Mutual strict positivity)": + [{"id": "Binding-_LPAR_in-Mutual-strict-positivity_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Binding-_LPAR_in-Mutual-strict-positivity_RPAR_": + {"display": "Binding", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Requirements", + "Positivity", + "Mutual strict positivity"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Bin.zero": - [{"id": "Bin___toString", "data": null, "address": "/Coercions/"}], - "Bin.toString": - [{"id": "Bin___toString", "data": null, "address": "/Coercions/"}], - "Bin.succ": - [{"id": "Bin___succ", "data": null, "address": "/Coercions/"}], - "Bin.one": - [{"id": "Bin___toString", "data": null, "address": "/Coercions/"}], - "Bin.ofNat": - [{"id": "Bin___succ", "data": null, "address": "/Coercions/"}], - "Bin.done": - [{"id": "Bin___toString", "data": null, "address": "/Coercions/"}], - "Bin": [{"id": "Bin___toString", "data": null, "address": "/Coercions/"}], - "Bicycle": - [{"id": "ElectricVehicle", - "data": null, + "Bin.zero (in Coercions and OfNat)": + [{"id": "Bin___zero-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin___zero-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "zero", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bin.toString (in Coercions and OfNat)": + [{"id": "Bin___toString-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin___toString-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "Bin.toString", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bin.succ (in Coercions and OfNat)": + [{"id": "Bin___succ-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin___succ-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "Bin.succ", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bin.one (in Coercions and OfNat)": + [{"id": "Bin___one-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin___one-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "one", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bin.ofNat (in Coercions and OfNat)": + [{"id": "Bin___ofNat-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin___ofNat-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "Bin.ofNat", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bin.done (in Coercions and OfNat)": + [{"id": "Bin___done-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin___done-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "done", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bin (in Coercions and OfNat)": + [{"id": "Bin-_LPAR_in-Coercions-and--OfNat_RPAR_", + "data": + {"/Coercions/#Bin-_LPAR_in-Coercions-and--OfNat_RPAR_": + {"display": "Bin", + "context": + ["The Lean Language Reference", + "Coercions", + "Coercions and OfNat"]}}, + "address": "/Coercions/"}], + "Bicycle (in #print and Structure Types)": + [{"id": "Bicycle-_LPAR_in-___print--and-Structure-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Bicycle-_LPAR_in-___print--and-Structure-Types_RPAR_": + {"display": "Bicycle", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "#print and Structure Types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "BalancedTree.rbranch": - [{"id": "BalancedTree___rbranch", - "data": null, + "BalancedTree.rbranch (in Type Refinement)": + [{"id": "BalancedTree___rbranch-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___rbranch-_LPAR_in-Type-Refinement_RPAR_": + {"display": "rbranch", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "BalancedTree.lbranch": - [{"id": "BalancedTree___rbranch", - "data": null, + "BalancedTree.lbranch (in Type Refinement)": + [{"id": "BalancedTree___lbranch-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___lbranch-_LPAR_in-Type-Refinement_RPAR_": + {"display": "lbranch", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "BalancedTree.isPerfectlyBalanced": - [{"id": "BalancedTree___isPerfectlyBalanced", - "data": null, + "BalancedTree.isPerfectlyBalanced (in Type Refinement)": + [{"id": + "BalancedTree___isPerfectlyBalanced-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___isPerfectlyBalanced-_LPAR_in-Type-Refinement_RPAR_": + {"display": "BalancedTree.isPerfectlyBalanced", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "BalancedTree.filledWith": - [{"id": "BalancedTree___filledWith-next", - "data": null, + "BalancedTree.filledWith (in Type Refinement)": + [{"id": "BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_-next": + {"display": "BalancedTree.filledWith", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}, + "/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_": + {"display": "BalancedTree.filledWith", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}, - {"id": "BalancedTree___filledWith", - "data": null, + {"id": "BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_-next", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_-next": + {"display": "BalancedTree.filledWith", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}, + "/Terms/Pattern-Matching/#BalancedTree___filledWith-_LPAR_in-Type-Refinement_RPAR_": + {"display": "BalancedTree.filledWith", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "BalancedTree.empty": - [{"id": "BalancedTree___rbranch", - "data": null, + "BalancedTree.empty (in Type Refinement)": + [{"id": "BalancedTree___empty-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___empty-_LPAR_in-Type-Refinement_RPAR_": + {"display": "empty", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "BalancedTree.branch": - [{"id": "BalancedTree___rbranch", - "data": null, + "BalancedTree.branch (in Type Refinement)": + [{"id": "BalancedTree___branch-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree___branch-_LPAR_in-Type-Refinement_RPAR_": + {"display": "branch", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "BalancedTree": - [{"id": "BalancedTree___rbranch", - "data": null, + "BalancedTree (in Type Refinement)": + [{"id": "BalancedTree-_LPAR_in-Type-Refinement_RPAR_", + "data": + {"/Terms/Pattern-Matching/#BalancedTree-_LPAR_in-Type-Refinement_RPAR_": + {"display": "BalancedTree", + "context": + ["The Lean Language Reference", + "Terms", + "Pattern Matching", + "Types", + "Type Refinement"]}}, "address": "/Terms/Pattern-Matching/"}], - "Bad": - [{"id": "Bad", - "data": null, + "Bad (in Non-strictly-positive inductive types)": + [{"id": "Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_-next", + "data": + {"/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_-next": + {"display": "Bad", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Strict Positivity", + "Non-strictly-positive inductive types"]}, + "/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_": + {"display": "Bad", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Strict Positivity", + "Non-strictly-positive inductive types"]}}, "address": "/The-Type-System/Inductive-Types/"}, - {"id": "Bad-next", - "data": null, + {"id": "Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_-next": + {"display": "Bad", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Strict Positivity", + "Non-strictly-positive inductive types"]}, + "/The-Type-System/Inductive-Types/#Bad-_LPAR_in-Non-strictly-positive-inductive-types_RPAR_": + {"display": "Bad", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Logical Model", + "Well-Formedness Requirements", + "Strict Positivity", + "Non-strictly-positive inductive types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "B.y": [{"id": "B", "data": null, "address": "/Terms/Identifiers/"}], - "B.x": - [{"id": "A___x-next-next", - "data": null, - "address": "/Terms/Identifiers/"}, - {"id": "A___x-next", "data": null, "address": "/Terms/Identifiers/"}], - "B.a4": - [{"id": "A___B___C___a3", - "data": null, + "BRTree (in Invalid Nested Inductive Types)": + [{"id": "BRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#BRTree-_LPAR_in-Invalid-Nested-Inductive-Types_RPAR_": + {"display": "BRTree", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Mutual Inductive Types", + "Nested Inductive Types", + "Invalid Nested Inductive Types"]}}, + "address": "/The-Type-System/Inductive-Types/"}], + "B.y (in Longer Identifier Prefixes Take Precedence)": + [{"id": "B___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#B___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Identifier Prefixes Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "B.x (in Current Namespace Contents Take Precedence Over Opened Namespaces)": + [{"id": + "B___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_", + "data": + {"/Terms/Identifiers/#B___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Current Namespace Contents Take Precedence Over Opened Namespaces"]}}, + "address": "/Terms/Identifiers/"}], + "B.x (in Ambiguous Identifiers)": + [{"id": "B___x-_LPAR_in-Ambiguous-Identifiers_RPAR_", + "data": + {"/Terms/Identifiers/#B___x-_LPAR_in-Ambiguous-Identifiers_RPAR_": + {"display": "B.x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Ambiguous Identifiers"]}}, + "address": "/Terms/Identifiers/"}], + "B.a4 (in Opening Nested Namespaces)": + [{"id": "B___a4-_LPAR_in-Opening-Nested-Namespaces_RPAR_", + "data": + {"/Namespaces-and-Sections/#B___a4-_LPAR_in-Opening-Nested-Namespaces_RPAR_": + {"display": "a4", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Nested Namespaces"]}}, "address": "/Namespaces-and-Sections/"}], - "B.C.a5": - [{"id": "A___B___C___a3", - "data": null, + "B.C.a5 (in Opening Nested Namespaces)": + [{"id": "B___C___a5-_LPAR_in-Opening-Nested-Namespaces_RPAR_", + "data": + {"/Namespaces-and-Sections/#B___C___a5-_LPAR_in-Opening-Nested-Namespaces_RPAR_": + {"display": "a5", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Nested Namespaces"]}}, "address": "/Namespaces-and-Sections/"}], - "B": - [{"id": "B-next", - "data": null, - "address": "/Type-Classes/Deriving-Instances/"}, - {"id": "B", "data": null, "address": "/Terms/Identifiers/"}], - "AugmentedIntList.list": - [{"id": "AugmentedIntList___list", - "data": null, + "B (in Longer Identifier Prefixes Take Precedence)": + [{"id": "B-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#B-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_": + {"display": "B", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Identifier Prefixes Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "B (in Deriving Multiple Classes)": + [{"id": "B-_LPAR_in-Deriving-Multiple-Classes_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#B-_LPAR_in-Deriving-Multiple-Classes_RPAR_": + {"display": "B", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Multiple Classes"]}}, + "address": "/Type-Classes/Deriving-Instances/"}], + "AugmentedIntList.list (in Patterns and default values)": + [{"id": + "AugmentedIntList___list-_LPAR_in-Patterns-and-default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntList___list-_LPAR_in-Patterns-and-default-values_RPAR_": + {"display": "list", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Patterns and default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AugmentedIntList.isEmpty": - [{"id": "AugmentedIntList___isEmpty", - "data": null, + "AugmentedIntList.isEmpty (in Patterns and default values)": + [{"id": + "AugmentedIntList___isEmpty-_LPAR_in-Patterns-and-default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntList___isEmpty-_LPAR_in-Patterns-and-default-values_RPAR_": + {"display": "AugmentedIntList.isEmpty", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Patterns and default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AugmentedIntList.augmentation": - [{"id": "AugmentedIntList___list", - "data": null, + "AugmentedIntList.augmentation (in Patterns and default values)": + [{"id": + "AugmentedIntList___augmentation-_LPAR_in-Patterns-and-default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntList___augmentation-_LPAR_in-Patterns-and-default-values_RPAR_": + {"display": "augmentation", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Patterns and default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AugmentedIntList": - [{"id": "AugmentedIntList___list", - "data": null, + "AugmentedIntList (in Patterns and default values)": + [{"id": "AugmentedIntList-_LPAR_in-Patterns-and-default-values_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntList-_LPAR_in-Patterns-and-default-values_RPAR_": + {"display": "AugmentedIntList", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Patterns and default values"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AugmentedIntArray.augmentation": - [{"id": "two______", - "data": null, + "AugmentedIntArray.augmentation (in Updating arrays)": + [{"id": "AugmentedIntArray___augmentation-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntArray___augmentation-_LPAR_in-Updating-arrays_RPAR_": + {"display": "augmentation", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AugmentedIntArray.array": - [{"id": "two______", - "data": null, + "AugmentedIntArray.array (in Updating arrays)": + [{"id": "AugmentedIntArray___array-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntArray___array-_LPAR_in-Updating-arrays_RPAR_": + {"display": "array", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AugmentedIntArray": - [{"id": "two______", - "data": null, + "AugmentedIntArray (in Updating arrays)": + [{"id": "AugmentedIntArray-_LPAR_in-Updating-arrays_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AugmentedIntArray-_LPAR_in-Updating-arrays_RPAR_": + {"display": "AugmentedIntArray", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Constructors", + "Updating arrays"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AtLeastOne.mk": - [{"id": "AtLeastOne", - "data": null, + "AtLeastOne.mk (in Anonymous constructors)": + [{"id": "AtLeastOne___mk-_LPAR_in-Anonymous-constructors_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AtLeastOne___mk-_LPAR_in-Anonymous-constructors_RPAR_": + {"display": "mk", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Anonymous Constructor Syntax", + "Anonymous constructors"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AtLeastOne.head'": - [{"id": "oneTwoThree___", - "data": null, + "AtLeastOne.head' (in Anonymous constructors)": + [{"id": "AtLeastOne___head___-_LPAR_in-Anonymous-constructors_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AtLeastOne___head___-_LPAR_in-Anonymous-constructors_RPAR_": + {"display": "AtLeastOne.head'", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Anonymous Constructor Syntax", + "Anonymous constructors"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AtLeastOne.head": - [{"id": "AtLeastOne___head", - "data": null, + "AtLeastOne.head (in Anonymous constructors)": + [{"id": "AtLeastOne___head-_LPAR_in-Anonymous-constructors_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AtLeastOne___head-_LPAR_in-Anonymous-constructors_RPAR_": + {"display": "AtLeastOne.head", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Anonymous Constructor Syntax", + "Anonymous constructors"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AtLeastOne": - [{"id": "AtLeastOne", - "data": null, + "AtLeastOne (in Anonymous constructors)": + [{"id": "AtLeastOne-_LPAR_in-Anonymous-constructors_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AtLeastOne-_LPAR_in-Anonymous-constructors_RPAR_": + {"display": "AtLeastOne", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Inductive Type Declarations", + "Anonymous Constructor Syntax", + "Anonymous constructors"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AtLeast.val_gt_i": - [{"id": "AtLeast___val", - "data": null, + "AtLeast.val_gt_i (in Iterated Automatic Implicit Parameters)": + [{"id": + "AtLeast___val_gt_i-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#AtLeast___val_gt_i-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_": + {"display": "val_gt_i", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Iterated Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "AtLeast.val": - [{"id": "AtLeast___val", - "data": null, + "AtLeast.val (in Iterated Automatic Implicit Parameters)": + [{"id": + "AtLeast___val-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#AtLeast___val-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_": + {"display": "val", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Iterated Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "AtLeast.add": - [{"id": "AtLeast___add", - "data": null, + "AtLeast.add (in Iterated Automatic Implicit Parameters)": + [{"id": + "AtLeast___add-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#AtLeast___add-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_": + {"display": "AtLeast.add", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Iterated Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "AtLeast": - [{"id": "AtLeast___val", - "data": null, + "AtLeast (in Iterated Automatic Implicit Parameters)": + [{"id": "AtLeast-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#AtLeast-_LPAR_in-Iterated-Automatic-Implicit-Parameters_RPAR_": + {"display": "AtLeast", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Iterated Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "ArraySized.size_eq_length": - [{"id": "ArraySized___array", - "data": null, + "ArraySized.size_eq_length (in Dependent projection types)": + [{"id": + "ArraySized___size_eq_length-_LPAR_in-Dependent-projection-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ArraySized___size_eq_length-_LPAR_in-Dependent-projection-types_RPAR_": + {"display": "size_eq_length", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Dependent projection types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ArraySized.array": - [{"id": "ArraySized___array", - "data": null, + "ArraySized.array (in Dependent projection types)": + [{"id": "ArraySized___array-_LPAR_in-Dependent-projection-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ArraySized___array-_LPAR_in-Dependent-projection-types_RPAR_": + {"display": "array", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Dependent projection types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "ArraySized": - [{"id": "ArraySized___array", - "data": null, + "ArraySized (in Dependent projection types)": + [{"id": "ArraySized-_LPAR_in-Dependent-projection-types_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#ArraySized-_LPAR_in-Dependent-projection-types_RPAR_": + {"display": "ArraySized", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Fields", + "Dependent projection types"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "Array.find": - [{"id": "Array___find", - "data": null, + "Array.find (in Tail Recursion with Branching)": + [{"id": "Array___find-_LPAR_in-Tail-Recursion-with-Branching_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#Array___find-_LPAR_in-Tail-Recursion-with-Branching_RPAR_": + {"display": "Array.find", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Partial Fixpoint Recursion", + "Tail-Recursive Functions", + "Tail Recursion with Branching"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "App.size": - [{"id": "Exp___app", - "data": null, + "App.size (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "App___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#App___size-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "App.size", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "App.numArgs": - [{"id": "App___numArgs", - "data": null, + "App.numArgs (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "App___numArgs-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#App___numArgs-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "App.numArgs", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "App.fn": - [{"id": "Exp___app", - "data": null, + "App.fn (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "App___fn-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#App___fn-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "fn", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "App.app": - [{"id": "Exp___app", - "data": null, + "App.app (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "App___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#App___app-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "app", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "App": - [{"id": "Exp___app", - "data": null, + "App (in Mutual Structural Recursion Over Mutual Types)": + [{"id": + "App-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_", + "data": + {"/Definitions/Recursive-Definitions/#App-_LPAR_in-Mutual-Structural-Recursion-Over-Mutual-Types_RPAR_": + {"display": "App", + "context": + ["The Lean Language Reference", + "Definitions", + "Recursive Definitions", + "Structural Recursion", + "Mutual Structural Recursion", + "Mutual Structural Recursion Over Mutual Types"]}}, "address": "/Definitions/Recursive-Definitions/"}], - "Answer.yes": - [{"id": "Answer", - "data": null, + "Answer.yes (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)": + [{"id": + "Answer___yes-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#Answer___yes-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "yes", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "Answer.no": - [{"id": "Answer", - "data": null, + "Answer.no (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)": + [{"id": + "Answer___no-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#Answer___no-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "no", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "Answer.maybe": - [{"id": "Answer", - "data": null, + "Answer.maybe (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)": + [{"id": + "Answer___maybe-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#Answer___maybe-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "maybe", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "Answer": - [{"id": "Answer", - "data": null, + "Answer (in Relaxed vs Non-Relaxed Automatic Implicit Parameters)": + [{"id": + "Answer-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_", + "data": + {"/Definitions/Headers-and-Signatures/#Answer-_LPAR_in-Relaxed-vs-Non-Relaxed-Automatic-Implicit-Parameters_RPAR_": + {"display": "Answer", + "context": + ["The Lean Language Reference", + "Definitions", + "Headers and Signatures", + "Automatic Implicit Parameters", + "Relaxed vs Non-Relaxed Automatic Implicit Parameters"]}}, "address": "/Definitions/Headers-and-Signatures/"}], - "AlsoUnit": - [{"id": "AlsoUnit", - "data": null, + "AlsoUnit (in Definitional Equality of Unit-Like Types)": + [{"id": + "AlsoUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_", + "data": + {"/Basic-Types/The-Unit-Type/#AlsoUnit-_LPAR_in-Definitional-Equality-of-Unit-Like-Types_RPAR_": + {"display": "AlsoUnit", + "context": + ["The Lean Language Reference", + "Basic Types", + "The Unit Type", + "Definitional Equality", + "Definitional Equality of Unit-Like Types"]}}, "address": "/Basic-Types/The-Unit-Type/"}], - "AllNonZero": - [{"id": "AllNonZero-next", - "data": null, + "AllNonZero (in Non-Dependent Functions Don't Bind Variables)": + [{"id": + "AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_", + "data": + {"/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_-next": + {"display": "AllNonZero", + "context": + ["The Lean Language Reference", + "The Type System", + "Functions", + "Non-Dependent Functions Don't Bind Variables"]}, + "/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_": + {"display": "AllNonZero", + "context": + ["The Lean Language Reference", + "The Type System", + "Functions", + "Non-Dependent Functions Don't Bind Variables"]}}, "address": "/The-Type-System/Functions/"}, - {"id": "AllNonZero", - "data": null, + {"id": + "AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_-next", + "data": + {"/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_-next": + {"display": "AllNonZero", + "context": + ["The Lean Language Reference", + "The Type System", + "Functions", + "Non-Dependent Functions Don't Bind Variables"]}, + "/The-Type-System/Functions/#AllNonZero-_LPAR_in-Non-Dependent-Functions-Don___t-Bind-Variables_RPAR_": + {"display": "AllNonZero", + "context": + ["The Lean Language Reference", + "The Type System", + "Functions", + "Non-Dependent Functions Don't Bind Variables"]}}, "address": "/The-Type-System/Functions/"}], - "AddMul'": - [{"id": "AddMul", - "data": null, + "AddMul' (in Class Abbreviations)": + [{"id": "AddMul___-_LPAR_in-Class-Abbreviations_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#AddMul___-_LPAR_in-Class-Abbreviations_RPAR_": + {"display": "AddMul'", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class Abbreviations", + "Class Abbreviations"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "AddMul": - [{"id": "AddMul", - "data": null, + "AddMul (in Class Abbreviations)": + [{"id": "AddMul-_LPAR_in-Class-Abbreviations_RPAR_", + "data": + {"/Type-Classes/Class-Declarations/#AddMul-_LPAR_in-Class-Abbreviations_RPAR_": + {"display": "AddMul", + "context": + ["The Lean Language Reference", + "Type Classes", + "Class Declarations", + "Class Abbreviations", + "Class Abbreviations"]}}, "address": "/Type-Classes/Class-Declarations/"}], - "AcademicWork.discipline": - [{"id": "AcademicWork___author", - "data": null, + "AddExpr.reprPrec (in Infix Syntax)": + [{"id": "AddExpr___reprPrec-_LPAR_in-Infix-Syntax_RPAR_", + "data": + {"/Interacting-with-Lean/#AddExpr___reprPrec-_LPAR_in-Infix-Syntax_RPAR_": + {"display": "AddExpr.reprPrec", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Infix Syntax"]}}, + "address": "/Interacting-with-Lean/"}], + "AddExpr.nat (in Infix Syntax)": + [{"id": "AddExpr___nat-_LPAR_in-Infix-Syntax_RPAR_", + "data": + {"/Interacting-with-Lean/#AddExpr___nat-_LPAR_in-Infix-Syntax_RPAR_": + {"display": "nat", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Infix Syntax"]}}, + "address": "/Interacting-with-Lean/"}], + "AddExpr.add (in Infix Syntax)": + [{"id": "AddExpr___add-_LPAR_in-Infix-Syntax_RPAR_", + "data": + {"/Interacting-with-Lean/#AddExpr___add-_LPAR_in-Infix-Syntax_RPAR_": + {"display": "add", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Infix Syntax"]}}, + "address": "/Interacting-with-Lean/"}], + "AddExpr (in Infix Syntax)": + [{"id": "AddExpr-_LPAR_in-Infix-Syntax_RPAR_", + "data": + {"/Interacting-with-Lean/#AddExpr-_LPAR_in-Infix-Syntax_RPAR_": + {"display": "AddExpr", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "How To Write a Repr Instance", + "Infix Syntax"]}}, + "address": "/Interacting-with-Lean/"}], + "AcademicWork.discipline (in Structure type inheritance with overlapping fields)": + [{"id": + "AcademicWork___discipline-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AcademicWork___discipline-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "discipline", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AcademicWork.author": - [{"id": "AcademicWork___author", - "data": null, + "AcademicWork.author (in Structure type inheritance with overlapping fields)": + [{"id": + "AcademicWork___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AcademicWork___author-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "author", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "AcademicWork": - [{"id": "AcademicWork___author", - "data": null, + "AcademicWork (in Structure type inheritance with overlapping fields)": + [{"id": + "AcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_", + "data": + {"/The-Type-System/Inductive-Types/#AcademicWork-_LPAR_in-Structure-type-inheritance-with-overlapping-fields_RPAR_": + {"display": "AcademicWork", + "context": + ["The Lean Language Reference", + "The Type System", + "Inductive Types", + "Structure Declarations", + "Structure Inheritance", + "Structure type inheritance with overlapping fields"]}}, "address": "/The-Type-System/Inductive-Types/"}], - "A.y": [{"id": "B", "data": null, "address": "/Terms/Identifiers/"}], - "A.x": - [{"id": "A___x-next-next", - "data": null, - "address": "/Terms/Identifiers/"}, - {"id": "A___x-next", "data": null, "address": "/Terms/Identifiers/"}, - {"id": "A___x", "data": null, "address": "/Terms/Identifiers/"}], - "A.a1": - [{"id": "A___B___C___a3", - "data": null, + "ABC.toNat (in Atomic Types and Repr)": + [{"id": "ABC___toNat-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#ABC___toNat-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "ABC.toNat", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "ABC.c (in Atomic Types and Repr)": + [{"id": "ABC___c-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#ABC___c-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "c", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "ABC.b (in Atomic Types and Repr)": + [{"id": "ABC___b-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#ABC___b-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "b", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "ABC.a (in Atomic Types and Repr)": + [{"id": "ABC___a-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#ABC___a-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "a", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "ABC (in Atomic Types and Repr)": + [{"id": "ABC-_LPAR_in-Atomic-Types-and--Repr_RPAR_", + "data": + {"/Interacting-with-Lean/#ABC-_LPAR_in-Atomic-Types-and--Repr_RPAR_": + {"display": "ABC", + "context": + ["The Lean Language Reference", + "Interacting with Lean", + "Formatted Output", + "Repr", + "Atomic Types", + "Atomic Types and Repr"]}}, + "address": "/Interacting-with-Lean/"}], + "A.y (in Longer Identifier Prefixes Take Precedence)": + [{"id": "A___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#A___y-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_": + {"display": "y", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Identifier Prefixes Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "A.x (in Protected constant name without namespace prefix)": + [{"id": + "A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next-next": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}, + "/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}, + "/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": + "A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next-next": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}, + "/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}, + "/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}, + {"id": + "A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next", + "data": + {"/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next-next": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}, + "/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_-next": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}, + "/Error-Explanations/lean___unknownIdentifier/#A___x-_LPAR_in-Protected-constant-name-without-namespace-prefix_RPAR_": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Error Explanations", + "lean.unknownIdentifier", + "Examples", + "Protected constant name without namespace prefix"]}}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "A.x (in Longer Prefixes of Current Namespace Take Precedence)": + [{"id": + "A___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#A___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Prefixes of Current Namespace Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "A.x (in Current Namespace Contents Take Precedence Over Opened Namespaces)": + [{"id": + "A___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_", + "data": + {"/Terms/Identifiers/#A___x-_LPAR_in-Current-Namespace-Contents-Take-Precedence-Over-Opened-Namespaces_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Current Namespace Contents Take Precedence Over Opened Namespaces"]}}, + "address": "/Terms/Identifiers/"}], + "A.x (in Ambiguous Identifiers)": + [{"id": "A___x-_LPAR_in-Ambiguous-Identifiers_RPAR_", + "data": + {"/Terms/Identifiers/#A___x-_LPAR_in-Ambiguous-Identifiers_RPAR_": + {"display": "A.x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Ambiguous Identifiers"]}}, + "address": "/Terms/Identifiers/"}], + "A.a1 (in Opening Nested Namespaces)": + [{"id": "A___a1-_LPAR_in-Opening-Nested-Namespaces_RPAR_", + "data": + {"/Namespaces-and-Sections/#A___a1-_LPAR_in-Opening-Nested-Namespaces_RPAR_": + {"display": "a1", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Nested Namespaces"]}}, "address": "/Namespaces-and-Sections/"}], - "A.B.a2": - [{"id": "A___B___C___a3", - "data": null, + "A.B.a2 (in Opening Nested Namespaces)": + [{"id": "A___B___a2-_LPAR_in-Opening-Nested-Namespaces_RPAR_", + "data": + {"/Namespaces-and-Sections/#A___B___a2-_LPAR_in-Opening-Nested-Namespaces_RPAR_": + {"display": "a2", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Nested Namespaces"]}}, "address": "/Namespaces-and-Sections/"}], - "A.B.C.x": - [{"id": "A___x", "data": null, "address": "/Terms/Identifiers/"}], - "A.B.C.a3": - [{"id": "A___B___C___a3", - "data": null, + "A.B.C.x (in Longer Prefixes of Current Namespace Take Precedence)": + [{"id": + "A___B___C___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#A___B___C___x-_LPAR_in-Longer-Prefixes-of-Current-Namespace-Take-Precedence_RPAR_": + {"display": "x", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Prefixes of Current Namespace Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "A.B.C.a3 (in Opening Nested Namespaces)": + [{"id": "A___B___C___a3-_LPAR_in-Opening-Nested-Namespaces_RPAR_", + "data": + {"/Namespaces-and-Sections/#A___B___C___a3-_LPAR_in-Opening-Nested-Namespaces_RPAR_": + {"display": "a3", + "context": + ["The Lean Language Reference", + "Namespaces and Sections", + "Namespaces", + "Namespaces and Section Scopes", + "Opening Nested Namespaces"]}}, "address": "/Namespaces-and-Sections/"}], - "A": - [{"id": "B-next", - "data": null, - "address": "/Type-Classes/Deriving-Instances/"}, - {"id": "B", "data": null, "address": "/Terms/Identifiers/"}]}}, + "A (in Longer Identifier Prefixes Take Precedence)": + [{"id": "A-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_", + "data": + {"/Terms/Identifiers/#A-_LPAR_in-Longer-Identifier-Prefixes-Take-Precedence_RPAR_": + {"display": "A", + "context": + ["The Lean Language Reference", + "Terms", + "Identifiers", + "Longer Identifier Prefixes Take Precedence"]}}, + "address": "/Terms/Identifiers/"}], + "A (in Deriving Multiple Classes)": + [{"id": "A-_LPAR_in-Deriving-Multiple-Classes_RPAR_", + "data": + {"/Type-Classes/Deriving-Instances/#A-_LPAR_in-Deriving-Multiple-Classes_RPAR_": + {"display": "A", + "context": + ["The Lean Language Reference", + "Type Classes", + "Deriving Instances", + "Deriving Multiple Classes"]}}, + "address": "/Type-Classes/Deriving-Instances/"}]}}, "Verso.Genre.Manual.doc.tech": {"title": "Terminology", "description": "Terminology", @@ -10010,12 +24647,16 @@ "data": {"term": "well-founded relation"}, "address": "/Definitions/Recursive-Definitions/"}], "well founded recursion": - [{"id": "--tech-term-well-founded-recursion-next", + [{"id": "--tech-term-well-founded-recursion", "data": {"term": "well-founded recursion"}, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "--tech-term-well-founded-recursion", + "address": "/Elaboration-and-Compilation/"}, + {"id": "--tech-term-well-founded-recursion-next", "data": {"term": "well-founded recursion"}, - "address": "/Elaboration-and-Compilation/"}], + "address": "/Definitions/Recursive-Definitions/"}], + "upward propagation": + [{"id": "--tech-term-Upward-propagation", + "data": {"term": "Upward propagation"}, + "address": "/The--grind--tactic/Constraint-Propagation/"}], "universe polymorphism": [{"id": "--tech-term-universe-polymorphism", "data": {"term": "universe polymorphism"}, @@ -10044,6 +24685,10 @@ [{"id": "--tech-term-unexpanders", "data": {"term": "unexpanders"}, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}], + "unboxed": + [{"id": "--tech-term-Unboxed", + "data": {"term": "Unboxed"}, + "address": "/Run-Time-Code/Boxing/"}], "type constructor": [{"id": "--tech-term-type-constructors", "data": {"term": "type constructors"}, @@ -10278,6 +24923,10 @@ [{"id": "--tech-term-scientific-literals", "data": {"term": "scientific literals"}, "address": "/Terms/Literals/"}], + "round": + [{"id": "--tech-term-round", + "data": {"term": "round"}, + "address": "/The--grind--tactic/E___matching/"}], "root package": [{"id": "--tech-term-root-package", "data": {"term": "root package"}, @@ -10357,6 +25006,10 @@ [{"id": "--tech-term-raw-identifier", "data": {"term": "raw identifier"}, "address": "/Source-Files-and-Modules/"}], + "raw": + [{"id": "--tech-term-raw", + "data": {"term": "raw"}, + "address": "/Basic-Types/Maps-and-Sets/"}], "quotient type": [{"id": "--tech-term-Quotient-types", "data": {"term": "Quotient types"}, @@ -10369,6 +25022,10 @@ [{"id": "--tech-term-Quasiquotation", "data": {"term": "Quasiquotation"}, "address": "/Notations-and-Macros/Macros/"}], + "public scope": + [{"id": "--tech-term-public-scope", + "data": {"term": "public scope"}, + "address": "/The-Module-System/Visibility/"}], "protected": [{"id": "--tech-term-protected", "data": {"term": "protected"}, @@ -10401,6 +25058,10 @@ [{"id": "--tech-term-projection-function", "data": {"term": "projection function"}, "address": "/The-Type-System/Inductive-Types/"}], + "private scope": + [{"id": "--tech-term-private-scope", + "data": {"term": "private scope"}, + "address": "/The-Module-System/Visibility/"}], "private": [{"id": "--tech-term-private", "data": {"term": "private"}, @@ -10481,12 +25142,16 @@ "data": {"term": "package configuration"}, "address": "/Build-Tools-and-Distribution/Lake/"}], "package": - [{"id": "--tech-term-packages", + [{"id": "--tech-term-package", "data": {"term": "package"}, - "address": "/Source-Files-and-Modules/"}, - {"id": "--tech-term-package", + "address": "/Build-Tools-and-Distribution/Lake/"}, + {"id": "--tech-term-packages", "data": {"term": "package"}, - "address": "/Build-Tools-and-Distribution/Lake/"}], + "address": "/Source-Files-and-Modules/"}], + "owned": + [{"id": "--tech-term-owned", + "data": {"term": "owned"}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "output parameter": [{"id": "--tech-term-output-parameter", "data": {"term": "output parameter"}, @@ -10579,6 +25244,10 @@ [{"id": "--tech-term-mutual-block", "data": {"term": "mutual block"}, "address": "/Definitions/Recursive-Definitions/"}], + "multi pattern": + [{"id": "--tech-term-multi-pattern", + "data": {"term": "multi-pattern"}, + "address": "/The--grind--tactic/E___matching/"}], "motive": [{"id": "--tech-term-motive", "data": {"term": "motive"}, @@ -10620,6 +25289,10 @@ [{"id": "--tech-term-modifiers", "data": {"term": "modifiers"}, "address": "/Definitions/Modifiers/"}], + "model based theory combination": + [{"id": "--tech-term-model-based-theory-combination", + "data": {"term": "model-based theory combination"}, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], "mixfix": [{"id": "--tech-term-mixfix", "data": {"term": "mixfix"}, @@ -10628,6 +25301,10 @@ [{"id": "--tech-term-minor-premise", "data": {"term": "minor premise"}, "address": "/The-Type-System/Inductive-Types/"}], + "minimal": + [{"id": "--tech-term-minimal", + "data": {"term": "minimal"}, + "address": "/The--grind--tactic/E___matching/"}], "method": [{"id": "--tech-term-methods", "data": {"term": "methods"}, @@ -10655,6 +25332,10 @@ [{"id": "--tech-term-match-alternatives", "data": {"term": "match alternatives"}, "address": "/Terms/Pattern-Matching/"}], + "map": + [{"id": "--tech-term-map", + "data": {"term": "map"}, + "address": "/Basic-Types/Maps-and-Sets/"}], "manifest": [{"id": "--tech-term-manifest", "data": {"term": "manifest"}, @@ -10676,12 +25357,12 @@ "data": {"term": "macro expansion"}, "address": "/Notations-and-Macros/Macros/"}], "macro": - [{"id": "--tech-term-macro", + [{"id": "--tech-term-Macros", "data": {"term": "Macros"}, - "address": "/Notations-and-Macros/Defining-New-Syntax/"}, - {"id": "--tech-term-Macros", + "address": "/Notations-and-Macros/Macros/"}, + {"id": "--tech-term-macro", "data": {"term": "Macros"}, - "address": "/Notations-and-Macros/Macros/"}], + "address": "/Notations-and-Macros/Defining-New-Syntax/"}], "log": [{"id": "--tech-term-log", "data": {"term": "log"}, @@ -10784,6 +25465,10 @@ [{"id": "--tech-term-injections", "data": {"term": "injections"}, "address": "/Basic-Types/Sum-Types/"}], + "initialize": + [{"id": "--tech-term-initialized", + "data": {"term": "initialized"}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "initialization": [{"id": "--tech-term-initialization", "data": {"term": "initialization"}, @@ -10804,6 +25489,10 @@ [{"id": "--tech-term-indexed-families", "data": {"term": "indexed families"}, "address": "/The-Type-System/Inductive-Types/"}], + "indexable": + [{"id": "--tech-term-indexable", + "data": {"term": "indexable"}, + "address": "/The--grind--tactic/E___matching/"}], "index": [{"id": "--tech-term-indices", "data": {"term": "indices"}, @@ -10884,6 +25573,10 @@ [{"id": "--tech-term-Git-dependencies", "data": {"term": "Git dependencies"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "generation": + [{"id": "--tech-term-generation", + "data": {"term": "generation"}, + "address": "/The--grind--tactic/E___matching/"}], "generalized field notation": [{"id": "--tech-term-generalized-field-notation", "data": {"term": "generalized field notation"}, @@ -10912,6 +25605,10 @@ [{"id": "--tech-term-Functions", "data": {"term": "Functions"}, "address": "/The-Type-System/Functions/"}], + "forward rule": + [{"id": "--tech-term-forward-rules", + "data": {"term": "forward rules"}, + "address": "/The--grind--tactic/Constraint-Propagation/"}], "force": [{"id": "--tech-term-forcing", "data": {"term": "forcing"}, @@ -10948,6 +25645,10 @@ [{"id": "--tech-term-External-libraries", "data": {"term": "External libraries"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "extensional map": + [{"id": "--tech-term-Extensional-maps", + "data": {"term": "Extensional maps"}, + "address": "/Basic-Types/Maps-and-Sets/"}], "extension": [{"id": "--tech-term-extensions", "data": {"term": "extensions"}, @@ -10973,12 +25674,12 @@ "data": {"term": "expansion"}, "address": "/Notations-and-Macros/Custom-Operators/"}], "executable": - [{"id": "--tech-term-Executables", + [{"id": "--tech-term-executables", "data": {"term": "Executables"}, - "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "--tech-term-executables", + "address": "/Source-Files-and-Modules/"}, + {"id": "--tech-term-Executables", "data": {"term": "Executables"}, - "address": "/Source-Files-and-Modules/"}], + "address": "/Build-Tools-and-Distribution/Lake/"}], "exception monad": [{"id": "--tech-term-Exception-monads", "data": {"term": "Exception monads"}, @@ -11019,10 +25720,22 @@ {"id": "--tech-term-elaborators", "data": {"term": "elaborators"}, "address": "/Notations-and-Macros/Elaborators/"}], + "e matching instance": + [{"id": "--tech-term-instance", + "data": {"term": "instance"}, + "address": "/The--grind--tactic/E___matching/"}], + "e matching": + [{"id": "--tech-term-E-matching", + "data": {"term": "E-matching"}, + "address": "/The--grind--tactic/E___matching/"}], "dynamic array": [{"id": "--tech-term-dynamic-arrays", "data": {"term": "dynamic arrays"}, "address": "/Basic-Types/Arrays/"}], + "downward propagation": + [{"id": "--tech-term-downward-propagation", + "data": {"term": "downward propagation"}, + "address": "/The--grind--tactic/Constraint-Propagation/"}], "domain": [{"id": "--tech-term-domain", "data": {"term": "domain"}, @@ -11055,6 +25768,10 @@ [{"id": "--tech-term-direct-dependencies", "data": {"term": "direct dependencies"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "dictionary": + [{"id": "--tech-term-dictionaries", + "data": {"term": "dictionaries"}, + "address": "/Basic-Types/Maps-and-Sets/"}], "diamond": [{"id": "--tech-term-Diamonds", "data": {"term": "Diamonds"}, @@ -11083,6 +25800,10 @@ [{"id": "--tech-term-Dependent-pairs", "data": {"term": "Dependent pairs"}, "address": "/Basic-Types/Tuples/"}], + "dependent map": + [{"id": "--tech-term-dependent-map", + "data": {"term": "dependent map"}, + "address": "/Basic-Types/Maps-and-Sets/"}], "dependent coercion": [{"id": "--tech-term-Dependent-coercions", "data": {"term": "Dependent coercions"}, @@ -11132,6 +25853,10 @@ [{"id": "--tech-term-decidable", "data": {"term": "decidable"}, "address": "/Type-Classes/Basic-Classes/"}], + "de bruijn indice": + [{"id": "--tech-term-de-Bruijn-indices", + "data": {"term": "de Bruijn indices"}, + "address": "/The--grind--tactic/E___matching/"}], "cycle": [{"id": "--tech-term-cycles", "data": {"term": "cycles"}, @@ -11172,6 +25897,14 @@ [{"id": "--tech-term-cumulative", "data": {"term": "cumulative"}, "address": "/The-Type-System/Universes/"}], + "coverage": + [{"id": "--tech-term-coverage", + "data": {"term": "coverage"}, + "address": "/The--grind--tactic/E___matching/"}], + "cover": + [{"id": "--tech-term-cover", + "data": {"term": "cover"}, + "address": "/The--grind--tactic/E___matching/"}], "course of values recursion": [{"id": "--tech-term-course-of-values-recursion", "data": {"term": "course-of-values recursion"}, @@ -11180,6 +25913,14 @@ [{"id": "--tech-term-constructors", "data": {"term": "constructors"}, "address": "/The-Type-System/Inductive-Types/"}], + "constraint propagation": + [{"id": "--tech-term-Constraint-propagation", + "data": {"term": "Constraint propagation"}, + "address": "/The--grind--tactic/Constraint-Propagation/"}], + "congruence closure": + [{"id": "--tech-term-Congruence-closure", + "data": {"term": "Congruence closure"}, + "address": "/The--grind--tactic/Congruence-Closure/"}], "configure package": [{"id": "--tech-term-Configuring", "data": {"term": "Configuring"}, @@ -11257,6 +25998,14 @@ [{"id": "--tech-term-bracketed-binders", "data": {"term": "bracketed binders"}, "address": "/Definitions/Headers-and-Signatures/"}], + "boxed": + [{"id": "--tech-term-Boxed", + "data": {"term": "Boxed"}, + "address": "/Run-Time-Code/Boxing/"}], + "borrowed": + [{"id": "--tech-term-borrowed", + "data": {"term": "borrowed"}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "binary directory": [{"id": "--tech-term-binary-directory", "data": {"term": "binary directory"}, @@ -11301,6 +26050,10 @@ [{"id": "--tech-term-associativity", "data": {"term": "associativity"}, "address": "/Notations-and-Macros/Custom-Operators/"}], + "associative array": + [{"id": "--tech-term-associative-arrays", + "data": {"term": "associative arrays"}, + "address": "/Basic-Types/Maps-and-Sets/"}], "artifact": [{"id": "--tech-term-artifact", "data": {"term": "artifact"}, @@ -11309,6 +26062,10 @@ [{"id": "--tech-term-Applicative-functors", "data": {"term": "Applicative functors"}, "address": "/Functors___-Monads-and--do--Notation/"}], + "application binary interface": + [{"id": "--tech-term-Application-Binary-Interface", + "data": {"term": "Application Binary Interface"}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "antiquotation": [{"id": "--tech-term-antiquotations", "data": {"term": "antiquotations"}, @@ -11334,10 +26091,10 @@ "description": "Conversion Tactics", "contents": {"Lean.Parser.Tactic.Conv.«conv·._»": - [{"id": "Lean___Parser___Tactic___Conv____FLQQ_conv________FLQQ_", + [{"id": "Lean___Parser___Tactic___Conv____FLQQ_conv________FLQQ_-next", "data": {"userName": "· ..."}, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}, - {"id": "Lean___Parser___Tactic___Conv____FLQQ_conv________FLQQ_-next", + {"id": "Lean___Parser___Tactic___Conv____FLQQ_conv________FLQQ_", "data": {"userName": "· ..."}, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}], "Lean.Parser.Tactic.Conv.«conv_<;>_»": @@ -11566,7 +26323,7 @@ "data": {"userName": "solve"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.cdot": - [{"id": "___-next-next", + [{"id": "___", "data": {"userName": "Lean.cdot"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], "Lean.calcTactic": @@ -11597,12 +26354,12 @@ "data": {"userName": "with_unfolding_all"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.withReducibleAndInstances": - [{"id": "with_reducible_and_instances-next", + [{"id": "with_reducible_and_instances", "data": {"userName": "with_reducible_and_instances"}, - "address": "/Tactic-Proofs/Tactic-Reference/"}, - {"id": "with_reducible_and_instances", + "address": "/Tactic-Proofs/The-Tactic-Language/"}, + {"id": "with_reducible_and_instances-next", "data": {"userName": "with_reducible_and_instances"}, - "address": "/Tactic-Proofs/The-Tactic-Language/"}], + "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.withReducible": [{"id": "with_reducible-next", "data": {"userName": "with_reducible"}, @@ -11666,10 +26423,6 @@ [{"id": "simp______", "data": {"userName": "simp?!"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], - "Lean.Parser.Tactic.tacticShow_": - [{"id": "show", - "data": {"userName": "show"}, - "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.tacticRwa__": [{"id": "rwa", "data": {"userName": "rwa"}, @@ -11698,15 +26451,15 @@ [{"id": "nofun", "data": {"userName": "nofun"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], - "Lean.Parser.Tactic.tacticLet_": + "Lean.Parser.Tactic.tacticLet__": [{"id": "let", "data": {"userName": "let"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], - "Lean.Parser.Tactic.tacticLetI_": + "Lean.Parser.Tactic.tacticLetI__": [{"id": "letI", "data": {"userName": "letI"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], - "Lean.Parser.Tactic.tacticLet'_": + "Lean.Parser.Tactic.tacticLet'__": [{"id": "let___", "data": {"userName": "let'"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], @@ -11718,15 +26471,14 @@ [{"id": "infer_instance", "data": {"userName": "infer_instance"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], - "Lean.Parser.Tactic.tacticHave_": - [{"id": "have", + "Lean.Parser.Tactic.tacticHave__": + [{"id": "have-next", + "data": {"userName": "have"}, + "address": "/Tactic-Proofs/The-Tactic-Language/"}, + {"id": "have", "data": {"userName": "have"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], - "Lean.Parser.Tactic.tacticHaveI_": - [{"id": "haveI", - "data": {"userName": "haveI"}, - "address": "/Tactic-Proofs/The-Tactic-Language/"}], - "Lean.Parser.Tactic.tacticHave'_": + "Lean.Parser.Tactic.tacticHave'": [{"id": "have___", "data": {"userName": "have'"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], @@ -11866,6 +26618,10 @@ [{"id": "show_term", "data": {"userName": "show_term"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.show": + [{"id": "show", + "data": {"userName": "show"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.set_option": [{"id": "set_option", "data": {"userName": "Lean.Parser.Tactic.set_option"}, @@ -11958,10 +26714,102 @@ [{"id": "native_decide", "data": {"userName": "native_decide"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mvcgenMacro": + [{"id": "mvcgen", + "data": {"userName": "mvcgen"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mstopMacro": + [{"id": "mstop", + "data": {"userName": "mstop"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mstartMacro": + [{"id": "mstart", + "data": {"userName": "mstart"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mspecializePure": + [{"id": "mspecialize_pure", + "data": {"userName": "mspecialize_pure"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mspecializeMacro": + [{"id": "mspecialize", + "data": {"userName": "mspecialize"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mspec": + [{"id": "mspec", + "data": {"userName": "mspec"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mright": + [{"id": "mright", + "data": {"userName": "mright"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mreplaceMacro": + [{"id": "mreplace", + "data": {"userName": "mreplace"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mrefine": + [{"id": "mrefine", + "data": {"userName": "mrefine"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mpureIntro": + [{"id": "mpure_intro", + "data": {"userName": "mpure_intro"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mpure": + [{"id": "mpure", + "data": {"userName": "mpure"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mleftMacro": + [{"id": "mleft", + "data": {"userName": "mleft"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mintro": + [{"id": "mintro", + "data": {"userName": "mintro"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mhaveMacro": + [{"id": "mhave", + "data": {"userName": "mhave"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mframeMacro": + [{"id": "mframe", + "data": {"userName": "mframe"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mexistsMacro": + [{"id": "mexists", + "data": {"userName": "mexists"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mexfalsoMacro": + [{"id": "mexfalso", + "data": {"userName": "mexfalso"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mexactMacro": + [{"id": "mexact", + "data": {"userName": "mexact"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mdup": + [{"id": "mdup", + "data": {"userName": "mdup"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mconstructor": + [{"id": "mconstructor", + "data": {"userName": "mconstructor"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mclear": + [{"id": "mclear", + "data": {"userName": "mclear"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.mcases": + [{"id": "mcases", + "data": {"userName": "mcases"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.match": [{"id": "match", "data": {"userName": "Lean.Parser.Tactic.match"}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], + "Lean.Parser.Tactic.massumption": + [{"id": "massumption", + "data": {"userName": "massumption"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.letrec": [{"id": "let-rec", "data": {"userName": "let"}, @@ -12007,6 +26855,10 @@ [{"id": "guard_expr", "data": {"userName": "guard_expr"}, "address": "/Tactic-Proofs/Tactic-Reference/"}], + "Lean.Parser.Tactic.grind": + [{"id": "grind", + "data": {"userName": "grind"}, + "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Parser.Tactic.generalize": [{"id": "generalize", "data": {"userName": "generalize"}, @@ -12222,17 +27074,17 @@ "data": null, "address": "/Tactic-Proofs/Reading-Proof-States/"}], "«termΣ_,_»": - [{"id": "_FLQQ_term_________FLQQ_-next-next-next-next-next", + [{"id": "_FLQQ_term_________FLQQ_-next-next-next-next-next-next", "data": null, "address": "/Basic-Types/Tuples/"}, - {"id": "_FLQQ_term_________FLQQ_-next-next-next-next-next-next", + {"id": "_FLQQ_term_________FLQQ_-next-next-next-next-next", "data": null, "address": "/Basic-Types/Tuples/"}], "«termΣ'_,_»": - [{"id": "_FLQQ_term____________FLQQ_", + [{"id": "_FLQQ_term____________FLQQ_-next", "data": null, "address": "/Basic-Types/Tuples/"}, - {"id": "_FLQQ_term____________FLQQ_-next", + {"id": "_FLQQ_term____________FLQQ_", "data": null, "address": "/Basic-Types/Tuples/"}], "«term¬_»": @@ -12240,14 +27092,15 @@ "data": null, "address": "/Basic-Propositions/Logical-Connectives/"}], "«term{_:_//_}»": - [{"id": "_FLQQ_term___________________FLQQ_", + [{"id": "_FLQQ_term___________________FLQQ_-next", "data": null, "address": "/Basic-Types/Subtypes/"}, - {"id": "_FLQQ_term___________________FLQQ_-next", + {"id": "_FLQQ_term___________________FLQQ_", "data": null, "address": "/Basic-Types/Subtypes/"}], "«term_⊕_»": - [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next", + [{"id": + "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Basic-Types/Sum-Types/"}], "«term_⊕'_»": @@ -12262,6 +27115,10 @@ [{"id": "_FLQQ_term______FLQQ_-next", "data": null, "address": "/Type-Classes/Basic-Classes/"}], + "«term_≍_»": + [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next", + "data": null, + "address": "/Basic-Propositions/Propositional-Equality/"}], "«term_≈_»": [{"id": "_FLQQ_term______FLQQ_", "data": null, @@ -12279,7 +27136,7 @@ "data": null, "address": "/Basic-Propositions/Logical-Connectives/"}], "«term_×_»": - [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next", + [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next", "data": null, "address": "/Basic-Types/Tuples/"}], "«term_×__1»": @@ -12364,12 +27221,12 @@ "data": null, "address": "/Basic-Types/Booleans/"}], "«term[_]»": - [{"id": "_FLQQ_term_LSQ___RSQ__FLQQ_", + [{"id": "_FLQQ_term_LSQ___RSQ__FLQQ_-next", "data": null, - "address": "/Terms/Literals/"}, - {"id": "_FLQQ_term_LSQ___RSQ__FLQQ_-next", + "address": "/Basic-Types/Linked-Lists/"}, + {"id": "_FLQQ_term_LSQ___RSQ__FLQQ_", "data": null, - "address": "/Basic-Types/Linked-Lists/"}], + "address": "/Terms/Literals/"}], "«termExists_,_»": [{"id": "_FLQQ_termExists______FLQQ_-next", "data": null, @@ -12378,12 +27235,12 @@ "data": null, "address": "/Basic-Propositions/Quantifiers/"}], "«term#[_,]»": - [{"id": "_FLQQ_term____LSQ______RSQ__FLQQ_-next", + [{"id": "_FLQQ_term____LSQ______RSQ__FLQQ_", "data": null, - "address": "/Basic-Types/Arrays/"}, - {"id": "_FLQQ_term____LSQ______RSQ__FLQQ_", + "address": "/Terms/Literals/"}, + {"id": "_FLQQ_term____LSQ______RSQ__FLQQ_-next", "data": null, - "address": "/Terms/Literals/"}], + "address": "/Basic-Types/Arrays/"}], "«stx_<|>_»": [{"id": "_FLQQ_stx__LT_____GT___FLQQ_", "data": null, @@ -12477,12 +27334,12 @@ "data": null, "address": "/Notations-and-Macros/Precedence/"}], "num.antiquot": - [{"id": "num___antiquot-next", + [{"id": "num___antiquot", "data": null, - "address": "/Notations-and-Macros/Precedence/"}, - {"id": "num___antiquot", + "address": "/Type-Classes/Instance-Declarations/"}, + {"id": "num___antiquot-next", "data": null, - "address": "/Type-Classes/Instance-Declarations/"}], + "address": "/Notations-and-Macros/Precedence/"}], "ident.antiquot": [{"id": "ident___antiquot", "data": null, @@ -12503,33 +27360,44 @@ [{"id": "boolIfThenElse", "data": null, "address": "/Terms/Conditionals/"}], - "Manual.FreeSyntax.more": - [{"id": "Manual___FreeSyntax___more-next", + "Std.HashMap.«term_~m_»": + [{"id": "Std___HashMap____FLQQ_term____m__FLQQ_", "data": null, - "address": "/Terms/Function-Application/"}, - {"id": "Manual___FreeSyntax___more-next-next-next", + "address": "/Basic-Types/Maps-and-Sets/"}, + {"id": "Std___HashMap____FLQQ_term____m__FLQQ_-next", "data": null, - "address": "/Notations-and-Macros/Macros/"}, - {"id": "Manual___FreeSyntax___more-next-next", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.«term_~m_»": + [{"id": "Std___DHashMap____FLQQ_term____m__FLQQ_", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Manual.FreeSyntax.more": + [{"id": "Manual___FreeSyntax___more-next-next", "data": null, "address": "/Notations-and-Macros/Macros/"}, + {"id": "Manual___FreeSyntax___more-next", + "data": null, + "address": "/Terms/Function-Application/"}, {"id": "Manual___FreeSyntax___more", "data": null, - "address": "/Terms/Function-Application/"}], + "address": "/Terms/Function-Application/"}, + {"id": "Manual___FreeSyntax___more-next-next-next", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], "Manual.FreeSyntax.embed": [{"id": "Manual___FreeSyntax___embed", "data": null, "address": "/Terms/Functions/"}], "Manual.FreeSyntax.done": - [{"id": "Manual___FreeSyntax___done-next-next", + [{"id": "Manual___FreeSyntax___done", "data": null, - "address": "/Build-Tools-and-Distribution/Lake/"}, + "address": "/Notations-and-Macros/Macros/"}, {"id": "Manual___FreeSyntax___done-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Manual___FreeSyntax___done", + {"id": "Manual___FreeSyntax___done-next-next", "data": null, - "address": "/Notations-and-Macros/Macros/"}], + "address": "/Build-Tools-and-Distribution/Lake/"}], "List.«term_~_»": [{"id": "List____FLQQ_term______FLQQ_", "data": null, @@ -12559,33 +27427,33 @@ "data": null, "address": "/Interacting-with-Lean/"}], "Lean.guardMsgsWhitespaceArg": - [{"id": "Lean___guardMsgsWhitespaceArg-next-next", + [{"id": "Lean___guardMsgsWhitespaceArg-next", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___guardMsgsWhitespaceArg-next-next-next", + {"id": "Lean___guardMsgsWhitespaceArg-next-next", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___guardMsgsWhitespaceArg-next", + {"id": "Lean___guardMsgsWhitespaceArg-next-next-next", "data": null, "address": "/Interacting-with-Lean/"}], "Lean.guardMsgsSpecElt": - [{"id": "Lean___guardMsgsSpecElt-next-next", + [{"id": "Lean___guardMsgsSpecElt-next-next-next", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___guardMsgsSpecElt-next-next-next", + {"id": "Lean___guardMsgsSpecElt-next", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___guardMsgsSpecElt-next", + {"id": "Lean___guardMsgsSpecElt-next-next", "data": null, "address": "/Interacting-with-Lean/"}], "Lean.guardMsgsFilter": - [{"id": "Lean___guardMsgsFilter-next-next-next", + [{"id": "Lean___guardMsgsFilter-next", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___guardMsgsFilter-next-next", + {"id": "Lean___guardMsgsFilter-next-next-next", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___guardMsgsFilter-next", + {"id": "Lean___guardMsgsFilter-next-next", "data": null, "address": "/Interacting-with-Lean/"}, {"id": "Lean___guardMsgsFilter-next-next-next-next", @@ -12608,10 +27476,10 @@ "data": null, "address": "/Definitions/Recursive-Definitions/"}], "Lean.Parser.Termination.terminationBy": - [{"id": "Lean___Parser___Termination___terminationBy-next-next-next", + [{"id": "Lean___Parser___Termination___terminationBy-next", "data": null, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Lean___Parser___Termination___terminationBy-next", + {"id": "Lean___Parser___Termination___terminationBy-next-next-next", "data": null, "address": "/Definitions/Recursive-Definitions/"}], "Lean.Parser.Term.typeAscription": @@ -12651,7 +27519,10 @@ "data": null, "address": "/The-Type-System/Inductive-Types/"}], "Lean.Parser.Term.strictImplicitBinder": - [{"id": "Lean___Parser___Term___strictImplicitBinder-next-next-next", + [{"id": "Lean___Parser___Term___strictImplicitBinder", + "data": null, + "address": "/Definitions/Headers-and-Signatures/"}, + {"id": "Lean___Parser___Term___strictImplicitBinder-next-next-next", "data": null, "address": "/Terms/Functions/"}, {"id": "Lean___Parser___Term___strictImplicitBinder-next", @@ -12659,10 +27530,7 @@ "address": "/Definitions/Headers-and-Signatures/"}, {"id": "Lean___Parser___Term___strictImplicitBinder-next-next", "data": null, - "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___strictImplicitBinder", - "data": null, - "address": "/Definitions/Headers-and-Signatures/"}], + "address": "/Terms/Functions/"}], "Lean.Parser.Term.stateRefT": [{"id": "Lean___Parser___Term___stateRefT", "data": null, @@ -12706,10 +27574,10 @@ "data": null, "address": "/Terms/Pattern-Matching/"}], "Lean.Parser.Term.matchDiscr": - [{"id": "Lean___Parser___Term___matchDiscr-next", + [{"id": "Lean___Parser___Term___matchDiscr", "data": null, "address": "/Terms/Pattern-Matching/"}, - {"id": "Lean___Parser___Term___matchDiscr", + {"id": "Lean___Parser___Term___matchDiscr-next", "data": null, "address": "/Terms/Pattern-Matching/"}], "Lean.Parser.Term.match": @@ -12717,10 +27585,10 @@ "data": null, "address": "/Terms/Pattern-Matching/"}], "Lean.Parser.Term.instBinder": - [{"id": "Lean___Parser___Term___instBinder-next", + [{"id": "Lean___Parser___Term___instBinder-next-next", "data": null, "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___instBinder-next-next", + {"id": "Lean___Parser___Term___instBinder-next", "data": null, "address": "/Terms/Functions/"}, {"id": "Lean___Parser___Term___instBinder", @@ -12745,7 +27613,7 @@ "data": null, "address": "/Terms/Holes/"}], "Lean.Parser.Term.fun": - [{"id": "Lean___Parser___Term___fun-next-next-next-next", + [{"id": "Lean___Parser___Term___fun-next-next-next", "data": null, "address": "/Terms/Functions/"}, {"id": "Lean___Parser___Term___fun-next-next", @@ -12754,20 +27622,20 @@ {"id": "Lean___Parser___Term___fun-next-next-next-next-next", "data": null, "address": "/Terms/Pattern-Matching/"}, - {"id": "Lean___Parser___Term___fun-next", + {"id": "Lean___Parser___Term___fun", "data": null, "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___fun-next-next-next", + {"id": "Lean___Parser___Term___fun-next-next-next-next", "data": null, "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___fun", + {"id": "Lean___Parser___Term___fun-next", "data": null, "address": "/Terms/Functions/"}], "Lean.Parser.Term.forall": - [{"id": "Lean___Parser___Term___forall-next-next", + [{"id": "Lean___Parser___Term___forall-next", "data": null, "address": "/Basic-Propositions/Quantifiers/"}, - {"id": "Lean___Parser___Term___forall-next", + {"id": "Lean___Parser___Term___forall-next-next", "data": null, "address": "/Basic-Propositions/Quantifiers/"}, {"id": "Lean___Parser___Term___forall-next-next-next", @@ -12785,71 +27653,71 @@ "address": "/Definitions/Headers-and-Signatures/"}], "Lean.Parser.Term.doSeqItem": [{"id": - "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", + "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", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "Lean___Parser___Term___doSeqItem-next-next-next", + {"id": + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "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", + "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", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next", + "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", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + {"id": "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "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", + "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", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "Lean___Parser___Term___doSeqItem-next-next-next-next", + {"id": "Lean___Parser___Term___doSeqItem-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "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", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "Lean___Parser___Term___doSeqItem-next", + {"id": "Lean___Parser___Term___doSeqItem-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next", + {"id": + "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", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "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", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "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", + "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, - {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + {"id": "Lean___Parser___Term___doSeqItem-next", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}, {"id": - "Lean___Parser___Term___doSeqItem-next-next-next-next-next-next-next-next-next", + "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", "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], "Lean.Parser.Term.doReassignArrow": @@ -12871,47 +27739,51 @@ "data": null, "address": "/Functors___-Monads-and--do--Notation/Syntax/"}], "Lean.Parser.Term.depArrow": - [{"id": "Lean___Parser___Term___depArrow-next-next", + [{"id": "Lean___Parser___Term___depArrow-next-next-next", "data": null, "address": "/Terms/Function-Types/"}, - {"id": "Lean___Parser___Term___depArrow-next", + {"id": "Lean___Parser___Term___depArrow-next-next", "data": null, "address": "/Terms/Function-Types/"}, - {"id": "Lean___Parser___Term___depArrow-next-next-next-next", + {"id": "Lean___Parser___Term___depArrow-next-next-next-next-next-next", "data": null, "address": "/Terms/Function-Types/"}, - {"id": "Lean___Parser___Term___depArrow-next-next-next-next-next", + {"id": "Lean___Parser___Term___depArrow-next-next-next-next", "data": null, "address": "/Terms/Function-Types/"}, {"id": "Lean___Parser___Term___depArrow-next-next-next-next-next-next-next", "data": null, "address": "/Terms/Function-Types/"}, - {"id": "Lean___Parser___Term___depArrow-next-next-next", + {"id": "Lean___Parser___Term___depArrow-next", "data": null, "address": "/Terms/Function-Types/"}, - {"id": "Lean___Parser___Term___depArrow", + {"id": "Lean___Parser___Term___depArrow-next-next-next-next-next", "data": null, "address": "/Terms/Function-Types/"}, - {"id": "Lean___Parser___Term___depArrow-next-next-next-next-next-next", + {"id": "Lean___Parser___Term___depArrow", "data": null, "address": "/Terms/Function-Types/"}], "Lean.Parser.Term.byTactic": - [{"id": "Lean___Parser___Term___byTactic-next-next", + [{"id": "Lean___Parser___Term___byTactic-next", "data": null, "address": "/Tactic-Proofs/Running-Tactics/"}, - {"id": "Lean___Parser___Term___byTactic-next", + {"id": "Lean___Parser___Term___byTactic-next-next", "data": null, "address": "/Tactic-Proofs/Running-Tactics/"}], + "Lean.Parser.Term.borrowed": + [{"id": "Lean___Parser___Term___borrowed", + "data": null, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "Lean.Parser.Term.attributes": [{"id": "Lean___Parser___Term___attributes-next", "data": null, "address": "/Attributes/"}], "Lean.Parser.Term.attrKind": - [{"id": "Lean___Parser___Term___attrKind-next", + [{"id": "Lean___Parser___Term___attrKind-next-next", "data": null, "address": "/Attributes/"}, - {"id": "Lean___Parser___Term___attrKind-next-next", + {"id": "Lean___Parser___Term___attrKind-next", "data": null, "address": "/Attributes/"}, {"id": "Lean___Parser___Term___attrKind", @@ -12938,26 +27810,26 @@ "data": null, "address": "/Tactic-Proofs/The-Tactic-Language/"}], "Lean.Parser.Tactic.configItem": - [{"id": "Lean___Parser___Tactic___configItem-next", + [{"id": "Lean___Parser___Tactic___configItem-next-next", "data": null, "address": "/Tactic-Proofs/The-Tactic-Language/"}, {"id": "Lean___Parser___Tactic___configItem-next-next-next-next", "data": null, "address": "/Tactic-Proofs/The-Tactic-Language/"}, - {"id": "Lean___Parser___Tactic___configItem-next-next", + {"id": "Lean___Parser___Tactic___configItem-next", "data": null, "address": "/Tactic-Proofs/The-Tactic-Language/"}, {"id": "Lean___Parser___Tactic___configItem-next-next-next", "data": null, "address": "/Tactic-Proofs/The-Tactic-Language/"}], "Lean.Parser.Tactic.Conv.enterArg": - [{"id": "Lean___Parser___Tactic___Conv___enterArg-next-next-next", + [{"id": "Lean___Parser___Tactic___Conv___enterArg-next", "data": null, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}, - {"id": "Lean___Parser___Tactic___Conv___enterArg-next", + {"id": "Lean___Parser___Tactic___Conv___enterArg-next-next", "data": null, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}, - {"id": "Lean___Parser___Tactic___Conv___enterArg-next-next", + {"id": "Lean___Parser___Tactic___Conv___enterArg-next-next-next", "data": null, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}], "Lean.Parser.Syntax.unary": @@ -12979,23 +27851,23 @@ "data": null, "address": "/Notations-and-Macros/Precedence/"}], "Lean.Parser.Syntax.sepBy1": - [{"id": "Lean___Parser___Syntax___sepBy1-next", + [{"id": "Lean___Parser___Syntax___sepBy1", "data": null, "address": "/Notations-and-Macros/Defining-New-Syntax/"}, {"id": "Lean___Parser___Syntax___sepBy1-next-next", "data": null, "address": "/Notations-and-Macros/Defining-New-Syntax/"}, - {"id": "Lean___Parser___Syntax___sepBy1", + {"id": "Lean___Parser___Syntax___sepBy1-next", "data": null, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], "Lean.Parser.Syntax.sepBy": - [{"id": "Lean___Parser___Syntax___sepBy-next-next", + [{"id": "Lean___Parser___Syntax___sepBy", "data": null, "address": "/Notations-and-Macros/Defining-New-Syntax/"}, - {"id": "Lean___Parser___Syntax___sepBy", + {"id": "Lean___Parser___Syntax___sepBy-next", "data": null, "address": "/Notations-and-Macros/Defining-New-Syntax/"}, - {"id": "Lean___Parser___Syntax___sepBy-next", + {"id": "Lean___Parser___Syntax___sepBy-next-next", "data": null, "address": "/Notations-and-Macros/Defining-New-Syntax/"}], "Lean.Parser.Syntax.paren": @@ -13078,10 +27950,10 @@ "data": null, "address": "/Namespaces-and-Sections/"}], "Lean.Parser.Command.printEqns": - [{"id": "Lean___Parser___Command___printEqns-next", + [{"id": "Lean___Parser___Command___printEqns", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___Parser___Command___printEqns", + {"id": "Lean___Parser___Command___printEqns-next", "data": null, "address": "/Interacting-with-Lean/"}], "Lean.Parser.Command.printAxioms": @@ -13089,10 +27961,10 @@ "data": null, "address": "/Interacting-with-Lean/"}], "Lean.Parser.Command.print": - [{"id": "Lean___Parser___Command___print-next", + [{"id": "Lean___Parser___Command___print", "data": null, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___Parser___Command___print", + {"id": "Lean___Parser___Command___print-next", "data": null, "address": "/Interacting-with-Lean/"}], "Lean.Parser.Command.optDeriving": @@ -13140,19 +28012,19 @@ "data": null, "address": "/Definitions/Recursive-Definitions/"}], "Lean.Parser.Command.mixfix": - [{"id": "Lean___Parser___Command___mixfix", + [{"id": "Lean___Parser___Command___mixfix-next-next-next-next", "data": null, "address": "/Notations-and-Macros/Custom-Operators/"}, {"id": "Lean___Parser___Command___mixfix-next-next-next", "data": null, "address": "/Notations-and-Macros/Custom-Operators/"}, - {"id": "Lean___Parser___Command___mixfix-next", + {"id": "Lean___Parser___Command___mixfix", "data": null, "address": "/Notations-and-Macros/Custom-Operators/"}, - {"id": "Lean___Parser___Command___mixfix-next-next-next-next", + {"id": "Lean___Parser___Command___mixfix-next-next", "data": null, "address": "/Notations-and-Macros/Custom-Operators/"}, - {"id": "Lean___Parser___Command___mixfix-next-next", + {"id": "Lean___Parser___Command___mixfix-next", "data": null, "address": "/Notations-and-Macros/Custom-Operators/"}], "Lean.Parser.Command.macro_rules": @@ -13171,23 +28043,23 @@ "data": null, "address": "/Notations-and-Macros/Macros/"}], "Lean.Parser.Command.instance": - [{"id": "Lean___Parser___Command___instance-next-next-next", + [{"id": "Lean___Parser___Command___instance-next-next", "data": null, "address": "/Type-Classes/Instance-Declarations/"}, - {"id": "Lean___Parser___Command___instance-next", + {"id": "Lean___Parser___Command___instance-next-next-next", "data": null, "address": "/Type-Classes/Instance-Declarations/"}, - {"id": "Lean___Parser___Command___instance-next-next", + {"id": "Lean___Parser___Command___instance-next", "data": null, "address": "/Type-Classes/Instance-Declarations/"}], "Lean.Parser.Command.initialize": [{"id": "Lean___Parser___Command___initialize-next-next", "data": null, "address": "/Elaboration-and-Compilation/"}, - {"id": "Lean___Parser___Command___initialize-next-next-next", + {"id": "Lean___Parser___Command___initialize-next", "data": null, "address": "/Elaboration-and-Compilation/"}, - {"id": "Lean___Parser___Command___initialize-next", + {"id": "Lean___Parser___Command___initialize-next-next-next", "data": null, "address": "/Elaboration-and-Compilation/"}, {"id": "Lean___Parser___Command___initialize", @@ -13201,6 +28073,10 @@ [{"id": "Lean___Parser___Command___identPrec", "data": null, "address": "/Notations-and-Macros/Notations/"}], + "Lean.Parser.Command.grindPattern": + [{"id": "Lean___Parser___Command___grindPattern", + "data": null, + "address": "/The--grind--tactic/E___matching/"}], "Lean.Parser.Command.export": [{"id": "Lean___Parser___Command___export", "data": null, @@ -13237,10 +28113,7 @@ "data": null, "address": "/Type-Classes/Deriving-Instances/"}], "Lean.Parser.Command.declaration": - [{"id": "Lean___Parser___Command___declaration-next-next-next-next", - "data": null, - "address": "/Definitions/Definitions/"}, - {"id": + [{"id": "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Definitions/Example-Declarations/"}, @@ -13249,44 +28122,40 @@ "data": null, "address": "/Type-Classes/Class-Declarations/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, - "address": "/Definitions/Theorems/"}, + "address": "/Definitions/Example-Declarations/"}, {"id": "Lean___Parser___Command___declaration-next", "data": null, "address": "/The-Type-System/Inductive-Types/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Definitions/Definitions/"}, - {"id": "Lean___Parser___Command___declaration-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, - "address": "/Definitions/Definitions/"}, + "address": "/Definitions/Theorems/"}, {"id": "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", "data": null, "address": "/Type-Classes/Class-Declarations/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next", "data": null, "address": "/Definitions/Definitions/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next", "data": null, - "address": "/Definitions/Example-Declarations/"}, + "address": "/Definitions/Definitions/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, - "address": "/Definitions/Theorems/"}, - {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next", + "address": "/Definitions/Example-Declarations/"}, + {"id": "Lean___Parser___Command___declaration-next-next-next", "data": null, "address": "/Definitions/Definitions/"}, {"id": "Lean___Parser___Command___declaration-next-next-next-next-next", "data": null, "address": "/Definitions/Definitions/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Definitions/Definitions/"}, {"id": @@ -13298,12 +28167,19 @@ "data": null, "address": "/Definitions/Definitions/"}, {"id": - "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, - "address": "/Definitions/Example-Declarations/"}, + "address": "/Definitions/Definitions/"}, {"id": "Lean___Parser___Command___declaration", "data": null, - "address": "/The-Type-System/Inductive-Types/"}], + "address": "/The-Type-System/Inductive-Types/"}, + {"id": "Lean___Parser___Command___declaration-next-next-next-next", + "data": null, + "address": "/Definitions/Definitions/"}, + {"id": + "Lean___Parser___Command___declaration-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/Definitions/Theorems/"}], "Lean.Parser.Command.declSig": [{"id": "Lean___Parser___Command___declSig", "data": null, @@ -13341,77 +28217,77 @@ "address": "/Definitions/Recursive-Definitions/"}], "Lean.Parser.Attr.simple": [{"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next", - "data": null, - "address": "/Tactic-Proofs/Tactic-Reference/"}, - {"id": "Lean___Parser___Attr___simple", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Notations-and-Macros/Elaborators/"}, {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next", "data": null, - "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}, - {"id": "Lean___Parser___Attr___simple-next-next-next-next-next", + "address": "/Tactic-Proofs/Tactic-Reference/"}, + {"id": "Lean___Parser___Attr___simple-next-next-next-next", "data": null, - "address": "/Terms/Pattern-Matching/"}, + "address": "/Terms/Function-Application/"}, + {"id": + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/Build-Tools-and-Distribution/Lake/"}, {"id": "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}, - {"id": "Lean___Parser___Attr___simple-next", - "data": null, - "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Lean___Parser___Attr___simple-next-next-next-next-next-next", - "data": null, - "address": "/Tactic-Proofs/Tactic-Reference/"}, {"id": "Lean___Parser___Attr___simple-next-next", "data": null, "address": "/Definitions/Recursive-Definitions/"}, - {"id": "Lean___Parser___Attr___simple-next-next-next-next", + {"id": "Lean___Parser___Attr___simple-next-next-next", "data": null, - "address": "/Terms/Function-Application/"}, + "address": "/Definitions/Recursive-Definitions/"}, {"id": "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, - "address": "/Notations-and-Macros/Elaborators/"}, + "address": "/Notations-and-Macros/Extending-Lean___s-Output/"}, + {"id": "Lean___Parser___Attr___simple-next-next-next-next-next", + "data": null, + "address": "/Terms/Pattern-Matching/"}, {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next", + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next", + "data": null, + "address": "/Tactic-Proofs/Tactic-Reference/"}, + {"id": "Lean___Parser___Attr___simple-next-next-next-next-next-next", + "data": null, + "address": "/Tactic-Proofs/Tactic-Reference/"}, + {"id": + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Notations-and-Macros/Elaborators/"}, - {"id": "Lean___Parser___Attr___simple-next-next-next", + {"id": "Lean___Parser___Attr___simple", "data": null, "address": "/Definitions/Recursive-Definitions/"}, {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next", + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next", "data": null, "address": "/Tactic-Proofs/Tactic-Reference/"}, - {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + {"id": "Lean___Parser___Attr___simple-next", "data": null, - "address": "/Build-Tools-and-Distribution/Lake/"}, + "address": "/Definitions/Recursive-Definitions/"}, {"id": - "Lean___Parser___Attr___simple-next-next-next-next-next-next-next", + "Lean___Parser___Attr___simple-next-next-next-next-next-next-next-next-next-next-next-next", "data": null, - "address": "/Tactic-Proofs/Tactic-Reference/"}], + "address": "/Notations-and-Macros/Elaborators/"}], "Lean.Parser.Attr.simp": - [{"id": "Lean___Parser___Attr___simp-next-next-next", + [{"id": "Lean___Parser___Attr___simp-next-next", "data": null, "address": "/The-Simplifier/Simp-sets/"}, - {"id": "Lean___Parser___Attr___simp-next-next", + {"id": "Lean___Parser___Attr___simp", "data": null, "address": "/The-Simplifier/Simp-sets/"}, {"id": "Lean___Parser___Attr___simp-next", "data": null, "address": "/The-Simplifier/Simp-sets/"}, - {"id": "Lean___Parser___Attr___simp", + {"id": "Lean___Parser___Attr___simp-next-next-next", "data": null, "address": "/The-Simplifier/Simp-sets/"}], "Lean.Parser.Attr.macro": @@ -13422,6 +28298,59 @@ [{"id": "Lean___Parser___Attr___instance", "data": null, "address": "/Type-Classes/Instance-Declarations/"}], + "Lean.Parser.Attr.grindMod": + [{"id": "Lean___Parser___Attr___grindMod-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": "Lean___Parser___Attr___grindMod-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": "Lean___Parser___Attr___grindMod-next-next-next-next-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grind?": + [{"id": "Lean___Parser___Attr___grind___", + "data": null, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grind": + [{"id": "Lean___Parser___Attr___grind-next", + "data": null, + "address": "/The--grind--tactic/E___matching/"}, + {"id": "Lean___Parser___Attr___grind", + "data": null, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Lean.Parser.Attr.extern": + [{"id": "Lean___Parser___Attr___extern", + "data": null, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], + "Lean.Parser.Attr.export": + [{"id": "Lean___Parser___Attr___export", + "data": null, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "Lean.Parser.Attr.default_instance": [{"id": "Lean___Parser___Attr___default_instance", "data": null, @@ -13455,13 +28384,13 @@ "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.packageCommand": - [{"id": "Lake___DSL___packageCommand-next", + [{"id": "Lake___DSL___packageCommand", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, {"id": "Lake___DSL___packageCommand-next-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___packageCommand", + {"id": "Lake___DSL___packageCommand-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.moduleFacetDecl": @@ -13477,23 +28406,23 @@ "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.leanLibCommand": - [{"id": "Lake___DSL___leanLibCommand", + [{"id": "Lake___DSL___leanLibCommand-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___leanLibCommand-next-next", + {"id": "Lake___DSL___leanLibCommand", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___leanLibCommand-next", + {"id": "Lake___DSL___leanLibCommand-next-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.leanExeCommand": - [{"id": "Lake___DSL___leanExeCommand-next", + [{"id": "Lake___DSL___leanExeCommand-next-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___leanExeCommand", + {"id": "Lake___DSL___leanExeCommand-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___leanExeCommand-next-next", + {"id": "Lake___DSL___leanExeCommand", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.getConfig": @@ -13501,10 +28430,10 @@ "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.fromClause": - [{"id": "Lake___DSL___fromClause", + [{"id": "Lake___DSL___fromClause-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___fromClause-next", + {"id": "Lake___DSL___fromClause", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.externLibCommand": @@ -13520,10 +28449,10 @@ "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.DSL.cmdDo": - [{"id": "Lake___DSL___cmdDo", + [{"id": "Lake___DSL___cmdDo-next", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Lake___DSL___cmdDo-next", + {"id": "Lake___DSL___cmdDo", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "Int.«term-[_+1]»": @@ -13554,7 +28483,15 @@ {"title": "Compiler options", "description": "Compiler options", "contents": - {"trace.compiler.ir.result": + {"trace.grind.split": + [{"id": "trace___grind___split", + "data": null, + "address": "/The--grind--tactic/Case-Analysis/"}], + "trace.grind.ematch.instance": + [{"id": "trace___grind___ematch___instance", + "data": null, + "address": "/The--grind--tactic/E___matching/"}], + "trace.compiler.ir.result": [{"id": "trace___compiler___ir___result", "data": null, "address": "/Run-Time-Code/Reference-Counting/"}], @@ -13740,6 +28677,12 @@ [{"id": "rfl-next", "data": null, "address": "/Basic-Propositions/Propositional-Equality/"}], + "reprStr": + [{"id": "reprStr", "data": null, "address": "/Interacting-with-Lean/"}], + "reprArg": + [{"id": "reprArg", "data": null, "address": "/Interacting-with-Lean/"}], + "repr": + [{"id": "repr-next", "data": null, "address": "/Interacting-with-Lean/"}], "readThe": [{"id": "readThe", "data": null, @@ -13947,34 +28890,75 @@ "data": null, "address": "/Basic-Propositions/Logical-Connectives/"}], "[anonymous]": - [{"id": "LawfulMonad___mk", - "data": null, - "address": "/Functors___-Monads-and--do--Notation/Laws/"}, - {"id": "IO___Process___SpawnArgs___mk", + [{"id": "IO___Process___SpawnArgs___mk", "data": null, "address": "/IO/Processes/"}, - {"id": "GetElem______mk", + {"id": "Lean___Grind___CommRing___mk", "data": null, - "address": "/Type-Classes/Basic-Classes/"}, - {"id": "Monad___mk", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}, + {"id": "Applicative___mk", "data": null, "address": "/Functors___-Monads-and--do--Notation/"}, - {"id": "Alternative___mk", + {"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}, + {"id": "Lean___Grind___NatModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}, + {"id": "Monad___mk", "data": null, "address": "/Functors___-Monads-and--do--Notation/"}, + {"id": "LawfulApplicative___mk", + "data": null, + "address": "/Functors___-Monads-and--do--Notation/Laws/"}, + {"id": "Lean___Grind___Field___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}, + {"id": "Lean___Grind___IntModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}, {"id": "Lean___Order___CCPO___mk", "data": null, "address": "/Definitions/Recursive-Definitions/"}, + {"id": "Lean___Grind___CommSemiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}, + {"id": "Lean___Grind___PartialOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}, + {"id": "GetElem______mk", + "data": null, + "address": "/Type-Classes/Basic-Classes/"}, + {"id": "LawfulMonad___mk", + "data": null, + "address": "/Functors___-Monads-and--do--Notation/Laws/"}, {"id": "Lake___LeanExeConfig___mk", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, + {"id": "EquivBEq___mk", + "data": null, + "address": "/Type-Classes/Basic-Classes/"}, + {"id": "Lean___Grind___OrderedRing___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}, + {"id": "Lean___Grind___LinearOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}, + {"id": "Lean___Grind___Ring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}, {"id": "Lake___LeanLibConfig___mk", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "LawfulApplicative___mk", + {"id": "LawfulBEq___mk", "data": null, - "address": "/Functors___-Monads-and--do--Notation/Laws/"}, - {"id": "Applicative___mk", + "address": "/Type-Classes/Basic-Classes/"}, + {"id": "Alternative___mk", "data": null, "address": "/Functors___-Monads-and--do--Notation/"}], "Zero.zero": @@ -14783,6 +29767,10 @@ [{"id": "Thunk___get", "data": null, "address": "/Basic-Types/Lazy-Computations/"}], + "Thunk.fn": + [{"id": "Thunk___mk", + "data": null, + "address": "/Basic-Types/Lazy-Computations/"}], "Thunk.bind": [{"id": "Thunk___bind", "data": null, @@ -15217,22 +30205,6 @@ [{"id": "Subarray___take", "data": null, "address": "/Basic-Types/Arrays/"}], - "Subarray.stop_le_array_size": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], - "Subarray.stop": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], - "Subarray.start_le_stop": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], - "Subarray.start": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], "Subarray.split": [{"id": "Subarray___split", "data": null, @@ -15245,10 +30217,6 @@ [{"id": "Subarray___popFront", "data": null, "address": "/Basic-Types/Arrays/"}], - "Subarray.mk": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], "Subarray.getD": [{"id": "Subarray___getD", "data": null, @@ -15309,10 +30277,6 @@ [{"id": "Subarray___drop", "data": null, "address": "/Basic-Types/Arrays/"}], - "Subarray.array": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], "Subarray.anyM": [{"id": "Subarray___anyM", "data": null, @@ -15330,9 +30294,7 @@ "data": null, "address": "/Basic-Types/Arrays/"}], "Subarray": - [{"id": "Subarray___mk", - "data": null, - "address": "/Basic-Types/Arrays/"}], + [{"id": "Subarray", "data": null, "address": "/Basic-Types/Arrays/"}], "Sub.sub": [{"id": "Sub___mk", "data": null, @@ -15746,87 +30708,1983 @@ "String.Iterator.remainingToString": [{"id": "String___Iterator___remainingToString", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.remainingBytes": - [{"id": "String___Iterator___remainingBytes", + "address": "/Basic-Types/Strings/"}], + "String.Iterator.remainingBytes": + [{"id": "String___Iterator___remainingBytes", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.prevn": + [{"id": "String___Iterator___prevn", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.prev": + [{"id": "String___Iterator___prev", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.pos": + [{"id": "String___Iterator___pos", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.nextn": + [{"id": "String___Iterator___nextn", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.next": + [{"id": "String___Iterator___next", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.mk": + [{"id": "String___Iterator___mk", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.i": + [{"id": "String___Iterator___mk", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.hasPrev": + [{"id": "String___Iterator___hasPrev", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.hasNext": + [{"id": "String___Iterator___hasNext", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.forward": + [{"id": "String___Iterator___forward", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.extract": + [{"id": "String___Iterator___extract", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.curr": + [{"id": "String___Iterator___curr", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator.atEnd": + [{"id": "String___Iterator___atEnd", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String.Iterator": + [{"id": "String___Iterator___mk", + "data": null, + "address": "/Basic-Types/Strings/"}], + "String": + [{"id": "String___mk", "data": null, "address": "/Basic-Types/Strings/"}], + "StdGen": + [{"id": "StdGen", "data": null, "address": "/IO/Random-Numbers/"}], + "Std.TreeSet.toList": + [{"id": "Std___TreeSet___toList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.toArray": + [{"id": "Std___TreeSet___toArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.size": + [{"id": "Std___TreeSet___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.partition": + [{"id": "Std___TreeSet___partition", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.ofList": + [{"id": "Std___TreeSet___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.ofArray": + [{"id": "Std___TreeSet___ofArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.minD": + [{"id": "Std___TreeSet___minD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.min?": + [{"id": "Std___TreeSet___min___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.min!": + [{"id": "Std___TreeSet___min___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.min": + [{"id": "Std___TreeSet___min", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.merge": + [{"id": "Std___TreeSet___merge", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.maxD": + [{"id": "Std___TreeSet___maxD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.max?": + [{"id": "Std___TreeSet___max___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.max!": + [{"id": "Std___TreeSet___max___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.max": + [{"id": "Std___TreeSet___max", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.isEmpty": + [{"id": "Std___TreeSet___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.insertMany": + [{"id": "Std___TreeSet___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.insert": + [{"id": "Std___TreeSet___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLTD": + [{"id": "Std___TreeSet___getLTD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLT?": + [{"id": "Std___TreeSet___getLT___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLT!": + [{"id": "Std___TreeSet___getLT___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLT": + [{"id": "Std___TreeSet___getLT", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLED": + [{"id": "Std___TreeSet___getLED", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLE?": + [{"id": "Std___TreeSet___getLE___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLE!": + [{"id": "Std___TreeSet___getLE___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getLE": + [{"id": "Std___TreeSet___getLE", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGTD": + [{"id": "Std___TreeSet___getGTD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGT?": + [{"id": "Std___TreeSet___getGT___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGT!": + [{"id": "Std___TreeSet___getGT___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGT": + [{"id": "Std___TreeSet___getGT", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGED": + [{"id": "Std___TreeSet___getGED", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGE?": + [{"id": "Std___TreeSet___getGE___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGE!": + [{"id": "Std___TreeSet___getGE___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getGE": + [{"id": "Std___TreeSet___getGE", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.getD": + [{"id": "Std___TreeSet___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.get?": + [{"id": "Std___TreeSet___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.get!": + [{"id": "Std___TreeSet___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.get": + [{"id": "Std___TreeSet___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.forM": + [{"id": "Std___TreeSet___forM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.forIn": + [{"id": "Std___TreeSet___forIn", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.foldrM": + [{"id": "Std___TreeSet___foldrM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.foldr": + [{"id": "Std___TreeSet___foldr", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.foldlM": + [{"id": "Std___TreeSet___foldlM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.foldl": + [{"id": "Std___TreeSet___foldl", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.filter": + [{"id": "Std___TreeSet___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.eraseMany": + [{"id": "Std___TreeSet___eraseMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.erase": + [{"id": "Std___TreeSet___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.empty": + [{"id": "Std___TreeSet___empty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.containsThenInsert": + [{"id": "Std___TreeSet___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.contains": + [{"id": "Std___TreeSet___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.atIdxD": + [{"id": "Std___TreeSet___atIdxD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.atIdx?": + [{"id": "Std___TreeSet___atIdx___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.atIdx!": + [{"id": "Std___TreeSet___atIdx___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.atIdx": + [{"id": "Std___TreeSet___atIdx", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.any": + [{"id": "Std___TreeSet___any", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.all": + [{"id": "Std___TreeSet___all", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.Raw.mk": + [{"id": "Std___TreeSet___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.Raw.inner": + [{"id": "Std___TreeSet___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.Raw.WF.out": + [{"id": "Std___TreeSet___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.Raw.WF.mk": + [{"id": "Std___TreeSet___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.Raw.WF": + [{"id": "Std___TreeSet___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet.Raw": + [{"id": "Std___TreeSet___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeSet": + [{"id": "Std___TreeSet", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.valuesArray": + [{"id": "Std___TreeMap___valuesArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.values": + [{"id": "Std___TreeMap___values", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.unitOfList": + [{"id": "Std___TreeMap___unitOfList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.unitOfArray": + [{"id": "Std___TreeMap___unitOfArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.toList": + [{"id": "Std___TreeMap___toList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.toArray": + [{"id": "Std___TreeMap___toArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.size": + [{"id": "Std___TreeMap___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.partition": + [{"id": "Std___TreeMap___partition", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.ofList": + [{"id": "Std___TreeMap___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.ofArray": + [{"id": "Std___TreeMap___ofArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.modify": + [{"id": "Std___TreeMap___modify", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minKeyD": + [{"id": "Std___TreeMap___minKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minKey?": + [{"id": "Std___TreeMap___minKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minKey!": + [{"id": "Std___TreeMap___minKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minKey": + [{"id": "Std___TreeMap___minKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minEntryD": + [{"id": "Std___TreeMap___minEntryD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minEntry?": + [{"id": "Std___TreeMap___minEntry___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minEntry!": + [{"id": "Std___TreeMap___minEntry___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.minEntry": + [{"id": "Std___TreeMap___minEntry", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.mergeWith": + [{"id": "Std___TreeMap___mergeWith", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxKeyD": + [{"id": "Std___TreeMap___maxKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxKey?": + [{"id": "Std___TreeMap___maxKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxKey!": + [{"id": "Std___TreeMap___maxKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxKey": + [{"id": "Std___TreeMap___maxKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxEntryD": + [{"id": "Std___TreeMap___maxEntryD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxEntry?": + [{"id": "Std___TreeMap___maxEntry___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxEntry!": + [{"id": "Std___TreeMap___maxEntry___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.maxEntry": + [{"id": "Std___TreeMap___maxEntry", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.map": + [{"id": "Std___TreeMap___map", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.keysArray": + [{"id": "Std___TreeMap___keysArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.keys": + [{"id": "Std___TreeMap___keys", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.keyAtIdxD": + [{"id": "Std___TreeMap___keyAtIdxD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.keyAtIdx?": + [{"id": "Std___TreeMap___keyAtIdx___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.keyAtIdx!": + [{"id": "Std___TreeMap___keyAtIdx___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.keyAtIdx": + [{"id": "Std___TreeMap___keyAtIdx", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.isEmpty": + [{"id": "Std___TreeMap___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.insertManyIfNewUnit": + [{"id": "Std___TreeMap___insertManyIfNewUnit", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.insertMany": + [{"id": "Std___TreeMap___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.insertIfNew": + [{"id": "Std___TreeMap___insertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.insert": + [{"id": "Std___TreeMap___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getThenInsertIfNew?": + [{"id": "Std___TreeMap___getThenInsertIfNew___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLTD": + [{"id": "Std___TreeMap___getKeyLTD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLT?": + [{"id": "Std___TreeMap___getKeyLT___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLT!": + [{"id": "Std___TreeMap___getKeyLT___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLT": + [{"id": "Std___TreeMap___getKeyLT", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLED": + [{"id": "Std___TreeMap___getKeyLED", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLE?": + [{"id": "Std___TreeMap___getKeyLE___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLE!": + [{"id": "Std___TreeMap___getKeyLE___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyLE": + [{"id": "Std___TreeMap___getKeyLE", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGTD": + [{"id": "Std___TreeMap___getKeyGTD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGT?": + [{"id": "Std___TreeMap___getKeyGT___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGT!": + [{"id": "Std___TreeMap___getKeyGT___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGT": + [{"id": "Std___TreeMap___getKeyGT", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGED": + [{"id": "Std___TreeMap___getKeyGED", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGE?": + [{"id": "Std___TreeMap___getKeyGE___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGE!": + [{"id": "Std___TreeMap___getKeyGE___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyGE": + [{"id": "Std___TreeMap___getKeyGE", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKeyD": + [{"id": "Std___TreeMap___getKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKey?": + [{"id": "Std___TreeMap___getKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKey!": + [{"id": "Std___TreeMap___getKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getKey": + [{"id": "Std___TreeMap___getKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLTD": + [{"id": "Std___TreeMap___getEntryLTD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLT?": + [{"id": "Std___TreeMap___getEntryLT___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLT!": + [{"id": "Std___TreeMap___getEntryLT___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLT": + [{"id": "Std___TreeMap___getEntryLT", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLED": + [{"id": "Std___TreeMap___getEntryLED", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLE?": + [{"id": "Std___TreeMap___getEntryLE___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLE!": + [{"id": "Std___TreeMap___getEntryLE___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryLE": + [{"id": "Std___TreeMap___getEntryLE", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGTD": + [{"id": "Std___TreeMap___getEntryGTD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGT?": + [{"id": "Std___TreeMap___getEntryGT___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGT!": + [{"id": "Std___TreeMap___getEntryGT___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGT": + [{"id": "Std___TreeMap___getEntryGT", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGED": + [{"id": "Std___TreeMap___getEntryGED", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGE?": + [{"id": "Std___TreeMap___getEntryGE___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGE!": + [{"id": "Std___TreeMap___getEntryGE___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getEntryGE": + [{"id": "Std___TreeMap___getEntryGE", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.getD": + [{"id": "Std___TreeMap___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.get?": + [{"id": "Std___TreeMap___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.get!": + [{"id": "Std___TreeMap___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.get": + [{"id": "Std___TreeMap___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.forM": + [{"id": "Std___TreeMap___forM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.forIn": + [{"id": "Std___TreeMap___forIn", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.foldrM": + [{"id": "Std___TreeMap___foldrM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.foldr": + [{"id": "Std___TreeMap___foldr", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.foldlM": + [{"id": "Std___TreeMap___foldlM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.foldl": + [{"id": "Std___TreeMap___foldl", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.filterMap": + [{"id": "Std___TreeMap___filterMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.filter": + [{"id": "Std___TreeMap___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.eraseMany": + [{"id": "Std___TreeMap___eraseMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.erase": + [{"id": "Std___TreeMap___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.entryAtIdxD": + [{"id": "Std___TreeMap___entryAtIdxD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.entryAtIdx?": + [{"id": "Std___TreeMap___entryAtIdx___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.entryAtIdx!": + [{"id": "Std___TreeMap___entryAtIdx___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.entryAtIdx": + [{"id": "Std___TreeMap___entryAtIdx", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.empty": + [{"id": "Std___TreeMap___empty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.containsThenInsertIfNew": + [{"id": "Std___TreeMap___containsThenInsertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.containsThenInsert": + [{"id": "Std___TreeMap___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.contains": + [{"id": "Std___TreeMap___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.any": + [{"id": "Std___TreeMap___any", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.alter": + [{"id": "Std___TreeMap___alter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.all": + [{"id": "Std___TreeMap___all", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.Raw.mk": + [{"id": "Std___TreeMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.Raw.inner": + [{"id": "Std___TreeMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.Raw.WF.out": + [{"id": "Std___TreeMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.Raw.WF.mk": + [{"id": "Std___TreeMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.Raw.WF": + [{"id": "Std___TreeMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap.Raw": + [{"id": "Std___TreeMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.TreeMap": + [{"id": "Std___TreeMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ToFormat.mk": + [{"id": "Std___ToFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.ToFormat.format": + [{"id": "Std___ToFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.ToFormat": + [{"id": "Std___ToFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Mutex.new": + [{"id": "Std___Mutex___new", + "data": null, + "address": "/IO/Tasks-and-Threads/"}], + "Std.Mutex.atomicallyOnce": + [{"id": "Std___Mutex___atomicallyOnce", + "data": null, + "address": "/IO/Tasks-and-Threads/"}], + "Std.Mutex.atomically": + [{"id": "Std___Mutex___atomically", + "data": null, + "address": "/IO/Tasks-and-Threads/"}], + "Std.Mutex": + [{"id": "Std___Mutex", + "data": null, + "address": "/IO/Tasks-and-Threads/"}], + "Std.HashSet.union": + [{"id": "Std___HashSet___union", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.toList": + [{"id": "Std___HashSet___toList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.toArray": + [{"id": "Std___HashSet___toArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.size": + [{"id": "Std___HashSet___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.partition": + [{"id": "Std___HashSet___partition", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.ofList": + [{"id": "Std___HashSet___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.ofArray": + [{"id": "Std___HashSet___ofArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.mk": + [{"id": "Std___HashSet___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.isEmpty": + [{"id": "Std___HashSet___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.insertMany": + [{"id": "Std___HashSet___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.insert": + [{"id": "Std___HashSet___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.inner": + [{"id": "Std___HashSet___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.getD": + [{"id": "Std___HashSet___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.get?": + [{"id": "Std___HashSet___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.get!": + [{"id": "Std___HashSet___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.get": + [{"id": "Std___HashSet___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.forM": + [{"id": "Std___HashSet___forM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.forIn": + [{"id": "Std___HashSet___forIn", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.foldM": + [{"id": "Std___HashSet___foldM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.fold": + [{"id": "Std___HashSet___fold", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.filter": + [{"id": "Std___HashSet___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.erase": + [{"id": "Std___HashSet___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.emptyWithCapacity": + [{"id": "Std___HashSet___emptyWithCapacity", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.containsThenInsert": + [{"id": "Std___HashSet___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.contains": + [{"id": "Std___HashSet___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.any": + [{"id": "Std___HashSet___any", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.all": + [{"id": "Std___HashSet___all", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Raw.mk": + [{"id": "Std___HashSet___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Raw.inner": + [{"id": "Std___HashSet___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Raw.WF.out": + [{"id": "Std___HashSet___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Raw.WF.mk": + [{"id": "Std___HashSet___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Raw.WF": + [{"id": "Std___HashSet___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Raw": + [{"id": "Std___HashSet___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Equiv.mk": + [{"id": "Std___HashSet___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Equiv.inner": + [{"id": "Std___HashSet___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet.Equiv": + [{"id": "Std___HashSet___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashSet": + [{"id": "Std___HashSet___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.valuesArray": + [{"id": "Std___HashMap___valuesArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.values": + [{"id": "Std___HashMap___values", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.unitOfList": + [{"id": "Std___HashMap___unitOfList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.unitOfArray": + [{"id": "Std___HashMap___unitOfArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.union": + [{"id": "Std___HashMap___union", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.toList": + [{"id": "Std___HashMap___toList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.toArray": + [{"id": "Std___HashMap___toArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.size": + [{"id": "Std___HashMap___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.partition": + [{"id": "Std___HashMap___partition", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.ofList": + [{"id": "Std___HashMap___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.modify": + [{"id": "Std___HashMap___modify", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.map": + [{"id": "Std___HashMap___map", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.keysArray": + [{"id": "Std___HashMap___keysArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.keys": + [{"id": "Std___HashMap___keys", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.isEmpty": + [{"id": "Std___HashMap___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.insertManyIfNewUnit": + [{"id": "Std___HashMap___insertManyIfNewUnit", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.insertMany": + [{"id": "Std___HashMap___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.insertIfNew": + [{"id": "Std___HashMap___insertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.insert": + [{"id": "Std___HashMap___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.getThenInsertIfNew?": + [{"id": "Std___HashMap___getThenInsertIfNew___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.getKeyD": + [{"id": "Std___HashMap___getKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.getKey?": + [{"id": "Std___HashMap___getKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.getKey!": + [{"id": "Std___HashMap___getKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.getKey": + [{"id": "Std___HashMap___getKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.getD": + [{"id": "Std___HashMap___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.get?": + [{"id": "Std___HashMap___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.get!": + [{"id": "Std___HashMap___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.get": + [{"id": "Std___HashMap___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.forM": + [{"id": "Std___HashMap___forM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.forIn": + [{"id": "Std___HashMap___forIn", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.foldM": + [{"id": "Std___HashMap___foldM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.fold": + [{"id": "Std___HashMap___fold", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.filterMap": + [{"id": "Std___HashMap___filterMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.filter": + [{"id": "Std___HashMap___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.erase": + [{"id": "Std___HashMap___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.emptyWithCapacity": + [{"id": "Std___HashMap___emptyWithCapacity", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.containsThenInsertIfNew": + [{"id": "Std___HashMap___containsThenInsertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.containsThenInsert": + [{"id": "Std___HashMap___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.contains": + [{"id": "Std___HashMap___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.alter": + [{"id": "Std___HashMap___alter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Raw.mk": + [{"id": "Std___HashMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Raw.inner": + [{"id": "Std___HashMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Raw.WF.out": + [{"id": "Std___HashMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Raw.WF.mk": + [{"id": "Std___HashMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Raw.WF": + [{"id": "Std___HashMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Raw": + [{"id": "Std___HashMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Equiv.mk": + [{"id": "Std___HashMap___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Equiv.inner": + [{"id": "Std___HashMap___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap.Equiv": + [{"id": "Std___HashMap___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.HashMap": + [{"id": "Std___HashMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.Format.text": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.tag": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.sbracket": + [{"id": "Std___Format___sbracket", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.prettyM": + [{"id": "Std___Format___prettyM", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.pretty": + [{"id": "Std___Format___pretty", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.prefixJoin": + [{"id": "Std___Format___prefixJoin", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.paren": + [{"id": "Std___Format___paren", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.nil": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.nestD": + [{"id": "Std___Format___nestD", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.nest": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.line": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.joinSuffix": + [{"id": "Std___Format___joinSuffix", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.joinSep": + [{"id": "Std___Format___joinSep", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.join": + [{"id": "Std___Format___join", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.isNil": + [{"id": "Std___Format___isNil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.isEmpty": + [{"id": "Std___Format___isEmpty", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.indentD": + [{"id": "Std___Format___indentD", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.group": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.fill": + [{"id": "Std___Format___fill", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.defWidth": + [{"id": "Std___Format___defWidth", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.defIndent": + [{"id": "Std___Format___defIndent", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.bracketFill": + [{"id": "Std___Format___bracketFill", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.bracket": + [{"id": "Std___Format___bracket", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.append": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.align": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat.startTag": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat.pushOutput": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat.pushNewline": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat.mk": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat.endTags": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat.currColumn": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.MonadPrettyFormat": + [{"id": "Std___Format___MonadPrettyFormat___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.FlattenBehavior.fill": + [{"id": "Std___Format___FlattenBehavior___allOrNone", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.FlattenBehavior.allOrNone": + [{"id": "Std___Format___FlattenBehavior___allOrNone", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format.FlattenBehavior": + [{"id": "Std___Format___FlattenBehavior___allOrNone", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.Format": + [{"id": "Std___Format___nil", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Std.ExtHashSet.size": + [{"id": "Std___ExtHashSet___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.ofList": + [{"id": "Std___ExtHashSet___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.ofArray": + [{"id": "Std___ExtHashSet___ofArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.mk": + [{"id": "Std___ExtHashSet___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.isEmpty": + [{"id": "Std___ExtHashSet___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.insertMany": + [{"id": "Std___ExtHashSet___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.insert": + [{"id": "Std___ExtHashSet___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.inner": + [{"id": "Std___ExtHashSet___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.getD": + [{"id": "Std___ExtHashSet___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.get?": + [{"id": "Std___ExtHashSet___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.get!": + [{"id": "Std___ExtHashSet___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.get": + [{"id": "Std___ExtHashSet___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.filter": + [{"id": "Std___ExtHashSet___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.erase": + [{"id": "Std___ExtHashSet___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.emptyWithCapacity": + [{"id": "Std___ExtHashSet___emptyWithCapacity", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.containsThenInsert": + [{"id": "Std___ExtHashSet___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet.contains": + [{"id": "Std___ExtHashSet___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashSet": + [{"id": "Std___ExtHashSet___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.unitOfList": + [{"id": "Std___ExtHashMap___unitOfList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.unitOfArray": + [{"id": "Std___ExtHashMap___unitOfArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.size": + [{"id": "Std___ExtHashMap___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.ofList": + [{"id": "Std___ExtHashMap___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.modify": + [{"id": "Std___ExtHashMap___modify", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.map": + [{"id": "Std___ExtHashMap___map", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.isEmpty": + [{"id": "Std___ExtHashMap___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.insertManyIfNewUnit": + [{"id": "Std___ExtHashMap___insertManyIfNewUnit", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.insertMany": + [{"id": "Std___ExtHashMap___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.insertIfNew": + [{"id": "Std___ExtHashMap___insertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.insert": + [{"id": "Std___ExtHashMap___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.getThenInsertIfNew?": + [{"id": "Std___ExtHashMap___getThenInsertIfNew___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.getKeyD": + [{"id": "Std___ExtHashMap___getKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.getKey?": + [{"id": "Std___ExtHashMap___getKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.getKey!": + [{"id": "Std___ExtHashMap___getKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.getKey": + [{"id": "Std___ExtHashMap___getKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.getD": + [{"id": "Std___ExtHashMap___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.get?": + [{"id": "Std___ExtHashMap___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.get!": + [{"id": "Std___ExtHashMap___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.get": + [{"id": "Std___ExtHashMap___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.filterMap": + [{"id": "Std___ExtHashMap___filterMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.filter": + [{"id": "Std___ExtHashMap___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.erase": + [{"id": "Std___ExtHashMap___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.emptyWithCapacity": + [{"id": "Std___ExtHashMap___emptyWithCapacity", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.containsThenInsertIfNew": + [{"id": "Std___ExtHashMap___containsThenInsertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.containsThenInsert": + [{"id": "Std___ExtHashMap___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.contains": + [{"id": "Std___ExtHashMap___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap.alter": + [{"id": "Std___ExtHashMap___alter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtHashMap": + [{"id": "Std___ExtHashMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.size": + [{"id": "Std___ExtDHashMap___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.ofList": + [{"id": "Std___ExtDHashMap___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.modify": + [{"id": "Std___ExtDHashMap___modify", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.map": + [{"id": "Std___ExtDHashMap___map", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.isEmpty": + [{"id": "Std___ExtDHashMap___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.insertMany": + [{"id": "Std___ExtDHashMap___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.insertIfNew": + [{"id": "Std___ExtDHashMap___insertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.insert": + [{"id": "Std___ExtDHashMap___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.getThenInsertIfNew?": + [{"id": "Std___ExtDHashMap___getThenInsertIfNew___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.getKeyD": + [{"id": "Std___ExtDHashMap___getKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.getKey?": + [{"id": "Std___ExtDHashMap___getKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.getKey!": + [{"id": "Std___ExtDHashMap___getKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.getKey": + [{"id": "Std___ExtDHashMap___getKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.getD": + [{"id": "Std___ExtDHashMap___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.get?": + [{"id": "Std___ExtDHashMap___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.get!": + [{"id": "Std___ExtDHashMap___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.get": + [{"id": "Std___ExtDHashMap___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.filterMap": + [{"id": "Std___ExtDHashMap___filterMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.filter": + [{"id": "Std___ExtDHashMap___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.erase": + [{"id": "Std___ExtDHashMap___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.emptyWithCapacity": + [{"id": "Std___ExtDHashMap___emptyWithCapacity", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.containsThenInsertIfNew": + [{"id": "Std___ExtDHashMap___containsThenInsertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.containsThenInsert": + [{"id": "Std___ExtDHashMap___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.contains": + [{"id": "Std___ExtDHashMap___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap.alter": + [{"id": "Std___ExtDHashMap___alter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.ExtDHashMap": + [{"id": "Std___ExtDHashMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.valuesArray": + [{"id": "Std___DTreeMap___valuesArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.values": + [{"id": "Std___DTreeMap___values", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.toList": + [{"id": "Std___DTreeMap___toList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.toArray": + [{"id": "Std___DTreeMap___toArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.size": + [{"id": "Std___DTreeMap___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.partition": + [{"id": "Std___DTreeMap___partition", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.ofList": + [{"id": "Std___DTreeMap___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.modify": + [{"id": "Std___DTreeMap___modify", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.map": + [{"id": "Std___DTreeMap___map", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.keysArray": + [{"id": "Std___DTreeMap___keysArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.keys": + [{"id": "Std___DTreeMap___keys", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.isEmpty": + [{"id": "Std___DTreeMap___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.insertMany": + [{"id": "Std___DTreeMap___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.insertIfNew": + [{"id": "Std___DTreeMap___insertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.insert": + [{"id": "Std___DTreeMap___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.getThenInsertIfNew?": + [{"id": "Std___DTreeMap___getThenInsertIfNew___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.getKeyD": + [{"id": "Std___DTreeMap___getKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.getKey?": + [{"id": "Std___DTreeMap___getKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.getKey!": + [{"id": "Std___DTreeMap___getKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.getKey": + [{"id": "Std___DTreeMap___getKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.getD": + [{"id": "Std___DTreeMap___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.get?": + [{"id": "Std___DTreeMap___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.get!": + [{"id": "Std___DTreeMap___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.get": + [{"id": "Std___DTreeMap___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.forM": + [{"id": "Std___DTreeMap___forM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.forIn": + [{"id": "Std___DTreeMap___forIn", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.foldlM": + [{"id": "Std___DTreeMap___foldlM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.foldl": + [{"id": "Std___DTreeMap___foldl", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.filterMap": + [{"id": "Std___DTreeMap___filterMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.filter": + [{"id": "Std___DTreeMap___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.erase": + [{"id": "Std___DTreeMap___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.empty": + [{"id": "Std___DTreeMap___empty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.containsThenInsertIfNew": + [{"id": "Std___DTreeMap___containsThenInsertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.containsThenInsert": + [{"id": "Std___DTreeMap___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.contains": + [{"id": "Std___DTreeMap___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.alter": + [{"id": "Std___DTreeMap___alter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.Raw.mk": + [{"id": "Std___DTreeMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.Raw.inner": + [{"id": "Std___DTreeMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.Raw.WF.out": + [{"id": "Std___DTreeMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.Raw.WF.mk": + [{"id": "Std___DTreeMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.Raw.WF": + [{"id": "Std___DTreeMap___Raw___WF___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap.Raw": + [{"id": "Std___DTreeMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DTreeMap": + [{"id": "Std___DTreeMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.valuesArray": + [{"id": "Std___DHashMap___valuesArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.values": + [{"id": "Std___DHashMap___values", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.union": + [{"id": "Std___DHashMap___union", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.toList": + [{"id": "Std___DHashMap___toList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.toArray": + [{"id": "Std___DHashMap___toArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.size": + [{"id": "Std___DHashMap___size", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.partition": + [{"id": "Std___DHashMap___partition", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.ofList": + [{"id": "Std___DHashMap___ofList", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.modify": + [{"id": "Std___DHashMap___modify", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.map": + [{"id": "Std___DHashMap___map", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.keysArray": + [{"id": "Std___DHashMap___keysArray", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.keys": + [{"id": "Std___DHashMap___keys", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.isEmpty": + [{"id": "Std___DHashMap___isEmpty", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.insertMany": + [{"id": "Std___DHashMap___insertMany", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.insertIfNew": + [{"id": "Std___DHashMap___insertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.insert": + [{"id": "Std___DHashMap___insert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.getThenInsertIfNew?": + [{"id": "Std___DHashMap___getThenInsertIfNew___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.getKeyD": + [{"id": "Std___DHashMap___getKeyD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.getKey?": + [{"id": "Std___DHashMap___getKey___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.getKey!": + [{"id": "Std___DHashMap___getKey___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.getKey": + [{"id": "Std___DHashMap___getKey", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.getD": + [{"id": "Std___DHashMap___getD", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.get?": + [{"id": "Std___DHashMap___get___-next", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.get!": + [{"id": "Std___DHashMap___get___", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.get": + [{"id": "Std___DHashMap___get", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.forM": + [{"id": "Std___DHashMap___forM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.forIn": + [{"id": "Std___DHashMap___forIn", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.foldM": + [{"id": "Std___DHashMap___foldM", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.fold": + [{"id": "Std___DHashMap___fold", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.filterMap": + [{"id": "Std___DHashMap___filterMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.filter": + [{"id": "Std___DHashMap___filter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.erase": + [{"id": "Std___DHashMap___erase", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.emptyWithCapacity": + [{"id": "Std___DHashMap___emptyWithCapacity", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.containsThenInsertIfNew": + [{"id": "Std___DHashMap___containsThenInsertIfNew", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.containsThenInsert": + [{"id": "Std___DHashMap___containsThenInsert", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.contains": + [{"id": "Std___DHashMap___contains", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.alter": + [{"id": "Std___DHashMap___alter", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.size": + [{"id": "Std___DHashMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.mk": + [{"id": "Std___DHashMap___Raw___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.buckets": + [{"id": "Std___DHashMap___Raw___mk", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.prevn": - [{"id": "String___Iterator___prevn", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.wf": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.prev": - [{"id": "String___Iterator___prev", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.modify₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.pos": - [{"id": "String___Iterator___pos", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.insert₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.nextn": - [{"id": "String___Iterator___nextn", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.insertIfNew₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.next": - [{"id": "String___Iterator___next", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.getThenInsertIfNew?₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.mk": - [{"id": "String___Iterator___mk", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.filter₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.i": - [{"id": "String___Iterator___mk", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.erase₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.hasPrev": - [{"id": "String___Iterator___hasPrev", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.emptyWithCapacity₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.hasNext": - [{"id": "String___Iterator___hasNext", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.containsThenInsert₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.forward": - [{"id": "String___Iterator___forward", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.containsThenInsertIfNew₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.extract": - [{"id": "String___Iterator___extract", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.constModify₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.curr": - [{"id": "String___Iterator___curr", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.constGetThenInsertIfNew?₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator.atEnd": - [{"id": "String___Iterator___atEnd", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.constAlter₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String.Iterator": - [{"id": "String___Iterator___mk", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF.alter₀": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/Basic-Types/Strings/"}], - "String": - [{"id": "String___mk", "data": null, "address": "/Basic-Types/Strings/"}], - "StdGen": - [{"id": "StdGen", "data": null, "address": "/IO/Random-Numbers/"}], - "Std.Mutex.new": - [{"id": "Std___Mutex___new", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw.WF": + [{"id": "Std___DHashMap___Raw___WF___wf", "data": null, - "address": "/IO/Tasks-and-Threads/"}], - "Std.Mutex.atomicallyOnce": - [{"id": "Std___Mutex___atomicallyOnce", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Raw": + [{"id": "Std___DHashMap___Raw___mk", "data": null, - "address": "/IO/Tasks-and-Threads/"}], - "Std.Mutex.atomically": - [{"id": "Std___Mutex___atomically", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Equiv.mk": + [{"id": "Std___DHashMap___Equiv___mk", "data": null, - "address": "/IO/Tasks-and-Threads/"}], - "Std.Mutex": - [{"id": "Std___Mutex", + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Equiv.inner": + [{"id": "Std___DHashMap___Equiv___mk", "data": null, - "address": "/IO/Tasks-and-Threads/"}], + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.Equiv": + [{"id": "Std___DHashMap___Equiv___mk", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap": + [{"id": "Std___DHashMap", + "data": null, + "address": "/Basic-Types/Maps-and-Sets/"}], "Std.Condvar.waitUntil": [{"id": "Std___Condvar___waitUntil", "data": null, @@ -15851,6 +32709,14 @@ [{"id": "Std___Condvar", "data": null, "address": "/IO/Tasks-and-Threads/"}], + "Std.CloseableChannel.new": + [{"id": "Std___CloseableChannel___new", + "data": null, + "address": "/IO/Tasks-and-Threads/"}], + "Std.CloseableChannel": + [{"id": "Std___CloseableChannel", + "data": null, + "address": "/IO/Tasks-and-Threads/"}], "Std.Channel.sync": [{"id": "Std___Channel___sync", "data": null, @@ -15859,12 +32725,8 @@ [{"id": "Std___Channel___send", "data": null, "address": "/IO/Tasks-and-Threads/"}], - "Std.Channel.recvAllCurrent": - [{"id": "Std___Channel___recvAllCurrent", - "data": null, - "address": "/IO/Tasks-and-Threads/"}], - "Std.Channel.recv?": - [{"id": "Std___Channel___recv___", + "Std.Channel.recv": + [{"id": "Std___Channel___recv", "data": null, "address": "/IO/Tasks-and-Threads/"}], "Std.Channel.new": @@ -15875,14 +32737,6 @@ [{"id": "Std___Channel___forAsync", "data": null, "address": "/IO/Tasks-and-Threads/"}], - "Std.Channel.close": - [{"id": "Std___Channel___close", - "data": null, - "address": "/IO/Tasks-and-Threads/"}], - "Std.Channel.Sync.recv?": - [{"id": "Std___Channel___Sync___recv___", - "data": null, - "address": "/IO/Tasks-and-Threads/"}], "Std.Channel.Sync": [{"id": "Std___Channel___Sync", "data": null, @@ -16199,6 +33053,24 @@ "data": null, "address": "/IO/Mutable-References/"}], "ST": [{"id": "ST", "data": null, "address": "/IO/Mutable-References/"}], + "ReprAtom.mk": + [{"id": "ReprAtom___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "ReprAtom": + [{"id": "ReprAtom___mk", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Repr.reprPrec": + [{"id": "Repr___mk", "data": null, "address": "/Interacting-with-Lean/"}], + "Repr.mk": + [{"id": "Repr___mk", "data": null, "address": "/Interacting-with-Lean/"}], + "Repr.addAppParen": + [{"id": "Repr___addAppParen", + "data": null, + "address": "/Interacting-with-Lean/"}], + "Repr": + [{"id": "Repr___mk", "data": null, "address": "/Interacting-with-Lean/"}], "ReaderT.run": [{"id": "ReaderT___run", "data": null, @@ -16703,10 +33575,6 @@ [{"id": "Option___lt", "data": null, "address": "/Basic-Types/Optional-Values/"}], - "Option.liftOrGet": - [{"id": "Option___liftOrGet", - "data": null, - "address": "/Basic-Types/Optional-Values/"}], "Option.join": [{"id": "Option___join", "data": null, @@ -16767,8 +33635,8 @@ [{"id": "Option___elim", "data": null, "address": "/Basic-Types/Optional-Values/"}], - "Option.decidable_eq_none": - [{"id": "Option___decidable_eq_none", + "Option.decidableEqNone": + [{"id": "Option___decidableEqNone", "data": null, "address": "/Basic-Types/Optional-Values/"}], "Option.choice": @@ -18658,6 +35526,10 @@ "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], "Lean.Meta.Simp.Config.zetaUnused": + [{"id": "Lean___Meta___Simp___Config___mk", + "data": null, + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.Meta.Simp.Config.zetaHave": [{"id": "Lean___Meta___Simp___Config___mk", "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], @@ -18694,6 +35566,10 @@ "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], "Lean.Meta.Simp.Config.maxDischargeDepth": + [{"id": "Lean___Meta___Simp___Config___mk", + "data": null, + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.Meta.Simp.Config.letToHave": [{"id": "Lean___Meta___Simp___Config___mk", "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], @@ -18734,6 +35610,18 @@ "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], "Lean.Meta.Simp.Config.contextual": + [{"id": "Lean___Meta___Simp___Config___mk", + "data": null, + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.Meta.Simp.Config.congrConsts": + [{"id": "Lean___Meta___Simp___Config___mk", + "data": null, + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.Meta.Simp.Config.catchRuntime": + [{"id": "Lean___Meta___Simp___Config___mk", + "data": null, + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.Meta.Simp.Config.bitVecOfNat": [{"id": "Lean___Meta___Simp___Config___mk", "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], @@ -18798,6 +35686,10 @@ "data": null, "address": "/Tactic-Proofs/Tactic-Reference/"}], "Lean.Meta.DSimp.Config.zetaUnused": + [{"id": "Lean___Meta___DSimp___Config___mk", + "data": null, + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.Meta.DSimp.Config.zetaHave": [{"id": "Lean___Meta___DSimp___Config___mk", "data": null, "address": "/The-Simplifier/Configuring-Simplification/"}], @@ -18856,59 +35748,430 @@ "Lean.Meta.DSimp.Config": [{"id": "Lean___Meta___DSimp___Config___mk", "data": null, - "address": "/The-Simplifier/Configuring-Simplification/"}], - "Lean.MacroM": - [{"id": "Lean___MacroM", + "address": "/The-Simplifier/Configuring-Simplification/"}], + "Lean.MacroM": + [{"id": "Lean___MacroM", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.withFreshMacroScope": + [{"id": "Lean___Macro___withFreshMacroScope", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.trace": + [{"id": "Lean___Macro___trace", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.throwUnsupported": + [{"id": "Lean___Macro___throwUnsupported", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.throwErrorAt": + [{"id": "Lean___Macro___throwErrorAt", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.throwError": + [{"id": "Lean___Macro___throwError", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.resolveNamespace": + [{"id": "Lean___Macro___resolveNamespace", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.resolveGlobalName": + [{"id": "Lean___Macro___resolveGlobalName", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.hasDecl": + [{"id": "Lean___Macro___hasDecl", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.getCurrNamespace": + [{"id": "Lean___Macro___getCurrNamespace", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.expandMacro?": + [{"id": "Lean___Macro___expandMacro___", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.addMacroScope": + [{"id": "Lean___Macro___addMacroScope", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.Macro.Exception.unsupportedSyntax": + [{"id": "Lean___Macro___Exception___unsupportedSyntax", + "data": null, + "address": "/Notations-and-Macros/Macros/"}], + "Lean.LeanOption.value": + [{"id": "Lean___LeanOption___mk", + "data": null, + "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lean.LeanOption.name": + [{"id": "Lean___LeanOption___mk", + "data": null, + "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lean.LeanOption.mk": + [{"id": "Lean___LeanOption___mk", + "data": null, + "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lean.LeanOption": + [{"id": "Lean___LeanOption___mk", + "data": null, + "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lean.Grind.ToInt.toInt_mem": + [{"id": "Lean___Grind___ToInt___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.ToInt.toInt_inj": + [{"id": "Lean___Grind___ToInt___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.ToInt.toInt": + [{"id": "Lean___Grind___ToInt___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.ToInt.mk": + [{"id": "Lean___Grind___ToInt___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.ToInt": + [{"id": "Lean___Grind___ToInt___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.Semiring.zero_mul": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.toMul": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.toAdd": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.right_distrib": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.pow_zero": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.pow_succ": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.one_mul": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.ofNat_succ": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.ofNat": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.nsmul": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.npow": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.natCast": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.mul_zero": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.mul_one": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.mul_assoc": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.mk": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.left_distrib": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.add_zero": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.add_comm": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring.add_assoc": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Semiring": + [{"id": "Lean___Grind___Semiring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Ring.toSemiring": + [{"id": "Lean___Grind___Ring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Ring.mk": + [{"id": "Lean___Grind___Ring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Ring": + [{"id": "Lean___Grind___Ring___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Preorder.mk": + [{"id": "Lean___Grind___Preorder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.Preorder.lt_iff_le_not_le": + [{"id": "Lean___Grind___Preorder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.Preorder.le_trans": + [{"id": "Lean___Grind___Preorder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.Preorder.le_refl": + [{"id": "Lean___Grind___Preorder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.Preorder": + [{"id": "Lean___Grind___Preorder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.PartialOrder.toPreorder": + [{"id": "Lean___Grind___PartialOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.PartialOrder.mk": + [{"id": "Lean___Grind___PartialOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.PartialOrder": + [{"id": "Lean___Grind___PartialOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedRing.zero_lt_one": + [{"id": "Lean___Grind___OrderedRing___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedRing.toOrderedAdd": + [{"id": "Lean___Grind___OrderedRing___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedRing.mul_lt_mul_of_pos_left": + [{"id": "Lean___Grind___OrderedRing___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedRing.mk": + [{"id": "Lean___Grind___OrderedRing___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedRing": + [{"id": "Lean___Grind___OrderedRing___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedAdd.mk": + [{"id": "Lean___Grind___OrderedAdd___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedAdd.add_le_left_iff": + [{"id": "Lean___Grind___OrderedAdd___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.OrderedAdd": + [{"id": "Lean___Grind___OrderedAdd___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.NoNatZeroDivisors.no_nat_zero_divisors": + [{"id": "Lean___Grind___NoNatZeroDivisors___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.NoNatZeroDivisors.mk'": + [{"id": "Lean___Grind___NoNatZeroDivisors___mk___", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.NoNatZeroDivisors.mk": + [{"id": "Lean___Grind___NoNatZeroDivisors___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.NoNatZeroDivisors": + [{"id": "Lean___Grind___NoNatZeroDivisors___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.NatModule.toAddCommMonoid": + [{"id": "Lean___Grind___NatModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.NatModule.mk": + [{"id": "Lean___Grind___NatModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.NatModule": + [{"id": "Lean___Grind___NatModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.LinearOrder.toPartialOrder": + [{"id": "Lean___Grind___LinearOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.LinearOrder.mk": + [{"id": "Lean___Grind___LinearOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.LinearOrder": + [{"id": "Lean___Grind___LinearOrder___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.IsCharP.ofNat_ext_iff": + [{"id": "Lean___Grind___IsCharP___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.IsCharP.mk": + [{"id": "Lean___Grind___IsCharP___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.IsCharP": + [{"id": "Lean___Grind___IsCharP___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.IntModule.toAddCommGroup": + [{"id": "Lean___Grind___IntModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.IntModule.mk": + [{"id": "Lean___Grind___IntModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.IntModule": + [{"id": "Lean___Grind___IntModule___mk", + "data": null, + "address": "/The--grind--tactic/Linear-Arithmetic-Solver/"}], + "Lean.Grind.IntInterval.io": + [{"id": "Lean___Grind___IntInterval___co", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.IntInterval.ii": + [{"id": "Lean___Grind___IntInterval___co", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.IntInterval.co": + [{"id": "Lean___Grind___IntInterval___co", + "data": null, + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.IntInterval.ci": + [{"id": "Lean___Grind___IntInterval___co", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.withFreshMacroScope": - [{"id": "Lean___Macro___withFreshMacroScope", + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.IntInterval": + [{"id": "Lean___Grind___IntInterval___co", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.trace": - [{"id": "Lean___Macro___trace", + "address": "/The--grind--tactic/Linear-Integer-Arithmetic/"}], + "Lean.Grind.Field.toCommRing": + [{"id": "Lean___Grind___Field___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.throwUnsupported": - [{"id": "Lean___Macro___throwUnsupported", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Field.mk": + [{"id": "Lean___Grind___Field___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.throwErrorAt": - [{"id": "Lean___Macro___throwErrorAt", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.Field": + [{"id": "Lean___Grind___Field___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.throwError": - [{"id": "Lean___Macro___throwError", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.CommSemiring.toSemiring": + [{"id": "Lean___Grind___CommSemiring___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.resolveNamespace": - [{"id": "Lean___Macro___resolveNamespace", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.CommSemiring.mk": + [{"id": "Lean___Grind___CommSemiring___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.resolveGlobalName": - [{"id": "Lean___Macro___resolveGlobalName", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.CommSemiring": + [{"id": "Lean___Grind___CommSemiring___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.hasDecl": - [{"id": "Lean___Macro___hasDecl", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.CommRing.toRing": + [{"id": "Lean___Grind___CommRing___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.getCurrNamespace": - [{"id": "Lean___Macro___getCurrNamespace", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.CommRing.mk": + [{"id": "Lean___Grind___CommRing___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.expandMacro?": - [{"id": "Lean___Macro___expandMacro___", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.CommRing": + [{"id": "Lean___Grind___CommRing___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.addMacroScope": - [{"id": "Lean___Macro___addMacroScope", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.AddRightCancel.mk": + [{"id": "Lean___Grind___AddRightCancel___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], - "Lean.Macro.Exception.unsupportedSyntax": - [{"id": "Lean___Macro___Exception___unsupportedSyntax", + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.AddRightCancel.add_right_cancel": + [{"id": "Lean___Grind___AddRightCancel___mk", "data": null, - "address": "/Notations-and-Macros/Macros/"}], + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], + "Lean.Grind.AddRightCancel": + [{"id": "Lean___Grind___AddRightCancel___mk", + "data": null, + "address": + "/The--grind--tactic/Algebraic-Solver-_LPAR_Commutative-Rings___-Fields_RPAR_/"}], "Lean.Elab.registerDerivingHandler": [{"id": "Lean___Elab___registerDerivingHandler", "data": null, @@ -18977,15 +36240,11 @@ [{"id": "LawfulFunctor___mk", "data": null, "address": "/Functors___-Monads-and--do--Notation/Laws/"}], - "LawfulBEq.rfl": + "LawfulBEq.toReflBEq": [{"id": "LawfulBEq___mk", "data": null, "address": "/Type-Classes/Basic-Classes/"}], "LawfulBEq.mk": - [{"id": "LawfulBEq___mk", - "data": null, - "address": "/Type-Classes/Basic-Classes/"}], - "LawfulBEq.eq_of_beq": [{"id": "LawfulBEq___mk", "data": null, "address": "/Type-Classes/Basic-Classes/"}], @@ -19204,22 +36463,6 @@ [{"id": "Lake___MonadLakeEnv", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], - "Lake.LeanOption.value": - [{"id": "Lake___LeanOption___mk", - "data": null, - "address": "/Build-Tools-and-Distribution/Lake/"}], - "Lake.LeanOption.name": - [{"id": "Lake___LeanOption___mk", - "data": null, - "address": "/Build-Tools-and-Distribution/Lake/"}], - "Lake.LeanOption.mk": - [{"id": "Lake___LeanOption___mk", - "data": null, - "address": "/Build-Tools-and-Distribution/Lake/"}], - "Lake.LeanOption": - [{"id": "Lake___LeanOption___mk", - "data": null, - "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.LeanLibConfig.toLeanConfig": [{"id": "Lake___LeanLibConfig___mk", "data": null, @@ -20481,6 +37724,10 @@ "data": null, "address": "/IO/Processes/"}], "IO.Process.SpawnArgs.mk": + [{"id": "IO___Process___SpawnArgs___mk", + "data": null, + "address": "/IO/Processes/"}], + "IO.Process.SpawnArgs.cwd": [{"id": "IO___Process___SpawnArgs___mk", "data": null, "address": "/IO/Processes/"}], @@ -20529,19 +37776,15 @@ "data": null, "address": "/IO/Processes/"}], "IO.Process.Child.stdout": - [{"id": "IO___Process___Child___mk", + [{"id": "IO___Process___Child___stdin", "data": null, "address": "/IO/Processes/"}], "IO.Process.Child.stdin": - [{"id": "IO___Process___Child___mk", + [{"id": "IO___Process___Child___stdin", "data": null, "address": "/IO/Processes/"}], "IO.Process.Child.stderr": - [{"id": "IO___Process___Child___mk", - "data": null, - "address": "/IO/Processes/"}], - "IO.Process.Child.mk": - [{"id": "IO___Process___Child___mk", + [{"id": "IO___Process___Child___stdin", "data": null, "address": "/IO/Processes/"}], "IO.Process.Child.kill": @@ -20549,7 +37792,7 @@ "data": null, "address": "/IO/Processes/"}], "IO.Process.Child": - [{"id": "IO___Process___Child___mk", + [{"id": "IO___Process___Child___stdin", "data": null, "address": "/IO/Processes/"}], "IO.FileRight.user": @@ -21809,8 +39052,8 @@ [{"id": "Fin___pred", "data": null, "address": "/Basic-Types/Finite-Natural-Numbers/"}], - "Fin.ofNat'": - [{"id": "Fin___ofNat___", + "Fin.ofNat": + [{"id": "Fin___ofNat", "data": null, "address": "/Basic-Types/Finite-Natural-Numbers/"}], "Fin.natAdd": @@ -22091,17 +39334,11 @@ "address": "/Functors___-Monads-and--do--Notation/Varieties-of-Monads/"}], "Even.zero": - [{"id": "Even___zero-next-next", - "data": null, - "address": "/Introduction/"}], + [{"id": "Even___zero-next", "data": null, "address": "/Introduction/"}], "Even.plusTwo": - [{"id": "Even___zero-next-next", - "data": null, - "address": "/Introduction/"}], + [{"id": "Even___zero-next", "data": null, "address": "/Introduction/"}], "Even": - [{"id": "Even___zero-next-next", - "data": null, - "address": "/Introduction/"}], + [{"id": "Even___zero-next", "data": null, "address": "/Introduction/"}], "Equivalence.trans": [{"id": "Equivalence___mk", "data": null, @@ -22122,6 +39359,18 @@ [{"id": "Equivalence___mk", "data": null, "address": "/The-Type-System/Quotients/"}], + "EquivBEq.toPartialEquivBEq": + [{"id": "EquivBEq___mk", + "data": null, + "address": "/Type-Classes/Basic-Classes/"}], + "EquivBEq.mk": + [{"id": "EquivBEq___mk", + "data": null, + "address": "/Type-Classes/Basic-Classes/"}], + "EquivBEq": + [{"id": "EquivBEq___mk", + "data": null, + "address": "/Type-Classes/Basic-Classes/"}], "Eq.trans": [{"id": "Eq___trans", "data": null, @@ -22923,11 +40172,11 @@ "data": null, "address": "/Basic-Types/Bitvectors/"}], "BitVec.getMsb?": - [{"id": "BitVec___getMsb___-next", + [{"id": "BitVec___getMsb___", "data": null, "address": "/Basic-Types/Bitvectors/"}], - "BitVec.getMsb'": - [{"id": "BitVec___getMsb___", + "BitVec.getMsb": + [{"id": "BitVec___getMsb", "data": null, "address": "/Basic-Types/Bitvectors/"}], "BitVec.getLsbD": @@ -22935,11 +40184,11 @@ "data": null, "address": "/Basic-Types/Bitvectors/"}], "BitVec.getLsb?": - [{"id": "BitVec___getLsb___-next", + [{"id": "BitVec___getLsb___", "data": null, "address": "/Basic-Types/Bitvectors/"}], - "BitVec.getLsb'": - [{"id": "BitVec___getLsb___", + "BitVec.getLsb": + [{"id": "BitVec___getLsb", "data": null, "address": "/Basic-Types/Bitvectors/"}], "BitVec.fill": @@ -23817,6 +41066,11 @@ "table": "Lake.PackageConfig", "field": "nativeLibDir"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.PackageConfig name": + [{"id": "Lake___PackageConfig-name", + "data": + {"tableArrayKey": null, "table": "Lake.PackageConfig", "field": "name"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.PackageConfig moreServerOptions": [{"id": "Lake___PackageConfig-moreServerOptions", "data": @@ -23894,6 +41148,13 @@ "table": "Lake.PackageConfig", "field": "license"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.PackageConfig libPrefixOnWindows": + [{"id": "Lake___PackageConfig-libPrefixOnWindows", + "data": + {"tableArrayKey": null, + "table": "Lake.PackageConfig", + "field": "libPrefixOnWindows"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.PackageConfig leanOptions": [{"id": "Lake___PackageConfig-leanOptions", "data": @@ -23936,6 +41197,13 @@ "table": "Lake.PackageConfig", "field": "extraDepTargets"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.PackageConfig enableArtifactCache?": + [{"id": "Lake___PackageConfig-enableArtifactCache___", + "data": + {"tableArrayKey": null, + "table": "Lake.PackageConfig", + "field": "enableArtifactCache?"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.PackageConfig description": [{"id": "Lake___PackageConfig-description", "data": @@ -23971,6 +41239,13 @@ "table": "Lake.PackageConfig", "field": "buildArchive"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.PackageConfig bootstrap": + [{"id": "Lake___PackageConfig-bootstrap", + "data": + {"tableArrayKey": null, + "table": "Lake.PackageConfig", + "field": "bootstrap"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.PackageConfig binDir": [{"id": "Lake___PackageConfig-binDir", "data": @@ -24041,6 +41316,13 @@ "table": "Lake.LeanLibConfig", "field": "needs"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.LeanLibConfig name": + [{"id": "Lake___LeanLibConfig-name", + "data": + {"tableArrayKey": "lean_lib", + "table": "Lake.LeanLibConfig", + "field": "name"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.LeanLibConfig moreServerOptions": [{"id": "Lake___LeanLibConfig-moreServerOptions", "data": @@ -24083,6 +41365,13 @@ "table": "Lake.LeanLibConfig", "field": "moreLeanArgs"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.LeanLibConfig libPrefixOnWindows": + [{"id": "Lake___LeanLibConfig-libPrefixOnWindows", + "data": + {"tableArrayKey": "lean_lib", + "table": "Lake.LeanLibConfig", + "field": "libPrefixOnWindows"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.LeanLibConfig libName": [{"id": "Lake___LeanLibConfig-libName", "data": @@ -24188,6 +41477,13 @@ "table": "Lake.LeanExeConfig", "field": "needs"}, "address": "/Build-Tools-and-Distribution/Lake/"}], + "Lake.LeanExeConfig name": + [{"id": "Lake___LeanExeConfig-name", + "data": + {"tableArrayKey": "lean_exe", + "table": "Lake.LeanExeConfig", + "field": "name"}, + "address": "/Build-Tools-and-Distribution/Lake/"}], "Lake.LeanExeConfig moreServerOptions": [{"id": "Lake___LeanExeConfig-moreServerOptions", "data": @@ -24451,7 +41747,7 @@ "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "test": - [{"id": "test-next", + [{"id": "test", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}], "serve": @@ -24534,6 +41830,499 @@ [{"id": "build", "data": null, "address": "/Build-Tools-and-Distribution/Lake/"}]}}, + "Manual.examples": + {"title": "Manual.examples", + "description": "Manual.examples", + "contents": + {"where for structures": [], + "Zero-Overhead Subtypes": [], + "Widths and Newlines": [], + "Vector length index as a parameter": [], + "Variations in Instance Definitions": [], + "Variable not in scope": [], + "Using Any Local Variable": [], + "Using simp?": [], + "Using in for Local Scopes": [], + "Using Ord Instances for LT and LE Instances": [], + "Using NoNatZeroDivisors": [], + "Updating arrays": [], + "Unresolvable name inferred by dotted-identifier notation": [], + "Unnecessary fallback clause": [], + "Universes, constructors, and parameters": [], + "Universe-polymorphic identity function": [], + "Universe-polymorphic map": [], + "Universe polymorphism and definitional equality": [], + "Universe monomorphism in auto-bound implicit parameters": [], + "Universe mismatch": [], + "Universe levels of function types": [], + "Universe level expressions": [], + "Universe Level Metavariables": [], + "Unit in the ABI": [], + "Uninferred binder type due to resulting type annotation": [], + "Unexpansion and Arguments": [], + "Typo in resulting type": [], + "Types are irrelevant": [], + "Type Refinement": [], + "Type Metavariables": [], + "Turning Off Field Notation": [], + "Truth-Functional Implication": [], + "True is a subsingleton": [], + "Translating Nested Inductive Types": [], + "Too Many Instances": [], + "Throwing and Catching Errors": [], + "The recursor for List": [], + "The recursor for Bool": [], + "The Macro Attribute": [], + "The Integers as a Quotient Type": [], + "The Identity Monad Transformer ": [], + "The universe command when autoImplicit is false": [], + "The @[grind ←=] Attribute": [], + "The @[grind ext] Attribute": [], + "Testing Return Values": [], + "Termination failure": [], + "Termination Proof Tactics During Inference": [], + "Termination Proof Obligations": [], + "Terminating Loops in the Option Monad": [], + "Term vs Command Quotation Syntax": [], + "Target and Facet Specifications": [], + "Taking Advantage of Run-Time Representations": [], + "Tail Recursion with Branching": [], + "Tactic hygiene: inaccessible assumptions": [], + "Tactic hygiene: accessible assumptions": [], + "Syntax as Strings": [], + "Suffixed Splices": [], + "Subtype Coercions": [], + "Subgoal Sequencing": [], + "Sub-Array Syntax": [], + "Structure type inheritance with overlapping fields": [], + "Structural Recursion vs Subtraction": [], + "Structural Recursion and Definitional Equality": [], + "Structural Recursion Under Pairs": [], + "State Types": [], + "Standard Library Types": [], + "Spuriously mutual types": [], + "Splitting Predicates": [], + "Splitting Pattern Matching": [], + "Splitting Conditional Expressions": [], + "Specifying Decreasing Parameters": [], + "Sources as Tables": [], + "Sort Coercions as Ordinary Coercions": [], + "Sort Coercions": [], + "Simultaneous Matching vs Matching Pairs for Structural Recursion": [], + "Signed Integers": [], + "Semi-Output Parameters with Pre-Existing Values": [], + "Selecting Patterns": [], + "Section Variables": [], + "Scoped Macros": [], + "Scope Information": [], + "Running a Program on a File": [], + "Running a Program": [], + "Ring Characteristics": [], + "Right pipeline notation": [], + "Rewriting Under Binders with conv": [], + "Rewriting Propositions": [], + "Requiring Reservoir Packages from a Git tag": [], + "Requiring Packages from a Git tag": [], + "Requiring Packages from Reservoir": [], + "Requiring Packages from Paths": [], + "Requiring Packages from Git": [], + "Representing Syntax as Constructors": [], + "Relaxed vs Non-Relaxed Automatic Implicit Parameters": [], + "Refined Parameters": [], + "Reference Counts in IR": [], + "Reference Cells as Locks": [], + "Reducing Functions": [], + "Reducibility and Tactics": [], + "Reducibility and Instance Synthesis": [], + "Reducibility and Generalized Field Notation": [], + "Redirecting Standard I/O to Strings": [], + "Recursor with parameters and indices": [], + "Recursive tactic macro": [], + "Recursive Equational Lemmas": [], + "Recursion vs Recursors": [], + "Reasoning by cases with match": [], + "Reasoning by cases with if": [], + "Reading from Standard Input": [], + "Rational Solutions": [], + "Querying the Environment": [], + "Quasiquotation": [], + "Proving Existential Statements": [], + "Provided Operator Names": [], + "Protected constant name without namespace prefix": [], + "Propagating Equalities": [], + "Proofs by Induction": [], + "Proofs are irrelevant": [], + "Proofs About Quotients": [], + "Printing Equations": [], + "Printing Axioms": [], + "Printing": [], + "Pretty-Printed Syntax": [], + "Preprocessing for a custom data type": [], + "Predicativity of Type": [], + "Precedence for Prefix and Infix Operators": [], + "Popcount": [], + "Pipeline Fields": [], + "Patterns from Conclusion and Hypotheses": [], + "Patterns and default values": [], + "Pattern-Matching Functions": [], + "Pattern treated as variable, not constructor": [], + "Pattern Matching and Lists": [], + "Pattern Equality Proofs": [], + "Partial Functions in Proofs": [], + "Partial Correctness Theorem": [], + "Parsing Matched Parentheses and Brackets": [], + "Parsing Comma-Separated Repetitions": [], + "Parameters before and after the colon": [], + "Parameter Scope": [], + "Panic": [], + "Overly-universe-polymorphic Bool": [], + "Overflowing Fixed-Width Literals": [], + "Output Parameters with Pre-Existing Values": [], + "Output Parameters and Stuck Search": [], + "Ordinary vs Strict Implicit Parameters": [], + "Or is not a subsingleton": [], + "Options as Safe Nullability": [], + "Options as Nullability": [], + "Optional Splices": [], + "Opening Scoped Declarations": [], + "Opening Nested Namespaces": [], + "One vs. Two Sets of Macro Rules": [], + "One File, Multiple Handles": [], + "Omitting parameter in argument to higher-order predicate": [], + "Observing Uniqueness": [], + "Numeric Literals for Bitvectors": [], + "Numeric Literals for Fin": [], + "Nonlinear Terms": [], + "Noncomputable instance in namespace": [], + "Noncomputable dependency can be made computable": [], + "Non-strictly-positive inductive types": [], + "Non-default constructor name": [], + "Non-Dependent Functions Don't Bind Variables": [], + "Non-Comma Separators": [], + "No structure subtyping": [], + "No cumulativity": [], + "No Kernel Reasoning About Floating-Point Numbers": [], + "No Instances of Non-Classes": [], + "No Backtracking of Lexicographic Order": [], + "No Automatic Implicit Parameters": [], + "Newline Characters in Strings": [], + "Nesting Namespaces and Sections": [], + "Nested positions": [], + "Nested Patterns and Sub-Terms": [], + "Nested Inductive Types with Std.HashMap": [], + "Nested Inductive Types and Quotients": [], + "Nested Inductive Types": [], + "Nested Dependent Pair Types": [], + "Nested do and Branches": [], + "Necessarily noncomputable function not appropriately marked": [], + "Navigation and Rewriting with conv": [], + "Natural Numbers with cutsat": [], + "Named goals": [], + "Named Section": [], + "Named Arguments": [], + "Mutually Defined Inductive Types": [], + "Mutual strict positivity": [], + "Mutual recursion without parameter decrease": [], + "Mutual inductive type constructors may not mention each other": [], + "Mutual Structural Recursion Over Non-Mutual Types": [], + "Mutual Structural Recursion Over Mutual Types": [], + "Mutual Block Scope and Automatic Implicit Parameters": [], + "Mutual Block Scope": [], + "Multiple Parameters, Same Type": [], + "Multi-Patterns": [], + "More Commutative Ring Proofs": [], + "Monadic functions": [], + "Monadic Collection Operations": [], + "Monad Lifts in Function Signatures": [], + "Modifying Values in Maps": [], + "Modifiers on structure constructor": [], + "Missing resulting type after constructor parameter": [], + "Missing namespace": [], + "Missing import": [], + "Minimal TOML Package Configuration": [], + "Minimal Library Target": [], + "Minimal Executable Target": [], + "Metavariables in Proofs": [], + "Memory Re-Use in IR": [], + "Maximal Parentheses": [], + "Matching, With and Without Generalization": [], + "Matching with an Explicit Motive": [], + "Matching on Complex Expressions Can Prevent Elaboration": [], + "Match Patterns Follow Reduction": [], + "Manually Quotiented Integers": [], + "Macro Error Reporting": [], + "Loops are Tail Recursive Functions": [], + "Longer Prefixes of Current Namespace Take Precedence": [], + "Longer Identifier Prefixes Take Precedence": [], + "Long List Literals": [], + "Location specifiers for simp": [], + "Local Names Take Precedence": [], + "Local Instances Have Priority": [], + "Local Instances": [], + "Local Effects with the Identity Monad": [], + "Lists with Lengths as Applicative Functors": [], + "Linear Integer Arithmetic with Case Analysis": [], + "Linear Division and Modulo with cutsat": [], + "Limiting ring Steps": [], + "Lifting Transformed Monads": [], + "Lifting IO Monads": [], + "Library TOML Package Configuration": [], + "Left-to-Right Generation": [], + "Left pipeline notation": [], + "Leading . and Unfolding Definitions": [], + "Leading .": [], + "Lazy Lists": [], + "Iteration over Array Indices with for": [], + "Iteration Over Multiple Collections": [], + "Iterated Automatic Implicit Parameters": [], + "Invalid Nested Inductive Types": [], + "Integer Negation and Addition": [], + "Insufficient type information": [], + "Instances for nested types": [], + "Instances are not recursive": [], + "Instances are Not Unique": [], + "Instance Name Generation": [], + "Inspecting Patterns": [], + "Inheriting Documentation": [], + "Inhabited Sum Types": [], + "Infix Syntax": [], + "Infix Functor and Applicative Operators": [], + "Inferred Termination Annotations": [], + "Inferred Characteristic": [], + "Inference too powerful": [], + "Ineligible decreasing parameters": [], + "Inductive Types with Constructors": [], + "Increasing E-matching Limits": [], + "Incorrect ordering of pattern matches": [], + "Inconsistent Indices": [], + "Inconsistencies From Axioms": [], + "Included and Omitted Section Variables": [], + "Inaccessible Patterns": [], + "Inaccessible Assumption Names": [], + "Impredicativity": [], + "Impossible Functions": [], + "Impossible Code Paths": [], + "Implicit argument cannot be inferred": [], + "Implicit and Explicit Parameters to Instances": [], + "Implicit Parameters from Types": [], + "Implementing Coercions": [], + "Ignored Terms in Notation Expansion": [], + "Idiom Brackets": [], + "Identifying Missing Facts": [], + "Hierarchical Goal Names": [], + "Hiding Proof Terms": [], + "Heterogeneous Equality": [], + "Grouping and Filling": [], + "Goals Decided by linarith": [], + "Generalized Field Notation": [], + "From Characters to Strings": [], + "Forward Pattern Generation": [], + "Floating-Point Literals": [], + "Floating-Point Equality Is Not a Congruence": [], + "Floating-Point Equality Is Not Reflexive": [], + "Fixed-Width Literals": [], + "Fixed-Width Bitvector Literals": [], + "Finite-Field Reasoning": [], + "Filling Holes with Unification": [], + "Fields and grind": [], + "Field Indices and Structure Inheritance": [], + "False is a subsingleton": [], + "Failing Backward Pattern Generation": [], + "Extracting the witness from an existential proof": [], + "Extensional Equality of Subtypes": [], + "Extending trivial": [], + "Exported Names": [], + "Explicitly-Created Metavariables": [], + "Explicit Root Namespace": [], + "Expansion Backtracking": [], + "Expanding Quasiquotation": [], + "Excluded Middle and Decidable": [], + "Exceptions and Lifting": [], + "Examples of cutsat": [], + "Even and odd": [], + "Even Numbers": [], + "Equational Lemmas": [], + "Eq is a subsingleton": [], + "Enriched Proof Obligation Contexts": [], + "Elaboration Walkthrough": [], + "Effect Ordering": [], + "E-matching and Pattern Matching": [], + "E-matching Patterns": [], + "Duplicated Terms in Notation Expansion": [], + "Duplicate Evaluation in Coercions": [], + "Dotted identifier where type universe expected": [], + "Division by Iterated Subtraction: Termination Proof": [], + "Division by Iterated Subtraction": [], + "Division by 0": [], + "Displaying Output": [], + "Displaying Differences": [], + "Discriminant Refinement": [], + "Disambiguation via Typing": [], + "Differing parameter types": [], + "Differing numbers of parameters": [], + "Deriving Multiple Classes": [], + "Deriving Handlers": [], + "Dependent projection types": [], + "Dependent Pairs with Data": [], + "Dependent Pairs as Sums": [], + "Dependent Function Types": [], + "Dependent Coercion to Functions": [], + "Dependent Coercion": [], + "Definitional Equality of Unit-Like Types": [], + "Definitional Equality of Subtypes": [], + "Definitional Equality of Implicit and Explicit Function Types": [], + "Definitional Equality of Dependent and Non-Dependent Functions": [], + "Definitional Equality of Unit": [], + "Definition type uninferrable due to unknown parameter type": [], + "Definition by Partial Fixpoint": [], + "Defining an intermediate data value within a proof": [], + "Defining Dependent Coercions": [], + "Defining Coercions: Decimal Numbers": [], + "Defining Coercions": [], + "Default values": [], + "Default Size Instance": [], + "Default Instances": [], + "Dead Code and Subsingleton Elimination": [], + "Data races with get and set": [], + "Custom Unit Type": [], + "Custom Operators in Lean's Output": [], + "Custom Natural Number Literals": [], + "Current Namespace Contents Take Precedence Over Opened Namespaces": [], + "Current Namespace": [], + "Course-of-Values Tables": [], + "Controlling Evaluation with Coercions": [], + "Controlling Coercion Insertion": [], + "Constructing Lists": [], + "Congruence Closure": [], + "Configured Library Target": [], + "Configured Executable Target": [], + "Computing types": [], + "Commutative Rings": [], + "Commutative Ring Goals Decided by linarith": [], + "Commutative (Semi)ring Normalization": [], + "Coercions and Generalized Field Notation": [], + "Coercions and Option": [], + "Coercions and OfNat": [], + "Coercions": [], + "Coercing to Function Types": [], + "Coercing from Fin to Nat": [], + "Coercing Decorated Functions to Function Types": [], + "CoeOut vs Coe instances": [], + "Closing a Subprocess's Standard Input": [], + "Class vs Structure Constructors": [], + "Class Abbreviations": [], + "Choosing Eliminators": [], + "Checking for Type Errors": [], + "Checking Exit Codes": [], + "Checking Equality with Pointers": [], + "Checking Array Bounds": [], + "Characteristic Zero": [], + "Built-In Integers as Quotients": [], + "Bounded Bitvector Literals": [], + "Binder type requires new type variable": [], + "Bidirectional Equality Pattern Generation": [], + "Backward Pattern Generation": [], + "Axioms and Stuck Reduction": [], + "Axioms and Compilation": [], + "Avoiding data races with modify": [], + "Avoiding a Type": [], + "Automatic universe parameters and the universe command": [], + "Automatic Implicit Parameters and Universe Polymorphism": [], + "Automatic Implicit Parameters": [], + "Auto-implicit parameters in structure fields": [], + "Attempting to use index projection on existential proof": [], + "Attempting to name an example declaration": [], + "Attempting to define multiple structure fields on the same line": [], + "Attempting to define multiple opaque constants at once": [], + "Atomic Types and Repr": [], + "Asynchronous Subprocesses": [], + "Assumptions by Type, Outside Proofs": [], + "Assumptions by Type": [], + "Assumption Names and Conclusion": [], + "Assigned Operator Names": [], + "Ascribing Types to do Blocks": [], + "Ascribing Statements to Proofs": [], + "Array Literals": [], + "Array Indexing": [], + "Antiquotation Annotations": [], + "Anonymous constructors": [], + "Anonymous Goals": [], + "And is a subsingleton": [], + "An instance for a sum class": [], + "Ambiguous Operators and Priorities": [], + "Ambiguous Identifiers": [], + "Aligned Columns": [], + "Algebraic Reasoning": [], + "Accessible Assumption Names": [], + "A unit type": [], + "A type with parameter and index": [], + "A true proposition": [], + "A recursive instance for a sum class": [], + "A constructorless type": [], + "A constructorless proposition": [], + "#print and Structure Types": [], + "#check and Underdetermined Types": []}}, + "Manual.errorExplanation": + {"title": "Error Explanations", + "description": "Error Explanations", + "contents": + {"lean.unknownIdentifier": + [{"id": "lean___unknownIdentifier", + "data": + {"summary": "Failed to resolve identifier to variable or constant."}, + "address": "/Error-Explanations/lean___unknownIdentifier/"}], + "lean.redundantMatchAlt": + [{"id": "lean___redundantMatchAlt", + "data": {"summary": "Match alternative will never be reached."}, + "address": "/Error-Explanations/lean___redundantMatchAlt/"}], + "lean.propRecLargeElim": + [{"id": "lean___propRecLargeElim", + "data": + {"summary": + "Attempted to eliminate a proof into a higher type universe."}, + "address": "/Error-Explanations/lean___propRecLargeElim/"}], + "lean.projNonPropFromProp": + [{"id": "lean___projNonPropFromProp", + "data": {"summary": "Tried to project data from a proof."}, + "address": "/Error-Explanations/lean___projNonPropFromProp/"}], + "lean.invalidDottedIdent": + [{"id": "lean___invalidDottedIdent", + "data": + {"summary": + "Dotted identifier notation used with invalid or uninferrable expected type."}, + "address": "/Error-Explanations/lean___invalidDottedIdent/"}], + "lean.inferDefTypeFailed": + [{"id": "lean___inferDefTypeFailed", + "data": {"summary": "The type of a definition could not be inferred."}, + "address": "/Error-Explanations/lean___inferDefTypeFailed/"}], + "lean.inferBinderTypeFailed": + [{"id": "lean___inferBinderTypeFailed", + "data": {"summary": "The type of a binder could not be inferred."}, + "address": "/Error-Explanations/lean___inferBinderTypeFailed/"}], + "lean.inductiveParamMissing": + [{"id": "lean___inductiveParamMissing", + "data": + {"summary": + "Parameter not present in an occurrence of an inductive type in one of its constructors."}, + "address": "/Error-Explanations/lean___inductiveParamMissing/"}], + "lean.inductiveParamMismatch": + [{"id": "lean___inductiveParamMismatch", + "data": + {"summary": + "Invalid parameter in an occurrence of an inductive type in one of its constructors."}, + "address": "/Error-Explanations/lean___inductiveParamMismatch/"}], + "lean.dependsOnNoncomputable": + [{"id": "lean___dependsOnNoncomputable", + "data": + {"summary": + "Declaration depends on noncomputable definitions but is not marked as noncomputable"}, + "address": "/Error-Explanations/lean___dependsOnNoncomputable/"}], + "lean.ctorResultingTypeMismatch": + [{"id": "lean___ctorResultingTypeMismatch", + "data": + {"summary": + "Resulting type of constructor was not the inductive type being declared."}, + "address": "/Error-Explanations/lean___ctorResultingTypeMismatch/"}]}}, "Manual.envVar": {"title": "Environment Variables", "description": "Environment Variables", @@ -24903,7 +42692,8 @@ "category": null}, "address": "/Basic-Types/Subtypes/"}], "«term_⊕_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"⊕\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": - [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next", + [{"id": + "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next-next", "data": {"kind": "«term_⊕_»", "forms": @@ -24950,6 +42740,18 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Type-Classes/Basic-Classes/"}], + "«term_≍_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"≍\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next", + "data": + {"kind": "«term_≍_»", + "forms": + [{"string": "…", "kind": "meta"}, + {"string": " ", "kind": "ws"}, + {"string": "≍", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Basic-Propositions/Propositional-Equality/"}], "«term_≈_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"≈\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": [{"id": "_FLQQ_term______FLQQ_", "data": @@ -24999,7 +42801,7 @@ "category": null}, "address": "/Basic-Propositions/Logical-Connectives/"}], "«term_×_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"×\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": - [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next", + [{"id": "_FLQQ_term______FLQQ_-next-next-next-next-next-next-next-next", "data": {"kind": "«term_×_»", "forms": @@ -25258,7 +43060,7 @@ "category": null}, "address": "/Basic-Types/Booleans/"}], "«term[_]» [{\"string\": \"[\", \"kind\": \"keyword\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \"]\", \"kind\": \"keyword\"}]": - [{"id": "_FLQQ_term_LSQ___RSQ__FLQQ_", + [{"id": "_FLQQ_term_LSQ___RSQ__FLQQ_-next", "data": {"kind": "«term[_]»", "forms": @@ -25266,8 +43068,8 @@ {"string": "…", "kind": "meta"}, {"string": "]", "kind": "keyword"}], "category": null}, - "address": "/Terms/Literals/"}, - {"id": "_FLQQ_term_LSQ___RSQ__FLQQ_-next", + "address": "/Basic-Types/Linked-Lists/"}, + {"id": "_FLQQ_term_LSQ___RSQ__FLQQ_", "data": {"kind": "«term[_]»", "forms": @@ -25275,7 +43077,7 @@ {"string": "…", "kind": "meta"}, {"string": "]", "kind": "keyword"}], "category": null}, - "address": "/Basic-Types/Linked-Lists/"}], + "address": "/Terms/Literals/"}], "«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\"}]": [{"id": "_FLQQ_termExists______FLQQ_-next", "data": @@ -25310,7 +43112,7 @@ "category": null}, "address": "/Basic-Propositions/Quantifiers/"}], "«term#[_,]» [{\"string\": \"#[\", \"kind\": \"keyword\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \"]\", \"kind\": \"keyword\"}]": - [{"id": "_FLQQ_term____LSQ______RSQ__FLQQ_-next", + [{"id": "_FLQQ_term____LSQ______RSQ__FLQQ_", "data": {"kind": "«term#[_,]»", "forms": @@ -25318,8 +43120,8 @@ {"string": "…", "kind": "meta"}, {"string": "]", "kind": "keyword"}], "category": null}, - "address": "/Basic-Types/Arrays/"}, - {"id": "_FLQQ_term____LSQ______RSQ__FLQQ_", + "address": "/Terms/Literals/"}, + {"id": "_FLQQ_term____LSQ______RSQ__FLQQ_-next", "data": {"kind": "«term#[_,]»", "forms": @@ -25327,7 +43129,7 @@ {"string": "…", "kind": "meta"}, {"string": "]", "kind": "keyword"}], "category": null}, - "address": "/Terms/Literals/"}], + "address": "/Basic-Types/Arrays/"}], "«stx_<|>_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"<|>\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": [{"id": "_FLQQ_stx__LT_____GT___FLQQ_", "data": @@ -25576,18 +43378,18 @@ "category": null}, "address": "/Notations-and-Macros/Precedence/"}], "num.antiquot [{\"string\": \"…\", \"kind\": \"meta\"}]": - [{"id": "num___antiquot-next", + [{"id": "num___antiquot", "data": {"kind": "num.antiquot", "forms": [{"string": "…", "kind": "meta"}], "category": null}, - "address": "/Notations-and-Macros/Precedence/"}, - {"id": "num___antiquot", + "address": "/Type-Classes/Instance-Declarations/"}, + {"id": "num___antiquot-next", "data": {"kind": "num.antiquot", "forms": [{"string": "…", "kind": "meta"}], "category": null}, - "address": "/Type-Classes/Instance-Declarations/"}], + "address": "/Notations-and-Macros/Precedence/"}], "ident.antiquot [{\"string\": \"…\", \"kind\": \"meta\"}]": [{"id": "ident___antiquot", "data": @@ -25641,23 +43443,58 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Terms/Conditionals/"}], - "Manual.FreeSyntax.more []": - [{"id": "Manual___FreeSyntax___more-next", + "Std.HashMap.«term_~m_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"~m\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Std___HashMap____FLQQ_term____m__FLQQ_", "data": - {"kind": "Manual.FreeSyntax.more", "forms": [], "category": null}, - "address": "/Terms/Function-Application/"}, - {"id": "Manual___FreeSyntax___more-next-next-next", + {"kind": "Std.HashMap.«term_~m_»", + "forms": + [{"string": "…", "kind": "meta"}, + {"string": " ", "kind": "ws"}, + {"string": "~m", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Basic-Types/Maps-and-Sets/"}, + {"id": "Std___HashMap____FLQQ_term____m__FLQQ_-next", + "data": + {"kind": "Std.HashMap.«term_~m_»", + "forms": + [{"string": "…", "kind": "meta"}, + {"string": " ", "kind": "ws"}, + {"string": "~m", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Std.DHashMap.«term_~m_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"~m\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Std___DHashMap____FLQQ_term____m__FLQQ_", + "data": + {"kind": "Std.DHashMap.«term_~m_»", + "forms": + [{"string": "…", "kind": "meta"}, + {"string": " ", "kind": "ws"}, + {"string": "~m", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Basic-Types/Maps-and-Sets/"}], + "Manual.FreeSyntax.more []": + [{"id": "Manual___FreeSyntax___more-next-next", "data": {"kind": "Manual.FreeSyntax.more", "forms": [], "category": null}, "address": "/Notations-and-Macros/Macros/"}, - {"id": "Manual___FreeSyntax___more-next-next", + {"id": "Manual___FreeSyntax___more-next", "data": {"kind": "Manual.FreeSyntax.more", "forms": [], "category": null}, - "address": "/Notations-and-Macros/Macros/"}, + "address": "/Terms/Function-Application/"}, {"id": "Manual___FreeSyntax___more", "data": {"kind": "Manual.FreeSyntax.more", "forms": [], "category": null}, - "address": "/Terms/Function-Application/"}], + "address": "/Terms/Function-Application/"}, + {"id": "Manual___FreeSyntax___more-next-next-next", + "data": + {"kind": "Manual.FreeSyntax.more", "forms": [], "category": null}, + "address": "/Notations-and-Macros/Macros/"}], "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\"}]": [{"id": "Manual___FreeSyntax___embed", "data": @@ -25675,18 +43512,18 @@ "category": null}, "address": "/Terms/Functions/"}], "Manual.FreeSyntax.done []": - [{"id": "Manual___FreeSyntax___done-next-next", + [{"id": "Manual___FreeSyntax___done", "data": {"kind": "Manual.FreeSyntax.done", "forms": [], "category": null}, - "address": "/Build-Tools-and-Distribution/Lake/"}, + "address": "/Notations-and-Macros/Macros/"}, {"id": "Manual___FreeSyntax___done-next", "data": {"kind": "Manual.FreeSyntax.done", "forms": [], "category": null}, "address": "/Build-Tools-and-Distribution/Lake/"}, - {"id": "Manual___FreeSyntax___done", + {"id": "Manual___FreeSyntax___done-next-next", "data": {"kind": "Manual.FreeSyntax.done", "forms": [], "category": null}, - "address": "/Notations-and-Macros/Macros/"}], + "address": "/Build-Tools-and-Distribution/Lake/"}], "List.«term_~_» [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"~\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": [{"id": "List____FLQQ_term______FLQQ_", "data": @@ -25967,12 +43804,13 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Definitions/Recursive-Definitions/"}], - "Lean.Parser.Term.typeAscription [{\"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\"}]": + "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\"}]": [{"id": "Lean___Parser___Term___typeAscription-next", "data": {"kind": "Lean.Parser.Term.typeAscription", "forms": [{"string": "(", "kind": "keyword"}, + {"string": "[anonymous]", "kind": "literalIdent"}, {"string": "…", "kind": "meta"}, {"string": " ", "kind": "ws"}, {"string": ":", "kind": "keyword"}, @@ -25986,6 +43824,7 @@ {"kind": "Lean.Parser.Term.typeAscription", "forms": [{"string": "(", "kind": "keyword"}, + {"string": "[anonymous]", "kind": "literalIdent"}, {"string": "…", "kind": "meta"}, {"string": " ", "kind": "ws"}, {"string": ":", "kind": "keyword"}, @@ -25994,12 +43833,13 @@ {"string": ")", "kind": "keyword"}], "category": null}, "address": "/Terms/Functions/"}], - "Lean.Parser.Term.tuple [{\"string\": \"(\", \"kind\": \"keyword\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \",\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \")\", \"kind\": \"keyword\"}]": + "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\"}]": [{"id": "Lean___Parser___Term___tuple", "data": {"kind": "Lean.Parser.Term.tuple", "forms": [{"string": "(", "kind": "keyword"}, + {"string": "[anonymous]", "kind": "literalIdent"}, {"string": "…", "kind": "meta"}, {"string": ",", "kind": "keyword"}, {"string": " ", "kind": "ws"}, @@ -26224,12 +44064,13 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Terms/Function-Application/"}], - "Lean.Parser.Term.paren [{\"string\": \"(\", \"kind\": \"keyword\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \")\", \"kind\": \"keyword\"}]": + "Lean.Parser.Term.paren [{\"string\": \"(\", \"kind\": \"keyword\"},\n {\"string\": \"[anonymous]\", \"kind\": \"literalIdent\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \")\", \"kind\": \"keyword\"}]": [{"id": "Lean___Parser___Term___paren", "data": {"kind": "Lean.Parser.Term.paren", "forms": [{"string": "(", "kind": "keyword"}, + {"string": "[anonymous]", "kind": "literalIdent"}, {"string": "…", "kind": "meta"}, {"string": " ", "kind": "ws"}, {"string": ")", "kind": "keyword"}], @@ -26436,7 +44277,7 @@ "category": null}, "address": "/Terms/Holes/"}], "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\"}]": - [{"id": "Lean___Parser___Term___fun-next-next-next-next", + [{"id": "Lean___Parser___Term___fun-next-next", "data": {"kind": "Lean.Parser.Term.fun", "forms": @@ -26449,7 +44290,7 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___fun-next-next", + {"id": "Lean___Parser___Term___fun", "data": {"kind": "Lean.Parser.Term.fun", "forms": @@ -26462,7 +44303,7 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___fun", + {"id": "Lean___Parser___Term___fun-next-next-next-next", "data": {"kind": "Lean.Parser.Term.fun", "forms": @@ -26476,7 +44317,7 @@ "category": null}, "address": "/Terms/Functions/"}], "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\"}]": - [{"id": "Lean___Parser___Term___fun-next", + [{"id": "Lean___Parser___Term___fun-next-next-next", "data": {"kind": "Lean.Parser.Term.fun", "forms": @@ -26493,7 +44334,7 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Terms/Functions/"}, - {"id": "Lean___Parser___Term___fun-next-next-next", + {"id": "Lean___Parser___Term___fun-next", "data": {"kind": "Lean.Parser.Term.fun", "forms": @@ -27172,6 +45013,16 @@ {"string": "}", "kind": "keyword"}], "category": null}, "address": "/Tactic-Proofs/Running-Tactics/"}], + "Lean.Parser.Term.borrowed [{\"string\": \"@&\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Lean___Parser___Term___borrowed", + "data": + {"kind": "Lean.Parser.Term.borrowed", + "forms": + [{"string": "@&", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "Lean.Parser.Term.attributes [{\"string\": \"@[\", \"kind\": \"keyword\"},\n {\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \"]\", \"kind\": \"keyword\"}]": [{"id": "Lean___Parser___Term___attributes-next", "data": @@ -27312,13 +45163,13 @@ "category": null}, "address": "/Tactic-Proofs/The-Tactic-Language/"}], "Lean.Parser.Tactic.Conv.enterArg [{\"string\": \"…\", \"kind\": \"meta\"}]": - [{"id": "Lean___Parser___Tactic___Conv___enterArg-next-next-next", + [{"id": "Lean___Parser___Tactic___Conv___enterArg-next", "data": {"kind": "Lean.Parser.Tactic.Conv.enterArg", "forms": [{"string": "…", "kind": "meta"}], "category": null}, "address": "/Tactic-Proofs/Targeted-Rewriting-with--conv/"}, - {"id": "Lean___Parser___Tactic___Conv___enterArg-next", + {"id": "Lean___Parser___Tactic___Conv___enterArg-next-next-next", "data": {"kind": "Lean.Parser.Tactic.Conv.enterArg", "forms": [{"string": "…", "kind": "meta"}], @@ -27751,7 +45602,7 @@ "category": null}, "address": "/Interacting-with-Lean/"}], "Lean.Parser.Command.print [{\"string\": \"#print\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": - [{"id": "Lean___Parser___Command___print-next", + [{"id": "Lean___Parser___Command___print", "data": {"kind": "Lean.Parser.Command.print", "forms": @@ -27760,7 +45611,7 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Interacting-with-Lean/"}, - {"id": "Lean___Parser___Command___print", + {"id": "Lean___Parser___Command___print-next", "data": {"kind": "Lean.Parser.Command.print", "forms": @@ -28371,6 +46222,20 @@ {"string": ")?", "kind": "meta"}], "category": null}, "address": "/Notations-and-Macros/Notations/"}], + "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\"}]": + [{"id": "Lean___Parser___Command___grindPattern", + "data": + {"kind": "Lean.Parser.Command.grindPattern", + "forms": + [{"string": "grind_pattern", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}, + {"string": " ", "kind": "ws"}, + {"string": "=>", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], "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\"}]": [{"id": "Lean___Parser___Command___export", "data": @@ -28922,21 +46787,12 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Definitions/Headers-and-Signatures/"}], - "Lean.Parser.Command.declModifiers [{\"string\": \"…\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"(\", \"kind\": \"meta\"},\n {\"string\": \"private\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"|\", \"kind\": \"meta\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"protected\", \"kind\": \"keyword\"},\n {\"string\": \")\", \"kind\": \"meta\"},\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\"}]": + "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\"}]": [{"id": "Lean___Parser___Command___declModifiers", "data": {"kind": "Lean.Parser.Command.declModifiers", "forms": [{"string": "…", "kind": "meta"}, - {"string": " ", "kind": "ws"}, - {"string": "(", "kind": "meta"}, - {"string": "private", "kind": "keyword"}, - {"string": " ", "kind": "ws"}, - {"string": "|", "kind": "meta"}, - {"string": " ", "kind": "ws"}, - {"string": "protected", "kind": "keyword"}, - {"string": ")", "kind": "meta"}, - {"string": "?", "kind": "meta"}, {"string": " ", "kind": "ws"}, {"string": "noncomputable", "kind": "keyword"}, {"string": "?", "kind": "meta"}, @@ -29250,6 +47106,132 @@ {"string": "…", "kind": "meta"}], "category": null}, "address": "/Type-Classes/Instance-Declarations/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"→\", \"kind\": \"keyword\"}]": + [{"id": "Lean___Parser___Attr___grindMod-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": [{"string": "→", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"←\", \"kind\": \"keyword\"}]": + [{"id": "Lean___Parser___Attr___grindMod-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": [{"string": "←", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"←\", \"kind\": \"keyword\"}, {\"string\": \"=\", \"kind\": \"keyword\"}]": + [{"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": + [{"string": "←", "kind": "keyword"}, + {"string": "=", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"ext\", \"kind\": \"keyword\"}]": + [{"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": [{"string": "ext", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"_\", \"kind\": \"keyword\"},\n {\"string\": \"=\", \"kind\": \"keyword\"},\n {\"string\": \"_\", \"kind\": \"keyword\"}]": + [{"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": + [{"string": "_", "kind": "keyword"}, + {"string": "=", "kind": "keyword"}, + {"string": "_", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"=>\", \"kind\": \"keyword\"}]": + [{"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": [{"string": "=>", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"=\", \"kind\": \"keyword\"}]": + [{"id": "Lean___Parser___Attr___grindMod-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": [{"string": "=", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"=\", \"kind\": \"keyword\"}, {\"string\": \"_\", \"kind\": \"keyword\"}]": + [{"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": + [{"string": "=", "kind": "keyword"}, + {"string": "_", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grindMod [{\"string\": \"<=\", \"kind\": \"keyword\"}]": + [{"id": + "Lean___Parser___Attr___grindMod-next-next-next-next-next-next-next-next-next-next-next-next-next", + "data": + {"kind": "Lean.Parser.Attr.grindMod", + "forms": [{"string": "<=", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grind? [{\"string\": \"grind?\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Lean___Parser___Attr___grind___", + "data": + {"kind": "Lean.Parser.Attr.grind?", + "forms": + [{"string": "grind?", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grind [{\"string\": \"grind\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Lean___Parser___Attr___grind-next", + "data": + {"kind": "Lean.Parser.Attr.grind", + "forms": + [{"string": "grind", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/The--grind--tactic/E___matching/"}], + "Lean.Parser.Attr.grind [{\"string\": \"grind\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"cases\", \"kind\": \"keyword\"}]": + [{"id": "Lean___Parser___Attr___grind", + "data": + {"kind": "Lean.Parser.Attr.grind", + "forms": + [{"string": "grind", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "cases", "kind": "keyword"}], + "category": null}, + "address": "/The--grind--tactic/Case-Analysis/"}], + "Lean.Parser.Attr.extern [{\"string\": \"extern\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Lean___Parser___Attr___extern", + "data": + {"kind": "Lean.Parser.Attr.extern", + "forms": + [{"string": "extern", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], + "Lean.Parser.Attr.export [{\"string\": \"export\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": + [{"id": "Lean___Parser___Attr___export", + "data": + {"kind": "Lean.Parser.Attr.export", + "forms": + [{"string": "export", "kind": "keyword"}, + {"string": " ", "kind": "ws"}, + {"string": "…", "kind": "meta"}], + "category": null}, + "address": "/Run-Time-Code/Foreign-Function-Interface/"}], "Lean.Parser.Attr.default_instance [{\"string\": \"default_instance\", \"kind\": \"keyword\"},\n {\"string\": \" \", \"kind\": \"ws\"},\n {\"string\": \"…\", \"kind\": \"meta\"}]": [{"id": "Lean___Parser___Attr___default_instance", "data": diff --git a/book/FPLean/DependentTypes/IndexedFamilies.lean b/book/FPLean/DependentTypes/IndexedFamilies.lean index 206dd2e..f7e3bdd 100644 --- a/book/FPLean/DependentTypes/IndexedFamilies.lean +++ b/book/FPLean/DependentTypes/IndexedFamilies.lean @@ -45,12 +45,12 @@ This means that using {anchorName nilNotLengthThree}`Vect.nil` in a context expe example : Vect String 3 := Vect.nil ``` ```anchorError nilNotLengthThree -type mismatch +Type mismatch Vect.nil has type - Vect ?m.1606 0 : Type ?u.1605 + Vect ?m.3 0 but is expected to have type - Vect String 3 : Type + Vect String 3 ``` The mismatch between {anchorTerm Vect}`0` and {anchorTerm nilNotLengthThree}`3` in this example plays exactly the same role as any other type mismatch, even though {anchorTerm Vect}`0` and {anchorTerm nilNotLengthThree}`3` are not themselves types. The metavariable in the message can be ignored because its presence indicates that {anchorName otherEx}`Vect.nil` can have any element type. @@ -65,23 +65,23 @@ Using {anchorName nilNotLengthN}`n` for the length allows neither {anchorName ot example : Vect String n := Vect.nil ``` ```anchorError nilNotLengthN -type mismatch +Type mismatch Vect.nil has type - Vect ?m.1694 0 : Type ?u.1693 + Vect ?m.2 0 but is expected to have type - Vect String n : Type + Vect String n ``` ```anchor consNotLengthN example : Vect String n := Vect.cons "Hello" (Vect.cons "world" Vect.nil) ``` ```anchorError consNotLengthN -type mismatch +Type mismatch Vect.cons "Hello" (Vect.cons "world" Vect.nil) has type - Vect String (0 + 1 + 1) : Type + Vect String (0 + 1 + 1) but is expected to have type - Vect String n : Type + Vect String n ``` Having the length of the list as part of its type means that the type becomes more informative. @@ -188,14 +188,14 @@ def Vect.replicate (n : Nat) (x : α) : Vect α n := | k + 1 => .cons x (.cons x (replicate k x)) ``` ```anchorError replicateOops -Application type mismatch: In the application - cons x (cons x (replicate k x)) -the argument +Application type mismatch: The argument cons x (replicate k x) has type - Vect α (k + 1) : Type ?u.2998 + Vect α (k + 1) but is expected to have type - Vect α k : Type ?u.2998 + Vect α k +in the application + cons x (cons x (replicate k x)) ``` @@ -275,12 +275,12 @@ def Vect.zip : Vect α n → Vect β n → Vect (α × β) n | .cons x xs, .cons y ys => .cons (x, y) (zip xs ys) ``` ```anchorError zipExtraCons -type mismatch +Type mismatch Vect.cons y ys has type - Vect ?m.5565 (?m.5576 + 1) : Type ?u.5573 + Vect ?m.10 (?m.16 + 1) but is expected to have type - Vect β 0 : Type ?u.5440 + Vect β 0 ``` The refinement of the length can be observed by making {anchorName VectZipLen}`n` into an explicit argument: diff --git a/book/FPLean/DependentTypes/IndicesParametersUniverses.lean b/book/FPLean/DependentTypes/IndicesParametersUniverses.lean index 823af40..c0152c0 100644 --- a/book/FPLean/DependentTypes/IndicesParametersUniverses.lean +++ b/book/FPLean/DependentTypes/IndicesParametersUniverses.lean @@ -117,7 +117,7 @@ inductive ParamAfterIndex : Nat → Type u → Type u where | test2 : ParamAfterIndex n γ → ParamAfterIndex k γ → ParamAfterIndex (n + k) γ ``` ```anchorError ParamAfterIndex -invalid universe level in constructor 'ParamAfterIndex.test1', parameter 'γ' has type +Invalid universe level in constructor `ParamAfterIndex.test1`: Parameter `γ` has type Type u at universe level u+2 diff --git a/book/FPLean/DependentTypes/Pitfalls.lean b/book/FPLean/DependentTypes/Pitfalls.lean index 8c4cde3..4211c27 100644 --- a/book/FPLean/DependentTypes/Pitfalls.lean +++ b/book/FPLean/DependentTypes/Pitfalls.lean @@ -263,12 +263,12 @@ def appendR : (n k : Nat) → Vect α n → Vect α k → Vect α (n.plusR k) | n + 1, k, .cons x xs, ys => _ ``` ```anchorError appendR3 -type mismatch - ?m.7829 +Type mismatch + ?m.11 has type - Vect α k : Type ?u.7765 + Vect α k but is expected to have type - Vect α (Nat.plusR 0 k) : Type ?u.7765 + Vect α (Nat.plusR 0 k) ``` This error is pointing out that {anchorTerm plusRinfo}`Nat.plusR 0 k` and {anchorName plusRinfo}`k` are _not_ definitionally equal. @@ -288,12 +288,12 @@ def appendR : (n k : Nat) → Vect α n → Vect α k → Vect α (n + k) | n + 1, k, .cons x xs, ys => _ ``` ```anchorError appendR4 -type mismatch - ?m.8578 +Type mismatch + ?m.15 has type - Vect α k : Type ?u.8479 + Vect α k but is expected to have type - Vect α (0 + k) : Type ?u.8479 + Vect α (0 + k) ``` Addition is getting _stuck_ on the variables. @@ -312,10 +312,10 @@ The split between definitional and propositional equality represents a division Similarly, definitional equality is invoked automatically by the type checker, while propositional equality must be specifically appealed to. -In {ref "props-proofs-indexing"}[Propositions, Proofs, and Indexing], some equality statements are proved using {kw}`decide`. +In {ref "props-proofs-indexing"}[Propositions, Proofs, and Indexing], some equality statements are proved using {tactic}`decide`. All of these equality statements are ones in which the propositional equality is in fact already a definitional equality. -Typically, statements of propositional equality are proved by first getting them into a form where they are either definitional or close enough to existing proved equalities, and then using tools like {kw}`decide` or {kw}`simp` to take care of the simplified cases. -The {kw}`simp` tactic is quite powerful: behind the scenes, it uses a number of fast, automated tools to construct a proof. +Typically, statements of propositional equality are proved by first getting them into a form where they are either definitional or close enough to existing proved equalities, and then using tools like {tactic}`decide` or {tactic}`simp` to take care of the simplified cases. +The {tactic}`simp` tactic is quite powerful: behind the scenes, it uses a number of fast, automated tools to construct a proof. A simpler tactic called {kw}`rfl` specifically uses definitional equality to prove propositional equality. The name {kw}`rfl` is short for _reflexivity_, which is the property of equality that states that everything equals itself. diff --git a/book/FPLean/DependentTypes/TypedQueries.lean b/book/FPLean/DependentTypes/TypedQueries.lean index a30c1e2..6aaf132 100644 --- a/book/FPLean/DependentTypes/TypedQueries.lean +++ b/book/FPLean/DependentTypes/TypedQueries.lean @@ -52,7 +52,7 @@ def DBType.beq (t : DBType) (x y : t.asType) : Bool := failed to synthesize BEq t.asType -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` Just as in the nested pairs universe, type class search doesn't automatically check each possibility for {anchorName dbEqNoSplit}`t`'s value The solution is to use pattern matching to refine the types of {anchorTerm dbEq}`x` and {anchorName dbEq}`y`: @@ -177,12 +177,12 @@ def Row.bEq (r1 r2 : Row s) : Bool := v1 == v2 && bEq r1' r2' ``` ```anchorError RowBEqRecursion -type mismatch +Type mismatch (v1, r1') has type - ?m.3273 × ?m.3276 : Type (max ?u.3285 ?u.3284) + ?m.10 × ?m.11 but is expected to have type - Row (col :: cols) : Type + Row (col :: cols) ``` The problem is that the pattern {anchorTerm RowBEqRecursion}`col :: cols` does not sufficiently refine the type of the rows. This is because Lean cannot yet tell whether the singleton pattern {anchorTerm Row}`[col]` or the {anchorTerm Row}`col1 :: col2 :: cols` pattern in the definition of {anchorName Row}`Row` was matched, so the call to {anchorName Row}`Row` does not compute down to a pair type. @@ -536,17 +536,21 @@ inductive Query : Schema → Type where | union : Query s → Query s → Query s | diff : Query s → Query s → Query s | select : Query s → DBExpr s .bool → Query s - | project : Query s → (s' : Schema) → Subschema s' s → Query s' + | project : + Query s → (s' : Schema) → + Subschema s' s → + Query s' | product : - Query s1 → Query s2 → - disjoint (s1.map Column.name) (s2.map Column.name) → - Query (s1 ++ s2) + Query s1 → Query s2 → + disjoint (s1.map Column.name) (s2.map Column.name) → + Query (s1 ++ s2) | renameColumn : - Query s → (c : HasCol s n t) → (n' : String) → !((s.map Column.name).contains n') → - Query (s.renameColumn c n') + Query s → (c : HasCol s n t) → (n' : String) → + !((s.map Column.name).contains n') → + Query (s.renameColumn c n') | prefixWith : - (n : String) → Query s → - Query (s.map fun c => {c with name := n ++ "." ++ c.name}) + (n : String) → Query s → + Query (s.map fun c => {c with name := n ++ "." ++ c.name}) ``` The {anchorName Query}`select` constructor requires that the expression used for selection return a Boolean. The {anchorName Query}`product` constructor's type contains a call to {anchorName Query}`disjoint`, which ensures that the two schemas don't share any names: @@ -740,7 +744,8 @@ def example2 := let waterfall := table waterfallDiary |>.prefixWith "waterfall" mountain.product waterfall (by decide) |>.select (.eq (c! "mountain.location") (c! "waterfall.location")) - |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] (by repeat constructor) + |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] + (by repeat constructor) ``` Because the example data includes only waterfalls in the USA, executing the query returns pairs of mountains and waterfalls in the US: ```anchor Query2Exec @@ -763,7 +768,8 @@ def example2 := let waterfalls := table waterfallDiary |>.prefixWith "waterfall" mountains.product waterfalls (by simp) |>.select (.eq (c! "location") (c! "waterfall.location")) - |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] (by repeat constructor) + |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] + (by repeat constructor) ``` This is excellent feedback! On the other hand, the text of the error message is quite difficult to act on: @@ -775,7 +781,7 @@ waterfalls : Query (List.map (fun c => { name := "waterfall" ++ "." ++ c.name, c ⊢ HasCol (List.map (fun c => { name := "waterfall" ++ "." ++ c.name, contains := c.contains }) []) "location" ?m.62066 ``` -Similarly, forgetting to add prefixes to the names of the two tables results in an error on {kw}`by decide`, which should provide evidence that the schemas are in fact disjoint; +Similarly, forgetting to add prefixes to the names of the two tables results in an error on {kw}`by decide`, which should provide evidence that the schemas are in fact disjoint: ```anchor QueryOops2 open Query in def example2 := @@ -783,11 +789,12 @@ def example2 := let waterfalls := table waterfallDiary mountains.product waterfalls (by decide) |>.select (.eq (c! "mountain.location") (c! "waterfall.location")) - |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] (by repeat constructor) + |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] + (by repeat constructor) ``` This error message is more helpful: ```anchorError QueryOops2 -tactic 'decide' proved that the proposition +Tactic `decide` proved that the proposition disjoint (List.map Column.name peak) (List.map Column.name waterfall) = true is false ``` diff --git a/book/FPLean/DependentTypes/UniversePattern.lean b/book/FPLean/DependentTypes/UniversePattern.lean index cc3afc1..865c2df 100644 --- a/book/FPLean/DependentTypes/UniversePattern.lean +++ b/book/FPLean/DependentTypes/UniversePattern.lean @@ -85,7 +85,7 @@ instance {t : NestedPairs} : BEq t.asType where failed to synthesize BEq t.asType -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` The {anchorName beqNoCases}`t` in the error message stands for an unknown value of type {anchorName beqNoCases}`NestedPairs`. diff --git a/book/FPLean/Examples.lean b/book/FPLean/Examples.lean index e9d8874..2613db3 100644 --- a/book/FPLean/Examples.lean +++ b/book/FPLean/Examples.lean @@ -1,10 +1,12 @@ import SubVerso.Examples import Lean.Data.NameMap +import Lean.DocString.Syntax import VersoManual import FPLean.Examples.Commands import FPLean.Examples.OtherLanguages open Lean (NameMap MessageSeverity) +open Lean.Doc.Syntax namespace FPLean @@ -141,6 +143,14 @@ div.paragraph > .eval-steps:not(:last-child), div.paragraph > .eval-steps:not(:l margin-top: 0.25em; margin-bottom: 0.25em; } + +.eval-steps .hl.lean.block:not(:last-child)::after { + content: "⟹"; + display: block; + margin-left: 1em; + font-size: 175%; +} + "# block_extension Block.leanEvalSteps (steps : Array Highlighted) where @@ -391,18 +401,18 @@ private def quoteCode (str : String) : String := Id.run do @[role_expander moduleEvalStep] def moduleEvalStep : RoleExpander | args, inls => do - let {module := moduleName, anchor?, step, showProofStates := _, defSite := _} ← parseThe EvalStepContext args + let {project, module := moduleName, anchor?, step, showProofStates := _, defSite := _} ← parseThe EvalStepContext args let code? ← oneCodeStr? inls let modStr := moduleName.getId.toString - let items ← loadModuleContent modStr + let items ← loadModuleContent project modStr let highlighted := Highlighted.seq (items.map (·.code)) let fragment ← if let some anchor := anchor? then try - let {anchors, ..} ← anchored moduleName anchor + let {anchors, ..} ← anchored project moduleName anchor if let some hl := anchors[anchor.getId.toString]? then pure hl else @@ -411,10 +421,11 @@ def moduleEvalStep : RoleExpander Suggestion.saveSuggestion anchor x x return #[← ``(sorryAx _ true)] catch - | .error ref e => - logErrorAt ref e + | .error refStx e => + logErrorAt refStx e return #[← ``(sorryAx _ true)] - | e => throw e + | e => + throw e else pure highlighted let steps := splitHighlighted (· == "===>") fragment @@ -474,9 +485,9 @@ where @[code_block_expander moduleEvalStep] def moduleEvalStepBlock : CodeBlockExpander | args, code => do - let {module := moduleName, anchor?, step, showProofStates := _, defSite := _} ← parseThe EvalStepContext args + let {project, module := moduleName, anchor?, step, showProofStates := _, defSite := _} ← parseThe EvalStepContext args - withAnchored moduleName anchor? fun fragment => do + withAnchored project moduleName anchor? fun fragment => do let steps := splitHighlighted (· == "===>") fragment if let some step := steps[step.val]? then @@ -496,9 +507,9 @@ macro_rules @[code_block_expander moduleEvalSteps] def moduleEvalSteps : CodeBlockExpander | args, str => do - let {module := moduleName, anchor?, showProofStates := _, defSite := _} ← parseThe CodeContext args + let {project, module := moduleName, anchor?, showProofStates := _, defSite := _} ← parseThe CodeContext args - withAnchored moduleName anchor? fun fragment => do + withAnchored project moduleName anchor? fun fragment => do _ ← ExpectString.expectString "steps" str fragment.toString let steps := splitHighlighted (· == "===>") fragment @@ -513,9 +524,9 @@ macro_rules @[code_block_expander moduleEqSteps] def moduleEqSteps : CodeBlockExpander | args, str => do - let {module := moduleName, anchor?, showProofStates := _, defSite := _} ← parseThe CodeContext args + let {project, module := moduleName, anchor?, showProofStates := _, defSite := _} ← parseThe CodeContext args - withAnchored moduleName anchor? fun fragment => do + withAnchored project moduleName anchor? fun fragment => do _ ← ExpectString.expectString "steps" str fragment.toString let steps := splitHighlighted (· ∈ ["={", "}="]) fragment @@ -687,8 +698,8 @@ def commandBlock : BlockCommandOf CommandBlockConfig let out := «show».getD command |>.getString ``(Block.other (Block.shellCommand $(quote out) $(quote <| prompt.map (·.getString))) #[Block.code $(quote out)]) -instance : Coe StrLit (TSyntax `argument) where - coe stx := ⟨mkNode ``Verso.Syntax.anon #[mkNode ``Verso.Syntax.arg_str #[stx.raw]]⟩ +instance : Coe StrLit (TSyntax `doc_arg) where + coe stx := ⟨mkNode ``Lean.Doc.Syntax.anon #[mkNode ``Lean.Doc.Syntax.arg_str #[stx.raw]]⟩ macro_rules | `(block|```command $args* | $s```) => `(block|command{command $args* $s}) @@ -824,13 +835,21 @@ def file : CodeBlockExpander logSilentInfo contents return #[← ``(Block.other (InlineLean.Block.exampleFile (FileType.other $(quote (show?.getD (fn.fileName.getD fn.toString))))) #[Block.code $(quote contents)])] +structure PlainFileConfig where + project : StrLit + file : StrLit + show? : Option StrLit + +instance [Monad m] [MonadOptions m] [MonadError m] : FromArgs PlainFileConfig m where + fromArgs := PlainFileConfig.mk <$> projectOrDefault <*> .positional' `file <*> (some <$> .positional `show .strLit <|> pure none) + @[code_block_expander plainFile] def plainFile : CodeBlockExpander | args, expectedContentsStr => do - let (file, show?) ← ArgParse.run ((·, ·) <$> .positional `file .strLit <*> (some <$> .positional `show .strLit <|> pure none)) args + let {project := projectDir, file, show?} ← parseThe PlainFileConfig args let show? := show?.map (·.getString) - let projectDir : System.FilePath ← getProjectDir + let projectDir : System.FilePath := projectDir.getString let fn := projectDir / file.getString let contents ← IO.FS.readFile fn @@ -858,10 +877,10 @@ def moduleOutText : RoleExpander | args, inls => withTraceNode `Elab.Verso (fun _ => pure m!"moduleOutText") <| do let str? ← oneCodeStr? inls - let {module := moduleName, anchor?, severity, showProofStates := _, defSite := _, expandTraces, onlyTrace} ← parseThe MessageContext args + let {project, module := moduleName, anchor?, severity, showProofStates := _, defSite := _, expandTraces, onlyTrace} ← parseThe MessageContext args if onlyTrace.isSome then throwError "Unsupported option: `onlyTrace`" - withAnchored moduleName anchor? fun hl => do + withAnchored project moduleName anchor? fun hl => do let infos := allInfo hl if let some str := str? then let mut strings := #[] diff --git a/book/FPLean/Examples/Commands.lean b/book/FPLean/Examples/Commands.lean index 79991da..b7d359b 100644 --- a/book/FPLean/Examples/Commands.lean +++ b/book/FPLean/Examples/Commands.lean @@ -2,11 +2,9 @@ import FPLean.Examples.Commands.Env import FPLean.Examples.Commands.ShLex import Lean.Elab import Verso.FS -import Verso.Hooks namespace FPLean.Commands open Lean -open Verso.Doc.Elab variable {m : _} [Monad m] [MonadEnv m] [MonadLiftT IO m] [MonadLiftT BaseIO m] [MonadError m] @@ -78,10 +76,5 @@ def fileContents (container : Ident) (file : StrLit) : m String := do throwErrorAt file "{filename} is a directory" IO.FS.readFile filename ---@[document_finished_hook] -def cleanupContainers : DocumentFinishedHook := do - for (_, v) in containersExt.getState (← getEnv) do - if (← v.workingDirectory.isDir) then IO.FS.removeDirAll v.workingDirectory - end Commands diff --git a/book/FPLean/Examples/OtherLanguages.lean b/book/FPLean/Examples/OtherLanguages.lean index 92e400c..8d4760c 100644 --- a/book/FPLean/Examples/OtherLanguages.lean +++ b/book/FPLean/Examples/OtherLanguages.lean @@ -2,8 +2,10 @@ import SubVerso.Examples import Lean.Data.NameMap import Std.Data.HashMap import VersoManual +import Lean.DocString.Syntax open Lean (NameMap MessageSeverity) +open Lean.Doc.Syntax open Std namespace FPLean @@ -26,7 +28,7 @@ def inlineCSharp : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[code_block_expander Kotlin] @@ -40,7 +42,7 @@ def inlineKotlin : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[code_block_expander cpp] @@ -54,7 +56,7 @@ def inlineCpp : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @@ -69,7 +71,7 @@ def inlineTypescript : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[role_expander c] @@ -78,7 +80,7 @@ def c : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[role_expander java] @@ -87,7 +89,7 @@ def java : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[role_expander rust] @@ -96,7 +98,7 @@ def rust : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[code_block_expander python] @@ -110,7 +112,7 @@ def inlinePython : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] @[code_block_expander fsharp] @@ -124,7 +126,7 @@ def fsharpInline : RoleExpander let #[code] := code | throwErrorAt (mkNullNode code) "Expected exactly one code argument" let `(inline|code($code)) := code - | throwErrorAt code "Exected code" + | throwErrorAt code "Expected code" return #[← ``(Inline.code $(quote code.getString))] diff --git a/book/FPLean/FunctorApplicativeMonad/Alternative.lean b/book/FPLean/FunctorApplicativeMonad/Alternative.lean index 9fd3940..786d29d 100644 --- a/book/FPLean/FunctorApplicativeMonad/Alternative.lean +++ b/book/FPLean/FunctorApplicativeMonad/Alternative.lean @@ -238,7 +238,7 @@ instance [Alternative f] : OrElse (f α) where orElse := Alternative.orElse ``` -The implementation of {anchorName FakeAlternative}`Alternative` for {anchorName ApplicativeOption}`Option` keeps the first none-{anchorName ApplicativeOption}`none` argument: +The implementation of {anchorName FakeAlternative}`Alternative` for {anchorName ApplicativeOption}`Option` keeps the first non-{anchorName ApplicativeOption}`none` argument: ```anchor AlternativeOption instance : Alternative Option where diff --git a/book/FPLean/FunctorApplicativeMonad/Applicative.lean b/book/FPLean/FunctorApplicativeMonad/Applicative.lean index 0c8a1ef..27fdbf7 100644 --- a/book/FPLean/FunctorApplicativeMonad/Applicative.lean +++ b/book/FPLean/FunctorApplicativeMonad/Applicative.lean @@ -203,14 +203,14 @@ The first argument is the underlying {anchorName FastPos}`Nat`, and the second a ```anchor one def one : FastPos := ⟨1, by decide⟩ ``` -The proposition {anchorTerm onep}`1 > 0` is decidable, so the {kw}`decide` tactic produces the necessary evidence. +The proposition {anchorTerm onep}`1 > 0` is decidable, so the {tactic}`decide` tactic produces the necessary evidence. The {anchorName OfNatFastPos}`OfNat` instance is very much like that for {anchorName Pos (module:=Examples.Classes)}`Pos`, except it uses a short tactic proof to provide evidence that {lit}`n + 1 > 0`: ```anchor OfNatFastPos instance : OfNat FastPos (n + 1) where ofNat := ⟨n + 1, by simp⟩ ``` -Here, {kw}`simp` is needed because {kw}`decide` requires concrete values, but the proposition in question is {anchorTerm OfNatFastPosp}`n + 1 > 0`. +Here, {tactic}`simp` is needed because {tactic}`decide` requires concrete values, but the proposition in question is {anchorTerm OfNatFastPosp}`n + 1 > 0`. Subtypes are a two-edged sword. They allow efficient representation of validation rules, but they transfer the burden of maintaining these rules to the users of the library, who have to _prove_ that they are not violating important invariants. diff --git a/book/FPLean/FunctorApplicativeMonad/ApplicativeContract.lean b/book/FPLean/FunctorApplicativeMonad/ApplicativeContract.lean index 2c86bdb..1d67230 100644 --- a/book/FPLean/FunctorApplicativeMonad/ApplicativeContract.lean +++ b/book/FPLean/FunctorApplicativeMonad/ApplicativeContract.lean @@ -141,7 +141,7 @@ by v >>= pure ={ /-- `pure` is a right identity of `>>=` -/ -by simp [LawfulMonad.bind_pure_comp] +by simp }= v ``` @@ -231,7 +231,7 @@ pure (x (y z)) Time to start moving backwards! `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= u >>= fun x => v >>= fun y => @@ -240,7 +240,7 @@ pure (y z) >>= fun q => pure (x q) ={ /-- Associativity of `>>=` -/ -by simp [LawfulMonad.bind_assoc] +by simp }= u >>= fun x => v >>= fun y => @@ -249,7 +249,7 @@ v >>= fun y => pure (x q) ={ /-- Associativity of `>>=` -/ -by simp [LawfulMonad.bind_assoc] +by simp }= u >>= fun x => (v >>= fun y => @@ -280,13 +280,13 @@ pure x >>= fun y => pure (g y) ={ /-- `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= pure f >>= fun g => pure (g x) ={ /-- `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= pure (f x) ``` @@ -303,7 +303,7 @@ pure x >>= fun y => pure (f y) ={ /-- `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= u >>= fun f => pure (f x) diff --git a/book/FPLean/FunctorApplicativeMonad/Inheritance.lean b/book/FPLean/FunctorApplicativeMonad/Inheritance.lean index aa09b8c..89327e6 100644 --- a/book/FPLean/FunctorApplicativeMonad/Inheritance.lean +++ b/book/FPLean/FunctorApplicativeMonad/Inheritance.lean @@ -89,14 +89,14 @@ However, the anonymous angle-bracket notation that delegates to the underlying c def troll : Monster := ⟨true, "sunlight"⟩ ``` ```anchorError wrongTroll1 -Application type mismatch: In the application - Monster.mk true -the argument +Application type mismatch: The argument true has type - Bool : Type + Bool but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + Monster.mk true ``` An extra set of angle brackets is required, which invokes {anchorName MythicalCreatureMk}`MythicalCreature.mk` on {anchorName troll3}`true`: @@ -112,14 +112,14 @@ However, this only occurs when using dot notation, and applying the field lookup #eval MythicalCreature.large troll ``` ```anchorError trollLargeNoDot -Application type mismatch: In the application - MythicalCreature.large troll -the argument +Application type mismatch: The argument troll has type - Monster : Type + Monster but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + MythicalCreature.large troll ``` Dot notation can also take inheritance into account for user-defined functions. A small creature is one that is not large: @@ -129,14 +129,14 @@ def MythicalCreature.small (c : MythicalCreature) : Bool := !c.large ``` Evaluating {anchorTerm smallTroll}`troll.small` yields {anchorTerm smallTroll}`false`, while attempting to evaluate {anchorTerm smallTrollWrong}`MythicalCreature.small troll` results in: ```anchorError smallTrollWrong -Application type mismatch: In the application - MythicalCreature.small troll -the argument +Application type mismatch: The argument troll has type - Monster : Type + Monster but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + MythicalCreature.small troll ``` # Multiple Inheritance @@ -238,7 +238,7 @@ abbrev SizesMatch (sc : SizedCreature) : Prop := sc.large = (sc.size == Size.large) ``` Note that a single equality sign is used to indicate the equality _proposition_, while a double equality sign is used to indicate a function that checks equality and returns a {anchorName MythicalCreature}`Bool`. -{anchorName sizesMatch}`SizesMatch` is defined as an {kw}`abbrev` because it should automatically be unfolded in proofs, so that {kw}`decide` can see the equality that should be proven. +{anchorName sizesMatch}`SizesMatch` is defined as an {kw}`abbrev` because it should automatically be unfolded in proofs, so that {tactic}`decide` can see the equality that should be proven. A _huldre_ is a medium-sized mythical creature—in fact, they are the same size as humans. The two sized fields on {anchorName huldresize}`huldre` match one another: diff --git a/book/FPLean/FunctorApplicativeMonad/Universes.lean b/book/FPLean/FunctorApplicativeMonad/Universes.lean index 2a27bcd..5d994e4 100644 --- a/book/FPLean/FunctorApplicativeMonad/Universes.lean +++ b/book/FPLean/FunctorApplicativeMonad/Universes.lean @@ -88,14 +88,14 @@ def myListOfNat : MyList Type := .cons Nat .nil ``` ```anchorError myListNat1Err -Application type mismatch: In the application - MyList Type -the argument +Application type mismatch: The argument Type has type - Type 1 : Type 2 -but is expected to have type - Type : Type 1 + Type 1 +of sort `Type 2` but is expected to have type + Type +of sort `Type 1` in the application + MyList Type ``` Updating {anchorName MyList2}`MyList` so that its argument is a {anchorTerm MyList2}`Type 1` results in a definition rejected by Lean: @@ -105,7 +105,7 @@ inductive MyList (α : Type 1) : Type where | cons : α → MyList α → MyList α ``` ```anchorError MyList2 -invalid universe level in constructor 'MyList.cons', parameter has type +Invalid universe level in constructor `MyList.cons`: Parameter has type α at universe level 2 @@ -195,14 +195,14 @@ However, it requires that both arguments be in the same universe: def stringOrType : Sum String Type := .inr Nat ``` ```anchorError stringOrTypeLevels -Application type mismatch: In the application - Sum String Type -the argument +Application type mismatch: The argument Type has type - Type 1 : Type 2 -but is expected to have type - Type : Type 1 + Type 1 +of sort `Type 2` but is expected to have type + Type +of sort `Type 1` in the application + Sum String Type ``` This datatype can be made more flexible by using different variables for the two type arguments' universe levels, and then declaring that the resulting datatype is in the largest of the two: diff --git a/book/FPLean/GettingToKnow/Conveniences.lean b/book/FPLean/GettingToKnow/Conveniences.lean index 4bfb796..2fb64b4 100644 --- a/book/FPLean/GettingToKnow/Conveniences.lean +++ b/book/FPLean/GettingToKnow/Conveniences.lean @@ -300,7 +300,7 @@ def id x := x ```anchorError identNoTypes -failed to infer binder type +Failed to infer type of binder `x` ``` ::: @@ -422,7 +422,7 @@ def halve : Nat → Nat ``` Behind the scenes, both definitions are completely equivalent. -Remember: {anchorTerm halve}`halven + 1` is equivalent to {anchorTerm halveParens}`(halve n) + 1`, not {anchorTerm halveParens}`halve (n + 1)`. +Remember: {anchorTerm halve}`halve n + 1` is equivalent to {anchorTerm halveParens}`(halve n) + 1`, not {anchorTerm halveParens}`halve (n + 1)`. ::: @@ -529,7 +529,7 @@ def double : Nat → Nat := fun When an anonymous function is very simple, like {anchorEvalStep incrSteps 0}`fun x => x + 1`, the syntax for creating the function can be fairly verbose. In that particular example, six non-whitespace characters are used to introduce the function, and its body consists of only three non-whitespace characters. For these simple cases, Lean provides a shorthand. -In an expression surrounded by parentheses, a centered dot character {anchorTerm incrSteps}`·` can stand for an parameter, and the expression inside the parentheses becomes the function's body. +In an expression surrounded by parentheses, a centered dot character {anchorTerm incrSteps}`·` can stand for a parameter, and the expression inside the parentheses becomes the function's body. That particular function can also be written {anchorEvalStep incrSteps 1}`(· + 1)`. ::: @@ -717,11 +717,10 @@ Just as with the brace notation for named constructor arguments, this positional For instance, {anchorTerm pointPosEvalNoType}`#eval ⟨1, 2⟩` yields the following error: ```anchorError pointPosEvalNoType -invalid constructor ⟨...⟩, expected type must be an inductive type - ?m.93937 +Invalid `⟨...⟩` notation: The expected type of this term could not be determined ``` -The metavariable in the error is because there is no type information available. +This error occurs because there is no type information available. Adding an annotation, such as in {anchorTerm pointPosWithType}`#eval (⟨1, 2⟩ : Point)`, solves the problem: ```anchorInfo pointPosWithType @@ -766,10 +765,11 @@ yields the error failed to synthesize ToString (Nat → Nat) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` This is because there is no standard way to convert functions into strings. -The Lean compiler maintains a table that describes how to convert values of various types into strings, and the message {lit}`failed to synthesize instance` means that the Lean compiler didn't find an entry in this table for the given type. -This uses the same language feature as the {anchorTerm Point}`deriving Repr` syntax that was described in the {ref "structures"}[section on structures]. +Just as the compiler maintains a table that describes how to display the result of evaluating expressions of various types, it maintains a table that describes how to convert values of various types into strings. +The message {lit}`failed to synthesize instance` means that the Lean compiler didn't find an entry in this table for the given type. +The chapter on {ref "type-classes"}[type classes] describes this mechanism in more detail, including the means of adding new entries to the table. ::: diff --git a/book/FPLean/GettingToKnow/FunctionsDefinitions.lean b/book/FPLean/GettingToKnow/FunctionsDefinitions.lean index f16eecd..7523b63 100644 --- a/book/FPLean/GettingToKnow/FunctionsDefinitions.lean +++ b/book/FPLean/GettingToKnow/FunctionsDefinitions.lean @@ -183,7 +183,7 @@ numerals are polymorphic in Lean, but the numeral `38` cannot be used in a conte NaturalNumber due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` ::: diff --git a/book/FPLean/GettingToKnow/Polymorphism.lean b/book/FPLean/GettingToKnow/Polymorphism.lean index b55dd83..493df71 100644 --- a/book/FPLean/GettingToKnow/Polymorphism.lean +++ b/book/FPLean/GettingToKnow/Polymorphism.lean @@ -36,7 +36,6 @@ A polymorphic version of {anchorName Point}`Point`, called {anchorName PPoint}`P structure PPoint (α : Type) where x : α y : α -deriving Repr ``` ::: @@ -671,7 +670,7 @@ inductive MyType : Type where Lean gives the following error: ```anchorError TypeInType -invalid universe level in constructor 'MyType.ctor', parameter 'α' has type +Invalid universe level in constructor `MyType.ctor`: Parameter `α` has type Type at universe level 2 @@ -799,6 +798,65 @@ type expected, got ::: +:::paragraph +Evaluating expressions that use polymorphic types may trigger a situation in which Lean is incapable of displaying a value. +The {anchorTerm evalAxe}`#eval` command evaluates the provided expression, using the expression's type to determine how to display the result. +For some types, such as functions, this process fails, but Lean is perfectly capable of automatically generating display code for most other types. +There is no need, for example, to provide Lean with any specific display code for {anchorName WoodSplittingTool}`WoodSplittingTool`: +```anchor WoodSplittingTool +inductive WoodSplittingTool where + | axe + | maul + | froe +``` +```anchor evalAxe +#eval WoodSplittingTool.axe +``` +```anchorInfo evalAxe +WoodSplittingTool.axe +``` +There are limits to the automation that Lean uses here, however. +{anchorName allTools}`allTools` is a list of all three tools: +```anchor allTools +def allTools : List WoodSplittingTool := [ + WoodSplittingTool.axe, + WoodSplittingTool.maul, + WoodSplittingTool.froe +] +``` +Evaluating it leads to an error: +```anchor evalAllTools +#eval allTools +``` +```anchorError evalAllTools +could not synthesize a 'ToExpr', 'Repr', or 'ToString' instance for type + List WoodSplittingTool +``` +This is because Lean attempts to use code from a built-in table to display a list, but this code demands that display code for {anchorName WoodSplittingTool}`WoodSplittingTool` already exists. +This error can be worked around by instructing Lean to generate this display code when a datatype is defined, instead of at the last moment as part of {anchorTerm evalAllTools}`#eval`, by adding {anchorTerm Firewood}`deriving Repr` to its definition: +```anchor Firewood +inductive Firewood where + | birch + | pine + | beech +deriving Repr +``` +Evaluating a list of {anchorName Firewood}`Firewood` succeeds: +```anchor allFirewood +def allFirewood : List Firewood := [ + Firewood.birch, + Firewood.pine, + Firewood.beech +] +``` +```anchor evalAllFirewood +#eval allFirewood +``` +```anchorInfo evalAllFirewood +[Firewood.birch, Firewood.pine, Firewood.beech] +``` +::: + # Exercises * Write a function to find the last entry in a list. It should return an {anchorName fragments}`Option`. diff --git a/book/FPLean/GettingToKnow/Structures.lean b/book/FPLean/GettingToKnow/Structures.lean index 9cb8992..1d6fae3 100644 --- a/book/FPLean/GettingToKnow/Structures.lean +++ b/book/FPLean/GettingToKnow/Structures.lean @@ -89,15 +89,9 @@ This is declared using the {kw}`structure` keyword. structure Point where x : Float y : Float -deriving Repr ``` - After this declaration, {anchorName Point}`Point` is a new structure type. -The final line, which says {anchorTerm Point}`deriving Repr`, asks Lean to generate code to display values of type {anchorName Point}`Point`. -This code is used by {kw}`#eval` to render the result of evaluation for consumption by programmers, analogous to the {python}`repr` function in Python. -It is also possible to override the compiler's generated display code. - The typical way to create a value of a structure type is to provide values for all of its fields inside of curly braces. The origin of a Cartesian plane is where {anchorName Point}`x` and {anchorName Point}`y` are both zero: @@ -184,7 +178,6 @@ structure Point3D where x : Float y : Float z : Float -deriving Repr ``` ```anchor origin3D @@ -351,10 +344,8 @@ structure Point where point :: x : Float y : Float -deriving Repr ``` - In addition to the constructor, an accessor function is defined for each field of a structure. These have the same name as the field, in the structure's namespace. For {anchorName Point}`Point`, accessor functions {anchorName Pointx}`Point.x` and {anchorName Pointy}`Point.y` are generated. diff --git a/book/FPLean/GettingToKnow/Types.lean b/book/FPLean/GettingToKnow/Types.lean index f38643a..2104f39 100644 --- a/book/FPLean/GettingToKnow/Types.lean +++ b/book/FPLean/GettingToKnow/Types.lean @@ -86,14 +86,14 @@ When a program can't be given a type, an error is returned from both {kw}`#check outputs ```anchorError stringAppendList -Application type mismatch: In the application - String.append ["hello", " "] -the argument +Application type mismatch: The argument ["hello", " "] has type - List String : Type + List String but is expected to have type - String : Type + String +in the application + String.append ["hello", " "] ``` because the first argument to {anchorName stringAppendList}`String.append` is expected to be a string, but a list of strings was provided instead. diff --git a/book/FPLean/HelloWorld/RunningAProgram.lean b/book/FPLean/HelloWorld/RunningAProgram.lean index d20ee58..b0e882b 100644 --- a/book/FPLean/HelloWorld/RunningAProgram.lean +++ b/book/FPLean/HelloWorld/RunningAProgram.lean @@ -40,8 +40,8 @@ The program displays {commandOut hello}`lean --run Hello.lean` and exits. # Anatomy of a Greeting When Lean is invoked with the {lit}`--run` option, it invokes the program's {lit}`main` definition. -In programs that do not take command-line arguments, {moduleName module:=Hello}`main` should have type {moduleTerm}`IO Unit`. -This means that {moduleName module:=Hello}`main` is not a function, because there are no arrows ({lit}`→`) in its type. +In programs that do not take command-line arguments, {moduleName (module := Hello)}`main` should have type {moduleTerm}`IO Unit`. +This means that {moduleName (module := Hello)}`main` is not a function, because there are no arrows ({lit}`→`) in its type. Instead of being a function that has side effects, {moduleTerm}`main` consists of a description of effects to be carried out. As discussed in {ref "polymorphism"}[the preceding chapter], {moduleTerm}`Unit` is the simplest inductive type. diff --git a/book/FPLean/HelloWorld/StartingAProject.lean b/book/FPLean/HelloWorld/StartingAProject.lean index 7f4b17c..9425441 100644 --- a/book/FPLean/HelloWorld/StartingAProject.lean +++ b/book/FPLean/HelloWorld/StartingAProject.lean @@ -44,7 +44,7 @@ The library file {lit}`Greeting.lean` imports {lit}`Greeting/Basic.lean`: import Greeting.Basic ``` -This means that everything defined in {lit}`Greetings/Basic.lean` is also available to files that import {lit}`Greetings.lean`. +This means that everything defined in {lit}`Greeting/Basic.lean` is also available to files that import {lit}`Greeting.lean`. In {kw}`import` statements, dots are interpreted as directories on disk. The executable source {lit}`Main.lean` contains: @@ -55,7 +55,7 @@ def main : IO Unit := IO.println s!"Hello, {hello}!" ``` -Because {lit}`Main.lean` imports {lit}`Greetings.lean` and {lit}`Greetings.lean` imports {lit}`Greetings/Basic.lean`, the definition of {lit}`hello` is available in {lit}`main`. +Because {lit}`Main.lean` imports {lit}`Greeting.lean` and {lit}`Greeting.lean` imports {lit}`Greeting/Basic.lean`, the definition of {lit}`hello` is available in {lit}`main`. To build the package, run the command {command lake "first-lake/greeting"}`lake build`. After a number of build commands scroll by, the resulting binary has been placed in {lit}`.lake/build/bin`. diff --git a/book/FPLean/Intro.lean b/book/FPLean/Intro.lean index dede440..d284aff 100644 --- a/book/FPLean/Intro.lean +++ b/book/FPLean/Intro.lean @@ -80,14 +80,14 @@ Lean's replies are formatted like this: Error messages returned by Lean are formatted like this: ```anchorError add1_string -Application type mismatch: In the application - add1 "seven" -the argument +Application type mismatch: The argument "seven" has type - String : Type + String but is expected to have type - Nat : Type + Nat +in the application + add1 "seven" ``` Warnings are formatted like this: @@ -116,6 +116,18 @@ number := false htmlSplit := .never %%% +## October, 2025 + +The book has been updated to the latest stable Lean release (version 4.23.0), and now describes functional induction and the {tactic}`grind` tactic. + +## August, 2025 + +This is a maintenance release to resolve an issue with copy-pasting code from the book. + +## July, 2025 + +The book has been updated for version 4.21 of Lean. + ## June, 2025 The book has been reformatted with Verso. diff --git a/book/FPLean/MonadTransformers/Do.lean b/book/FPLean/MonadTransformers/Do.lean index 3821364..9da126e 100644 --- a/book/FPLean/MonadTransformers/Do.lean +++ b/book/FPLean/MonadTransformers/Do.lean @@ -468,7 +468,7 @@ They represent a sequence of natural numbers, from the starting number to the en Lean has special syntax to construct ranges, consisting of square brackets, numbers, and colons that comes in four varieties. The stopping point must always be provided, while the start and the step are optional, defaulting to {anchorTerm ranges}`0` and {anchorTerm ranges}`1`, respectively: -:::table (header := true) +:::table +header * * Expression * Start diff --git a/book/FPLean/MonadTransformers/Transformers.lean b/book/FPLean/MonadTransformers/Transformers.lean index 96cdcba..b2ec43b 100644 --- a/book/FPLean/MonadTransformers/Transformers.lean +++ b/book/FPLean/MonadTransformers/Transformers.lean @@ -96,14 +96,14 @@ instance [Monad m] : Monad (OptionT m) where ``` The error message shows a cryptic type mismatch: ```anchorError firstMonadOptionT -Application type mismatch: In the application - pure (some x) -the argument +Application type mismatch: The argument some x has type - Option α✝ : Type ?u.78 + Option α✝ but is expected to have type - α✝ : Type ?u.78 + α✝ +in the application + pure (some x) ``` The problem here is that Lean is selecting the wrong {anchorName firstMonadOptionT}`Monad` instance for the surrounding use of {anchorName firstMonadOptionT}`pure`. Similar errors occur for the definition of {anchorName firstMonadOptionT}`bind`. diff --git a/book/FPLean/Monads.lean b/book/FPLean/Monads.lean index 4dab3cf..a30e742 100644 --- a/book/FPLean/Monads.lean +++ b/book/FPLean/Monads.lean @@ -570,7 +570,7 @@ def number (t : BinTree α) : BinTree (Nat × α) := (i, BinTree.branch numberedLeft (k, x) numberedRight) (helper 0 t).snd ``` -This code, like the {moduleName}`none`-propagating {anchorName first}`Option` code, the {anchorName exceptNames show:=error}`Except.error`-propagating {anchorName exceptNames}`Except` code, and the log-accumulating {moduleName}`WithLog` code, commingles two concerns: propagating the value of the counter, and actually traversing the tree to find the result. +This code, like the {moduleName}`none`-propagating {anchorName first}`Option` code, the {anchorName exceptNames (show := error)}`Except.error`-propagating {anchorName exceptNames}`Except` code, and the log-accumulating {moduleName}`WithLog` code, commingles two concerns: propagating the value of the counter, and actually traversing the tree to find the result. Just as in those cases, an {anchorName andThenState}`andThen` helper can be defined to propagate state from one step of a computation to another. The first step is to give a name to the pattern of taking an input state as an argument and returning an output state together with a value: diff --git a/book/FPLean/Monads/Class.lean b/book/FPLean/Monads/Class.lean index 1215b6b..83e8df9 100644 --- a/book/FPLean/Monads/Class.lean +++ b/book/FPLean/Monads/Class.lean @@ -242,9 +242,9 @@ Omitting the hint results in an error: ``` ```anchorError mapMIdNoHint failed to synthesize - HAdd Nat Nat (?m.22324 ?m.22326) + HAdd Nat Nat (?m.4 ?m.3) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` In this error, the application of one metavariable to another indicates that Lean doesn't run the type-level computation backwards. The return type of the function is expected to be the monad applied to some other type. diff --git a/book/FPLean/Monads/Conveniences.lean b/book/FPLean/Monads/Conveniences.lean index 2c7f7ba..e4e8226 100644 --- a/book/FPLean/Monads/Conveniences.lean +++ b/book/FPLean/Monads/Conveniences.lean @@ -148,7 +148,7 @@ def getTheAlpha : (Nat × α) ⊕ (Nat × α) → α | .inl (n, x) | .inr (n, y) => x ``` ```anchorError getTheAlpha -unknown identifier 'x' +Unknown identifier `x` ``` The fact that the result expression is essentially copy-pasted to each branch of the pattern match can lead to some surprising behavior. diff --git a/book/FPLean/Monads/Do.lean b/book/FPLean/Monads/Do.lean index 360c59f..e1a5314 100644 --- a/book/FPLean/Monads/Do.lean +++ b/book/FPLean/Monads/Do.lean @@ -33,14 +33,14 @@ This translates to a use of {lit}`>>=` together with a function that binds that ```anchor doSugar2a do let x ← E₁ Stmt - ... + … Eₙ ``` translates to ```anchor doSugar2b E₁ >>= fun x => do Stmt - ... + … Eₙ ``` @@ -48,14 +48,14 @@ When the first statement of the {kw}`do` block is an expression, then it is cons ```anchor doSugar3a do E₁ Stmt - ... + … Eₙ ``` translates to ```anchor doSugar3b E₁ >>= fun () => do Stmt - ... + … Eₙ ``` @@ -63,14 +63,14 @@ Finally, when the first statement of the {kw}`do` block is a {kw}`let` that uses ```anchor doSugar4a do let x := E₁ Stmt - ... + … Eₙ ``` translates to ```anchor doSugar4b let x := E₁ do Stmt - ... + … Eₙ ``` diff --git a/book/FPLean/ProgramsProofs/ArraysTermination.lean b/book/FPLean/ProgramsProofs/ArraysTermination.lean index 375be14..0fe8790 100644 --- a/book/FPLean/ProgramsProofs/ArraysTermination.lean +++ b/book/FPLean/ProgramsProofs/ArraysTermination.lean @@ -27,7 +27,7 @@ Both of these are expressed using an inequality proposition, rather than proposi Because different types have different notions of ordering, inequality is governed by two type classes, called {anchorName ordSugarClasses (module := Examples.Classes)}`LE` and {anchorName ordSugarClasses (module := Examples.Classes)}`LT`. The table in the section on {ref "equality-and-ordering"}[standard type classes] describes how these classes relate to the syntax: -:::table (header := true) +:::table +header * * Expression * Desugaring @@ -114,7 +114,7 @@ The inductively-defined predicate {anchorName IsThree}`IsThree` states that its inductive IsThree : Nat → Prop where | isThree : IsThree 3 ``` -The mechanism used here is just like {ref "column-pointers"}[indexed families such as {moduleName module := Examples.DependentTypes.DB}`HasCol`], except the resulting type is a proposition that can be proved rather than data that can be used. +The mechanism used here is just like {ref "column-pointers"}[indexed families such as {moduleName (module := Examples.DependentTypes.DB)}`HasCol`], except the resulting type is a proposition that can be proved rather than data that can be used. ::: Using this predicate, it is possible to prove that three is indeed three: @@ -161,7 +161,8 @@ theorem three_plus_two_five : IsThree n → IsFive (n + 2) := by ``` However, this results in an error: ```anchorError threePlusTwoFive1a -tactic 'constructor' failed, no applicable constructor found +Tactic `constructor` failed: no applicable constructor found + n : Nat three : IsThree n ⊢ IsFive (n + 2) diff --git a/book/FPLean/ProgramsProofs/Inequalities.lean b/book/FPLean/ProgramsProofs/Inequalities.lean index 7a4e111..747dab6 100644 --- a/book/FPLean/ProgramsProofs/Inequalities.lean +++ b/book/FPLean/ProgramsProofs/Inequalities.lean @@ -427,11 +427,11 @@ In this short tactic script, both goals introduced by {kw}`induction` are addres The tactic {lit}`first | T1 | T2 | ... | Tn` means to use try {lit}`T1` through {lit}`Tn` in order, using the first tactic that succeeds. In other words, {anchorTerm le_succ_of_le_golf}`repeat (first | constructor | assumption)` applies constructors as long as it can, and then attempts to solve the goal using an assumption. -The proof can be shortened even further by using {anchorTerm le_succ_of_le_omega}`omega`, a built-in solver for linear arithmetic: +The proof can be shortened even further by using {tactic}`grind`, which includes a solver for linear arithmetic: -```anchor le_succ_of_le_omega +```anchor le_succ_of_le_grind theorem Nat.le_succ_of_le (h : n ≤ m) : n ≤ m + 1:= by - omega + grind ``` Finally, the proof can be written as a recursive function: @@ -574,6 +574,49 @@ theorem splitList_shorter_snd (lst : List α) (h : lst.length ≥ 2) : splitList_shorter lst h |>.right ``` +## A Simpler Proof + +:::paragraph +Instead of using ordinary induction, {anchorName splitList_shorter_le_funInd1}`splitList_shorter_le` can be proved using functional induction, resulting in one case for each branch of {anchorName splitList}`splitList`: +```anchor splitList_shorter_le_funInd1 +theorem splitList_shorter_le (lst : List α) : + (splitList lst).fst.length ≤ lst.length ∧ + (splitList lst).snd.length ≤ lst.length := by + fun_induction splitList with + | case1 => skip + | case2 x xs a b splitEq ih => skip +``` +The first case matches the base case of {anchorName splitList}`splitList`. +_Both_ applications of {anchorName splitList}`splitList` have been replaced by the result of this first branch: +```anchorError splitList_shorter_le_funInd1 +unsolved goals +case case1 +α : Type u_1 +⊢ ([], []).fst.length ≤ [].length ∧ ([], []).snd.length ≤ [].length +``` +The second case matches the recursive branch of {anchorName splitList}`splitList`. +In addition to the induction hypothesis, the value of the {anchorTerm splitList}`let` in {anchorName splitList}`splitList` is tracked in an assumption: +```anchorError splitList_shorter_le_funInd1 +unsolved goals +case case2 +α : Type u_1 +x : α +xs a b : List α +splitEq : splitList xs = (a, b) +ih : (splitList xs).fst.length ≤ xs.length ∧ (splitList xs).snd.length ≤ xs.length +⊢ (x :: b, a).fst.length ≤ (x :: xs).length ∧ (x :: b, a).snd.length ≤ (x :: xs).length +``` +::: + +While the second case looks a bit complicated, everything needed to complete the proof is present. +Indeed, {tactic}`grind` can prove both goals immediately: +```anchor splitList_shorter_le_funInd2 +theorem splitList_shorter_le (lst : List α) : + (splitList lst).fst.length ≤ lst.length ∧ + (splitList lst).snd.length ≤ lst.length := by + fun_induction splitList <;> grind +``` + # Merge Sort Terminates Merge sort has two recursive calls, one for each sub-list returned by {anchorName splitList}`splitList`. @@ -663,7 +706,7 @@ declaration uses 'sorry' There is one promising assumption available: {lit}`h : ¬List.length xs < 2`, which comes from the {kw}`if`. Clearly, if it is not the case that {anchorTerm mergeSort}`xs.length < 2`, then {anchorTerm mergeSort}`xs.length ≥ 2`. -The {anchorTerm mergeSort}`omega` tactic solves this goal, and the program is now complete: +The {anchorTerm mergeSort}`grind` tactic solves this goal, and the program is now complete: ```anchor mergeSort def mergeSort [Ord α] (xs : List α) : List α := @@ -674,7 +717,7 @@ def mergeSort [Ord α] (xs : List α) : List α := else let halves := splitList xs have : xs.length ≥ 2 := by - omega + grind have : halves.fst.length < xs.length := by apply splitList_shorter_fst assumption @@ -769,7 +812,7 @@ termination_by n # Exercises -Prove the following theorems: +Prove the following theorems without using {tactic}`grind`: * For all natural numbers $`n`, $`0 < n + 1`. * For all natural numbers $`n`, $`0 \leq n`. diff --git a/book/FPLean/ProgramsProofs/InsertionSort.lean b/book/FPLean/ProgramsProofs/InsertionSort.lean index a8d3b43..f174129 100644 --- a/book/FPLean/ProgramsProofs/InsertionSort.lean +++ b/book/FPLean/ProgramsProofs/InsertionSort.lean @@ -79,7 +79,7 @@ def insertSorted [Ord α] (arr : Array α) (i : Fin arr.size) : Array α := | ⟨0, _⟩ => arr | ⟨i' + 1, _⟩ => have : i' < arr.size := by - omega + grind match Ord.compare arr[i'] arr[i] with | .lt | .eq => arr | .gt => @@ -88,7 +88,7 @@ def insertSorted [Ord α] (arr : Array α) (i : Fin arr.size) : Array α := If the index {anchorName insertSorted}`i` is {anchorTerm insertSorted}`0`, then the element being inserted into the sorted region has reached the beginning of the region and is the smallest. If the index is {anchorTerm insertSorted}`i' + 1`, then the element at {anchorName insertSorted}`i'` should be compared to the element at {anchorName insertSorted}`i`. Note that while {anchorName insertSorted}`i` is a {anchorTerm insertSorted}`Fin arr.size`, {anchorName insertSorted}`i'` is just a {anchorName insertionSortLoop}`Nat` because it results from the {anchorName names}`val` field of {anchorName insertSorted}`i`. -Nonetheless, the proof automation used for checking array index notation includes {anchorTerm insertSorted}`omega`, so {anchorName insertSorted}`i'` is automatically usable as an index. +Nonetheless, the proof automation used for checking array index notation includes a solver for linear integer arithmetic, so {anchorName insertSorted}`i'` is automatically usable as an index. The two elements are looked up and compared. If the element to the left is less than or equal to the element being inserted, then the loop is finished and the invariant has been restored. @@ -167,10 +167,10 @@ partial def insertionSortLoop [Ord α] (arr : Array α) (i : Nat) : Array α := #[3, 5, 8, 17] ``` ```anchor insertionSortPartialTwo -#eval insertionSortLoop #["metamorphic", "igneous", "sedentary"] 0 +#eval insertionSortLoop #["metamorphic", "igneous", "sedimentary"] 0 ``` ```anchorInfo insertionSortPartialTwo -#["igneous", "metamorphic", "sedentary"] +#["igneous", "metamorphic", "sedimentary"] ``` ## Termination @@ -362,277 +362,112 @@ heq✝ : compare arr[j'] arr[j' + 1] = Ordering.gt ⊢ (insertSorted (arr.swap j' (j' + 1) ⋯ ⋯) ⟨j', ⋯⟩).size = arr.size ``` +:::paragraph However, this whole proof is beginning to get unmanageable. The next step would be to introduce a variable standing for the length of the result of swapping, show that it is equal to {anchorTerm insert_sorted_size_eq_3}`arr.size`, and then show that this variable is also equal to the length of the array that results from the recursive call. These equality statements can then be chained together to prove the goal. -It's much easier, however, to carefully reformulate the theorem statement such that the induction hypothesis is automatically strong enough and the variables are already introduced. -The reformulated statement reads: -```anchor insert_sorted_size_eq_redo_0 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - skip -``` -This version of the theorem statement is easier to prove for a few reasons: - 1. Rather than bundling up the index and the proof of its validity in a {anchorName insertSorted}`Fin`, the index comes before the array. - This allows the induction hypothesis to naturally generalize over the array and the proof that {anchorName insert_sorted_size_eq_redo_0}`i` is in bounds. - 2. An abstract length {anchorName insert_sorted_size_eq_redo_0}`len` is introduced to stand for {anchorTerm insert_sorted_size_eq_redo_0}`arr.size`. - Proof automation is often better at working with explicit statements of equality. - -The resulting proof state shows the statement that will be used to generate the induction hypothesis, as well as the base case and the goal of the inductive step: -```anchorError insert_sorted_size_eq_redo_0 -unsolved goals -α : Type u_1 -inst✝ : Ord α -len i : Nat -⊢ ∀ (arr : Array α) (isLt : i < arr.size), arr.size = len → (insertSorted arr ⟨i, isLt⟩).size = len -``` - -Compare the statement with the goals that result from the {anchorTerm insert_sorted_size_eq_redo_1a}`induction` tactic: -```anchor insert_sorted_size_eq_redo_1a -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => skip - | succ i' ih => skip -``` -In the base case, each occurrence of {anchorName insert_sorted_size_eq_redo_1a}`i` has been replaced by {lit}`0`. -Using {anchorTerm insert_sorted_size_eq_redo_2}`intro` to introduce each assumption and then simplifying using {anchorName insert_sorted_size_eq_redo_2}`insertSorted` will prove the goal, because {anchorName insert_sorted_size_eq_redo_2}`insertSorted` at index {lit}`0` returns its argument unchanged: -```anchorError insert_sorted_size_eq_redo_1a -unsolved goals -case zero -α : Type u_1 -inst✝ : Ord α -len : Nat -⊢ ∀ (arr : Array α) (isLt : 0 < arr.size), arr.size = len → (insertSorted arr ⟨0, isLt⟩).size = len -``` -In the inductive step, the induction hypothesis has exactly the right strength. -It will be useful for _any_ array, so long as that array has length {anchorName insert_sorted_size_eq_redo_2}`len`: -```anchorError insert_sorted_size_eq_redo_1b -unsolved goals -case succ -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -⊢ ∀ (arr : Array α) (isLt : i' + 1 < arr.size), arr.size = len → (insertSorted arr ⟨i' + 1, isLt⟩).size = len -``` - -In the base case, {anchorTerm insert_sorted_size_eq_redo_2}`simp` reduces the goal to {anchorTerm insert_sorted_size_eq_redo_2}`arr.size = len`: -```anchor insert_sorted_size_eq_redo_2 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted] - | succ i' ih => skip -``` -```anchorError insert_sorted_size_eq_redo_2 +It's much easier, however, to use functional induction: +```anchor insert_sorted_size_eq_funInd1 +theorem insert_sorted_size_eq [Ord α] + (arr : Array α) (i : Fin arr.size) : + (insertSorted arr i).size = arr.size := by + fun_induction insertSorted with + | case1 arr isLt => skip + | case2 arr i isLt this isLt => skip + | case3 arr i isLt this isEq => skip + | case4 arr i isLt this isGt ih => skip +``` +The first goal is the case for index {anchorTerm insertSorted}`0`. +Here, the array is not modified, so proving that its size is unmodified will not require any complicated steps: +```anchorError insert_sorted_size_eq_funInd1 unsolved goals -case zero +case case1 α : Type u_1 inst✝ : Ord α -len : Nat -arr : Array α +arr✝ arr : Array α isLt : 0 < arr.size -hLen : arr.size = len -⊢ arr.size = len -``` -This can be proved using the assumption {anchorName insert_sorted_size_eq_redo_2b}`hLen`. -Adding the {anchorTerm insert_sorted_size_eq_redo_2b}`*` parameter to {anchorTerm insert_sorted_size_eq_redo_2b}`simp` instructs it to additionally use assumptions, which solves the goal: -```anchor insert_sorted_size_eq_redo_2b -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => skip -``` - -In the inductive step, introducing assumptions and simplifying the goal results once again in a goal that contains a pattern match: -```anchor insert_sorted_size_eq_redo_3 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] +⊢ arr.size = arr.size ``` -```anchorError insert_sorted_size_eq_redo_3 +The next two goals are the same, and cover the {anchorName insertSorted}`.lt` and {anchorName insertSorted}`.eq` cases for the element comparison. +The local assumptions {anchorName insert_sorted_size_eq_funInd1}`isLt` and {anchorName insert_sorted_size_eq_funInd1}`isEq` will allow the correct branch of the {anchorTerm insertSorted}`match` to be selected: +```anchorError insert_sorted_size_eq_funInd1 unsolved goals -case succ +case case2 α : Type u_1 inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -⊢ (match compare arr[i'] arr[i' + 1] with +arr✝ arr : Array α +i : Nat +isLt✝ : i + 1 < arr.size +this : i < arr.size +isLt : compare arr[i] arr[⟨i.succ, isLt✝⟩] = Ordering.lt +⊢ (match compare arr[i] arr[⟨i.succ, isLt✝⟩] with | Ordering.lt => arr | Ordering.eq => arr - | Ordering.gt => insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size = - len -``` -Using the {anchorTerm insert_sorted_size_eq_redo_4}`split` tactic results in one goal for each pattern. -Once again, the first two goals result from branches without recursive calls, so the induction hypothesis is not necessary: -```anchor insert_sorted_size_eq_redo_4 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split + | Ordering.gt => insertSorted (arr.swap i (↑⟨i.succ, isLt✝⟩) this ⋯) ⟨i, ⋯⟩).size = + arr.size ``` -```anchorError insert_sorted_size_eq_redo_4 +```anchorError insert_sorted_size_eq_funInd1 unsolved goals -case h_1 -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.lt -⊢ arr.size = len - -case h_2 +case case3 α : Type u_1 inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.eq -⊢ arr.size = len - -case h_3 -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.gt -⊢ (insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size = len -``` -Running {anchorTerm insert_sorted_size_eq_redo_5}`try assumption` in each goal that results from {anchorTerm insert_sorted_size_eq_redo_5}`split` eliminates both of the non-recursive goals: -```anchor insert_sorted_size_eq_redo_5 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split <;> try assumption +arr✝ arr : Array α +i : Nat +isLt : i + 1 < arr.size +this : i < arr.size +isEq : compare arr[i] arr[⟨i.succ, isLt⟩] = Ordering.eq +⊢ (match compare arr[i] arr[⟨i.succ, isLt⟩] with + | Ordering.lt => arr + | Ordering.eq => arr + | Ordering.gt => insertSorted (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯) ⟨i, ⋯⟩).size = + arr.size ``` -```anchorError insert_sorted_size_eq_redo_5 +In the final case, once the {anchorTerm insertSorted}`match` is reduced, there will be some work left to do to prove that the next step of the insertion preserves the size of the array. +In particular, the induction hypothesis states that the size of the next step is equal to the size of the result of the swap, but the desired conclusion is that it's equal to the size of the original array: +```anchorError insert_sorted_size_eq_funInd1 unsolved goals -case h_3 +case case4 α : Type u_1 inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.gt -⊢ (insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size = len -``` - -The new formulation of the proof goal, in which a constant {anchorName insert_sorted_size_eq_redo_6}`len` is used for the lengths of all the arrays involved in the recursive function, falls nicely within the kinds of problems that {anchorTerm insert_sorted_size_eq_redo_6}`simp` can solve. -This final proof goal can be solved by {anchorTerm insert_sorted_size_eq_redo_6}`simp [*]`, because the assumptions that relate the array's length to {anchorName insert_sorted_size_eq_redo_6}`len` are important: - -```anchor insert_sorted_size_eq_redo_6 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split <;> try assumption - simp [*] +arr✝ arr : Array α +i : Nat +isLt : i + 1 < arr.size +this : i < arr.size +isGt : compare arr[i] arr[⟨i.succ, isLt⟩] = Ordering.gt +ih : (insertSorted (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯) ⟨i, ⋯⟩).size = (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯).size +⊢ (match compare arr[i] arr[⟨i.succ, isLt⟩] with + | Ordering.lt => arr + | Ordering.eq => arr + | Ordering.gt => insertSorted (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯) ⟨i, ⋯⟩).size = + arr.size ``` +::: -Finally, because {anchorTerm insert_sorted_size_eq_redo}`simp [*]` can use assumptions, the {anchorTerm insert_sorted_size_eq_redo_6}`try assumption` line can be replaced by {anchorTerm insert_sorted_size_eq_redo}`simp [*]`, shortening the proof: - -```anchor insert_sorted_size_eq_redo -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split <;> simp [*] +:::paragraph +The Lean library includes the theorem {anchorName insert_sorted_size_eq_funInd}`Array.size_swap`, which states that swapping two elements of an array doesn't change its size. +By default, {tactic}`grind` doesn't use this fact, but once instructed to do so, it can take care of all four cases: +```anchor insert_sorted_size_eq_funInd +theorem insert_sorted_size_eq [Ord α] + (arr : Array α) (i : Fin arr.size) : + (insertSorted arr i).size = arr.size := by + fun_induction insertSorted <;> grind [Array.size_swap] ``` +::: +:::paragraph This proof can now be used to replace the {anchorTerm insertionSortLoopSorry}`sorry` in {anchorName insertionSortLoopSorry}`insertionSortLoop`. -Providing {anchorTerm insertionSortLoopRw}`arr.size` as the {anchorName insert_sorted_size_eq_redo}`len` argument to the theorem causes the final conclusion to be {lit}`(insertSorted arr ⟨i, isLt⟩).size = arr.size`, so the rewrite ends with a very manageable proof goal: -```anchor insertionSortLoopRw -def insertionSortLoop [Ord α] (arr : Array α) (i : Nat) : Array α := - if h : i < arr.size then - have : (insertSorted arr ⟨i, h⟩).size - (i + 1) < arr.size - i := by - rw [insert_sorted_size_eq arr.size i arr h rfl] - insertionSortLoop (insertSorted arr ⟨i, h⟩) (i + 1) - else - arr -termination_by arr.size - i -``` -```anchorError insertionSortLoopRw -unsolved goals -α : Type ?u.130721 -inst✝ : Ord α -arr : Array α -i : Nat -h : i < arr.size -⊢ arr.size - (i + 1) < arr.size - i -``` -The {anchorTerm insertionSortLoop}`omega` tactic can prove this: - +In particular, this theorem allows {anchorTerm insertionSortLoop}`grind` to succeed: ```anchor insertionSortLoop def insertionSortLoop [Ord α] (arr : Array α) (i : Nat) : Array α := if h : i < arr.size then have : (insertSorted arr ⟨i, h⟩).size - (i + 1) < arr.size - i := by - rw [insert_sorted_size_eq arr.size i arr h rfl] - omega + grind [insert_sorted_size_eq] insertionSortLoop (insertSorted arr ⟨i, h⟩) (i + 1) else arr termination_by arr.size - i ``` +::: # The Driver Function diff --git a/book/FPLean/ProgramsProofs/SpecialTypes.lean b/book/FPLean/ProgramsProofs/SpecialTypes.lean index 365bcc0..512167d 100644 --- a/book/FPLean/ProgramsProofs/SpecialTypes.lean +++ b/book/FPLean/ProgramsProofs/SpecialTypes.lean @@ -48,7 +48,7 @@ This means that {anchorName all}`true`, {anchorName all}`false`, and {anchorName The following types have special representations: -:::table (header := true) +:::table +header * * Type * Logical representation diff --git a/book/FPLean/ProgramsProofs/TailRecursionProofs.lean b/book/FPLean/ProgramsProofs/TailRecursionProofs.lean index 6ca9313..10df91f 100644 --- a/book/FPLean/ProgramsProofs/TailRecursionProofs.lean +++ b/book/FPLean/ProgramsProofs/TailRecursionProofs.lean @@ -472,7 +472,78 @@ Finally, using this helper theorem with the actual initial accumulator value res For example, in {anchorName nonTailEqRealDone}`non_tail_sum_eq_tail_sum`, the accumulator is specified to be {anchorTerm TailSum}`0`. This may require rewriting the goal to make the neutral initial accumulator values occur in the right place. +# Functional Induction + +The proof of {anchorName nonTailEqRealDone}`non_tail_sum_eq_helper_accum` follows the implementation of {anchorName TailSum}`Tail.sumHelper` closely. +There is not, however, a perfect match between the implementation and the structure expected by mathematical induction, which makes it necessary to manage the assumption {anchorName nonTailEqHelperDone}`n` carefully. +This is a small amount of work in the case of {anchorName nonTailEqHelperDone}`non_tail_sum_eq_helper_accum`, but proofs about functions whose definitions are further from the structure expected by {tactic}`induction` require more bookkeeping. + +In addition to proving theorems about recursive functions by induction on one of the arguments, Lean supports proofs by induction on the recursive call structure of functions. +This {deftech}_functional induction_ results in a base case for each branch of the function's control flow that does not include a recursive call, and inductive steps for each branch that does. +A proof by functional induction should demonstrate that the theorem holds for the non-recursive branches, and that if the theorem holds for the result of each recursive call, then it also holds for the result of the recursive branch. + +:::paragraph +Using functional induction simplifies {anchorName nonTailEqHelperFunInd1}`non_tail_sum_eq_helper_accum`: +```anchor nonTailEqHelperFunInd1 +theorem non_tail_sum_eq_helper_accum (xs : List Nat) (n : Nat) : + n + NonTail.sum xs = Tail.sumHelper n xs := by + fun_induction Tail.sumHelper with + | case1 n => skip + | case2 n y ys ih => skip +``` +Each branch of the proof matches the corresponding branch of {anchorName TailSum}`Tail.sumHelper`: +```anchorTerm TailSum +def Tail.sumHelper (soFar : Nat) : List Nat → Nat + | [] => soFar + | x :: xs => sumHelper (x + soFar) xs +``` +In the first, {anchorTerm nonTailEqHelperFunInd1}`case1`, the right side of the equality is the accumulator value, called {anchorName nonTailEqHelperFunInd1}`n` in the proof: +```anchorError nonTailEqHelperFunInd1 +unsolved goals +case case1 +n : Nat +⊢ n + NonTail.sum [] = n +``` +In the second, {anchorTerm nonTailEqHelperFunInd1}`case2`, the right side of the equality is the next step in the tail-recursive loop: +```anchorError nonTailEqHelperFunInd1 +unsolved goals +case case2 +n y : Nat +ys : List Nat +ih : y + n + NonTail.sum ys = Tail.sumHelper (y + n) ys +⊢ n + NonTail.sum (y :: ys) = Tail.sumHelper (y + n) ys +``` +::: + +:::paragraph +The resulting proof can be simpler. +The fundamentals of the argument, including the properties of addition that are used, are the same; however, the bookkeeping has been removed. +It is no longer necessary to manually juggle the accumulator value, and the induction hypothesis can be used directly instead of requiring instantiation: +```anchor nonTailEqHelperFunInd2 +theorem non_tail_sum_eq_helper_accum (xs : List Nat) (n : Nat) : + n + NonTail.sum xs = Tail.sumHelper n xs := by + fun_induction Tail.sumHelper with + | case1 n => simp [NonTail.sum] + | case2 n y ys ih => + simp [NonTail.sum] + rw [←Nat.add_assoc] + rw [Nat.add_comm n y] + assumption +``` +::: +:::paragraph +The {tactic}`grind` tactic is very well suited to this kind of goal. +Unlike {tactic}`simp` and {tactic}`rw`, it is not directional; internally, it accumulates a collection of facts until it either proves the goal completely or fails to do so. +It is preconfigured to use basic facts about arithmetic, such as the associativity and commutativity of addition, and it automatically uses local assumptions such as the induction hypothesis. +Using {tactic}`grind`, this proof becomes short and to-the-point: +```anchor nonTailEqHelperFunInd3 +theorem non_tail_sum_eq_helper_accum (xs : List Nat) (n : Nat) : + n + NonTail.sum xs = Tail.sumHelper n xs := by + fun_induction Tail.sumHelper <;> grind [NonTail.sum] +``` +This proof also matches the way the proof might be explained to a skilled programmer: “Just check both branches of {anchorName nonTailEqHelperFunInd3}`Tail.sumHelper`!” +::: # Exercise @@ -489,6 +560,7 @@ The first step is to think about the relationship between the accumulator value Just as adding a number to the accumulator in {anchorName TailSum}`Tail.sumHelper` is the same as adding it to the overall sum, using {anchorName names}`List.cons` to add a new entry to the accumulator in {anchorName TailReverse}`Tail.reverseHelper` is equivalent to some change to the overall result. Try three or four different accumulator values with pencil and paper until the relationship becomes clear. Use this relationship to prove a suitable helper theorem. +Try proving this helper theorem both using induction on lists and via functional induction. Then, write down the overall theorem. Because {anchorName reverseEqStart}`NonTail.reverse` and {anchorName TailReverse}`Tail.reverse` are polymorphic, stating their equality requires the use of {lit}`@` to stop Lean from trying to figure out which type to use for {anchorName reverseEqStart}`α`. Once {anchorName reverseEqStart}`α` is treated as an ordinary argument, {kw}`funext` should be invoked with both {anchorName reverseEqStart}`α` and {anchorName reverseEqStart}`xs`: diff --git a/book/FPLean/PropsProofsIndexing.lean b/book/FPLean/PropsProofsIndexing.lean index 9084a8f..d6bcf73 100644 --- a/book/FPLean/PropsProofsIndexing.lean +++ b/book/FPLean/PropsProofsIndexing.lean @@ -110,12 +110,12 @@ def onePlusOneIsFifteen : 1 + 1 = 15 := rfl ``` ```anchorError onePlusOneIsFifteen -type mismatch +Type mismatch rfl has type - ?m.1247 = ?m.1247 : Prop + ?m.16 = ?m.16 but is expected to have type - 1 + 1 = 15 : Prop + 1 + 1 = 15 ``` This error message indicates that {moduleTerm}`rfl` can prove that two expressions are equal when both sides of the equality statement are already the same number. @@ -156,13 +156,9 @@ theorem onePlusOneIsTwo : 1 + 1 = 2 := by decide ``` -The {kw}`decide` tactic invokes a _decision procedure_, which is a program that can check whether a statement is true or false, returning a suitable proof in either case. +The {tactic}`decide` tactic invokes a _decision procedure_, which is a program that can check whether a statement is true or false, returning a suitable proof in either case. It is primarily used when working with concrete values like {anchorTerm SomeNats}`1` and {anchorTerm SomeNats}`2`. -The other important tactic in this book is {kw}`simp`, short for “simplify,” which is the workhorse of Lean proofs. -It rewrites the goal to as simple a form as possible. -In many cases, this rewriting simplifies the statement so much that it can be automatically proved. -Behind the scenes, a detailed formal proof is constructed, but using {kw}`simp` hides this complexity. - +The other important tactics in this book are {tactic}`simp`, short for “simplify,” and {tactic}`grind`, which can automatically prove many theorems. Tactics are useful for a number of reasons: 1. Many proofs are complicated and tedious when written out down to the smallest detail, and tactics can automate these uninteresting parts. @@ -172,6 +168,16 @@ Tactics are useful for a number of reasons: Behind the scenes, indexing notation uses a tactic to prove that the user's lookup operation is safe. This tactic takes many facts about arithmetic into account, combining them with any locally-known facts to attempt to prove that the index is in bounds. +The {tactic}`simp` tactic is a workhorse of Lean proofs. +It rewrites the goal to as simple a form as possible. +In many cases, this rewriting simplifies the statement so much that it can be automatically proved. +Behind the scenes, a detailed formal proof is constructed, but using {tactic}`simp` hides this complexity. + +Like {tactic}`decide`, the {tactic}`grind` tactic is used to finish proofs. +It uses a collection of techniques from SMT solvers that can prove a wide variety of theorems. +Unlike {tactic}`simp`, {tactic}`grind` can never make progress towards a proof without completing it entirely; it either succeeds fully or fails. +The {tactic}`grind` tactic is very powerful, customizable, and extensible; due to this power and flexibility, its output when it fails to prove a theorem contains a lot of information that can help trained Lean users diagnose the reason for the failure. +This can be overwhelming in the beginning, so this chapter uses only {tactic}`decide` and {tactic}`simp`. # Connectives %%% @@ -188,7 +194,7 @@ In particular, most of these connectives are defined like datatypes, and they ha If {anchorTerm AndProp}`A` and {anchorTerm AndProp}`B` are propositions, then “{anchorTerm AndProp}`A` and {anchorTerm AndProp}`B`” (written {anchorTerm AndProp}`A ∧ B`) is a proposition. Evidence for {anchorTerm AndProp}`A ∧ B` consists of the constructor {anchorTerm AndIntro}`And.intro`, which has the type {anchorTerm AndIntro}`A → B → A ∧ B`. Replacing {anchorTerm AndIntro}`A` and {anchorTerm AndIntro}`B` with concrete propositions, it is possible to prove {anchorTerm AndIntroEx}`1 + 1 = 2 ∧ "Str".append "ing" = "String"` with {anchorTerm AndIntroEx}`And.intro rfl rfl`. -Of course, {kw}`decide` is also powerful enough to find this proof: +Of course, {tactic}`decide` is also powerful enough to find this proof: ```anchor AndIntroExTac theorem addAndAppend : 1 + 1 = 2 ∧ "Str".append "ing" = "String" := by @@ -214,7 +220,7 @@ theorem andImpliesOr : A ∧ B → A ∨ B := ``` -:::table (header := true) +:::table +header * - Connective - Lean Syntax @@ -252,11 +258,11 @@ theorem andImpliesOr : A ∧ B → A ∨ B := ::: -The {kw}`decide` tactic can prove theorems that use these connectives. +The {tactic}`decide` tactic can prove theorems that use these connectives. For example: ```anchor connectivesD -theorem onePlusOneAndLessThan : 1 + 1 = 2 ∨ 3 < 5 := by decide +theorem onePlusOneOrLessThan : 1 + 1 = 2 ∨ 3 < 5 := by decide theorem notTwoEqualFive : ¬(1 + 1 = 5) := by decide theorem trueIsTrue : True := by decide theorem trueOrFalse : True ∨ False := by decide @@ -357,13 +363,13 @@ When asked to prove that a one-element list has more than two elements, it retur ```anchorError thirdRabbitErr -tactic 'decide' proved that the proposition +Tactic `decide` proved that the proposition ["rabbit"].length > 2 is false ``` -The {kw}`simp` and {kw}`decide` tactics do not automatically unfold definitions with {kw}`def`. +The {tactic}`simp` and {tactic}`decide` tactics do not automatically unfold definitions with {kw}`def`. Attempting to prove {anchorTerm onePlusOneIsStillTwo}`OnePlusOneIsTwo` using {anchorTerm onePlusOneIsStillTwo}`simp` fails: ```anchor onePlusOneIsStillTwo @@ -373,7 +379,7 @@ theorem onePlusOneIsStillTwo : OnePlusOneIsTwo := by simp The error messages simply states that it could do nothing, because without unfolding {anchorTerm onePlusOneIsStillTwo}`OnePlusOneIsTwo`, no progress can be made: ```anchorError onePlusOneIsStillTwo -simp made no progress +`simp` made no progress ``` Using {anchorTerm onePlusOneIsStillTwo2}`decide` also fails: @@ -388,7 +394,7 @@ This is also due to it not unfolding {anchorName onePlusOneIsStillTwo2}`OnePlusO failed to synthesize Decidable OnePlusOneIsTwo -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` Defining {anchorName onePlusOneIsStillTwo}`OnePlusOneIsTwo` with {ref "abbrev-vs-def"}[{kw}`abbrev` fixes the problem] by marking the definition for unfolding. @@ -404,7 +410,7 @@ def unsafeThird (xs : List α) : α := xs[2]! failed to synthesize Inhabited α -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` This is due to a technical restriction that is part of keeping Lean usable as both a logic for proving theorems and a programming language. @@ -425,10 +431,13 @@ Adding whitespace between a list and the brackets used for lookup can cause anot ```anchorError extraSpace -function expected at +Function expected at woodlandCritters -term has type +but this term has type List String + +Note: Expected a function because this term is being applied to the argument + [1] ``` Adding a space causes Lean to treat the expression as a function application, and the index as a list that contains a single number. diff --git a/book/FPLean/TacticsInductionProofs.lean b/book/FPLean/TacticsInductionProofs.lean index de363cf..968c206 100644 --- a/book/FPLean/TacticsInductionProofs.lean +++ b/book/FPLean/TacticsInductionProofs.lean @@ -188,8 +188,8 @@ The above proof is no shorter than the recursive function; it's merely written i But proofs with tactics can be shorter, easier, and more maintainable. Just as a lower score is better in the game of golf, a shorter proof is better in the game of tactic golf. -The induction step of {anchorName plusR_zero_left_golf_1}`plusR_zero_left` can be proved using the simplification tactic {kw}`simp`. -Using {kw}`simp` on its own does not help: +The induction step of {anchorName plusR_zero_left_golf_1}`plusR_zero_left` can be proved using the simplification tactic {tactic}`simp`. +Using {tactic}`simp` on its own does not help: ```anchor plusR_zero_left_golf_1 theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by induction k with @@ -198,11 +198,11 @@ theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by simp ``` ```anchorError plusR_zero_left_golf_1 -simp made no progress +`simp` made no progress ``` -However, {kw}`simp` can be configured to make use of a set of definitions. +However, {tactic}`simp` can be configured to make use of a set of definitions. Just like {kw}`rw`, these arguments are provided in a list. -Asking {kw}`simp` to take the definition of {anchorName plusR_zero_left_golf_1}`Nat.plusR` into account leads to a simpler goal: +Asking {tactic}`simp` to take the definition of {anchorName plusR_zero_left_golf_1}`Nat.plusR` into account leads to a simpler goal: ```anchor plusR_zero_left_golf_2 theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by induction k with @@ -244,7 +244,7 @@ theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by ``` This proof is no shorter than the prior proof that used unfolding and explicit rewriting. -However, a series of transformations can make it much shorter, taking advantage of the fact that {kw}`simp` can solve many kinds of goals. +However, a series of transformations can make it much shorter, taking advantage of the fact that {tactic}`simp` can solve many kinds of goals. The first step is to drop the {kw}`with` at the end of {kw}`induction`. For structured, readable proofs, the {kw}`with` syntax is convenient. It complains if any cases are missing, and it shows the structure of the induction clearly. @@ -271,9 +271,9 @@ If the result is zero goals, then the tactic was a success, and that part of the The {kw}`<;>` operator takes two tactics as arguments, resulting in a new tactic. {lit}`T1 `{kw}`<;>`{lit}` T2` applies {lit}`T1` to the current goal, and then applies {lit}`T2` in _all_ goals created by {lit}`T1`. In other words, {kw}`<;>` enables a general tactic that can solve many kinds of goals to be used on multiple new goals all at once. -One such general tactic is {kw}`simp`. +One such general tactic is {tactic}`simp`. -Because {kw}`simp` can both complete the proof of the base case and make progress on the proof of the induction step, using it with {kw}`induction` and {kw}`<;>` shortens the proof: +Because {tactic}`simp` can both complete the proof of the base case and make progress on the proof of the induction step, using it with {kw}`induction` and {kw}`<;>` shortens the proof: ```anchor plusR_zero_left_golf_6a theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by induction k <;> simp [Nat.plusR] @@ -295,7 +295,7 @@ theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by Here, {kw}`exact` would not have been possible, because {lit}`ih` was never explicitly named. For beginners, this proof is not easier to read. -However, a common pattern for expert users is to take care of a number of simple cases with powerful tactics like {kw}`simp`, allowing them to focus the text of the proof on the interesting cases. +However, a common pattern for expert users is to take care of a number of simple cases with powerful tactics like {tactic}`simp`, allowing them to focus the text of the proof on the interesting cases. Additionally, these proofs tend to be more robust in the face of small changes to the functions and datatypes involved in the proof. The game of tactic golf is a useful part of developing good taste and style when writing proofs. @@ -351,7 +351,7 @@ ihr : r.mirror.count = r.count The base case is true because mirroring {anchorName mirror_count_1}`leaf` results in {anchorName mirror_count_1}`leaf`, so the left and right sides are definitionally equal. -This can be expressed by using {kw}`simp` with instructions to unfold {anchorName mirror_count_1}`BinTree.mirror`: +This can be expressed by using {tactic}`simp` with instructions to unfold {anchorName mirror_count_1}`BinTree.mirror`: ```anchor mirror_count_1 theorem BinTree.mirror_count (t : BinTree α) : t.mirror.count = t.count := by @@ -402,7 +402,7 @@ ihr : r.mirror.count = r.count ⊢ 1 + r.count + l.count = 1 + l.count + r.count ``` -The {kw}`simp` tactic can use additional arithmetic identities when passed the {anchorTerm mirror_count_4}`+arith` option. +The {tactic}`simp` tactic can use additional arithmetic identities when passed the {anchorTerm mirror_count_4}`+arith` option. It is enough to prove this goal, yielding: ```anchor mirror_count_4 @@ -429,7 +429,7 @@ theorem BinTree.mirror_count (t : BinTree α) : ``` As proofs grow more complicated, listing assumptions by hand can become tedious. Furthermore, manually writing assumption names can make it more difficult to re-use proof steps for multiple subgoals. -The argument {lit}`*` to {kw}`simp` or {kw}`simp +arith` instructs them to use _all_ assumptions while simplifying or solving the goal. +The argument {lit}`*` to {tactic}`simp` or {kw}`simp +arith` instructs them to use _all_ assumptions while simplifying or solving the goal. In other words, the proof could also be written: ```anchor mirror_count_6 @@ -448,6 +448,20 @@ theorem BinTree.mirror_count (t : BinTree α) : induction t <;> simp +arith [BinTree.mirror, BinTree.count, *] ``` +# The {lit}`grind` Tactic + +The {tactic}`grind` tactic can automatically prove many theorems. +Like {tactic}`simp`, it accepts an optional list of additional facts to take into consideration or functions to unfold; unlike {tactic}`simp`, it automatically takes local hypotheses into consideration. +Additionally, {tactic}`grind`'s support for reasoning about specific mathematical domains is far stronger than {tactic}`simp`'s arithmetic support. +The proof of {anchorName mirror_count_8}`BinTree.mirror_count` can rewritten to use {tactic}`grind`: +```anchor mirror_count_8 +theorem BinTree.mirror_count (t : BinTree α) : + t.mirror.count = t.count := by + induction t <;> grind [BinTree.mirror, BinTree.count] +``` + +Because the proofs in this book are fairly modest, most of them do not provide an opportunity for {tactic}`grind` to show its full power. +However, it is very convenient in some of the later proofs in the book. # Exercises diff --git a/book/FPLean/TypeClasses.lean b/book/FPLean/TypeClasses.lean index 56a6aac..4ec36e5 100644 --- a/book/FPLean/TypeClasses.lean +++ b/book/FPLean/TypeClasses.lean @@ -21,6 +21,9 @@ set_option verso.exampleModule "Examples.Classes" set_option pp.rawOnError true #doc (Manual) "Overloading and Type Classes" => +%%% +tag := "type-classes" +%%% In many languages, the built-in datatypes get special treatment. For example, in C and Java, {lit}`+` can be used to add {c}`float`s and {c}`int`s, but not arbitrary-precision numbers from a third-party library. diff --git a/book/FPLean/TypeClasses/Coercions.lean b/book/FPLean/TypeClasses/Coercions.lean index 31157ba..e0f26be 100644 --- a/book/FPLean/TypeClasses/Coercions.lean +++ b/book/FPLean/TypeClasses/Coercions.lean @@ -58,14 +58,14 @@ Applying {anchorName drop}`List.drop` to a {moduleName}`Pos`, however, leads to [1, 2, 3, 4].drop (2 : Pos) ``` ```anchorError dropPos -Application type mismatch: In the application - List.drop 2 -the argument +Application type mismatch: The argument 2 has type - Pos : Type + Pos but is expected to have type - Nat : Type + Nat +in the application + List.drop 2 ``` Because the author of {anchorName drop}`List.drop` did not make it a method of a type class, it can't be overridden by defining a new instance. @@ -175,7 +175,7 @@ numerals are polymorphic in Lean, but the numeral `392` cannot be used in a cont Option (Option (Option Nat)) due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` ::: @@ -333,10 +333,13 @@ This {anchorName Adder}`Adder` type is not a function, and applying it to an arg #eval add5 3 ``` ```anchorError add5notfun -function expected at +Function expected at add5 -term has type +but this term has type Adder + +Note: Expected a function because this term is being applied to the argument + 3 ``` Defining a {anchorName CoeFunAdder}`CoeFun` instance causes Lean to transform the adder into a function with type {anchorTerm CoeFunAdder}`Nat → Nat`: @@ -365,7 +368,6 @@ inductive JSON where | number : Float → JSON | object : List (String × JSON) → JSON | array : List JSON → JSON -deriving Repr ``` a JSON serializer is a structure that tracks the type it knows how to serialize along with the serialization code itself: @@ -497,7 +499,7 @@ numerals are polymorphic in Lean, but the numeral `392` cannot be used in a cont Option (Option (Option Nat)) due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` # Design Considerations @@ -526,14 +528,14 @@ def lastSpider := List.getLast? idahoSpiders ``` ```anchorError lastSpiderB -Application type mismatch: In the application - List.getLast? idahoSpiders -the argument +Application type mismatch: The argument idahoSpiders has type - NonEmptyList String : Type + NonEmptyList String but is expected to have type - List ?m.56328 : Type + List ?m.3 +in the application + List.getLast? idahoSpiders ``` More generally, when a coercion is not applied for some reason, the user receives the original type error, which can make it difficult to debug chains of coercions. diff --git a/book/FPLean/TypeClasses/Indexing.lean b/book/FPLean/TypeClasses/Indexing.lean index 4dd9cc8..4984406 100644 --- a/book/FPLean/TypeClasses/Indexing.lean +++ b/book/FPLean/TypeClasses/Indexing.lean @@ -135,7 +135,7 @@ tag := "overloading-indexing" %%% Indexing notation for a collection type can be overloaded by defining an instance of the {anchorName GetElem}`GetElem` type class. -For the sake of flexiblity, {anchorName GetElem}`GetElem` has four parameters: +For the sake of flexibility, {anchorName GetElem}`GetElem` has four parameters: * The type of the collection * The type of the index * The type of elements that are extracted from the collection diff --git a/book/FPLean/TypeClasses/Polymorphism.lean b/book/FPLean/TypeClasses/Polymorphism.lean index 33852e3..482fac2 100644 --- a/book/FPLean/TypeClasses/Polymorphism.lean +++ b/book/FPLean/TypeClasses/Polymorphism.lean @@ -92,7 +92,7 @@ def fourPos : List Pos := [1, 2, 3, 4] failed to synthesize Zero Pos -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` The Lean standard library includes this function, where it is called {moduleName}`List.sum`. @@ -114,7 +114,6 @@ The {ref "polymorphism"}[section on polymorphism] presented a polymorphic point structure PPoint (α : Type) where x : α y : α -deriving Repr ``` Addition of points should add the underlying {anchorName PPoint}`x` and {anchorName PPoint}`y` fields. Thus, an {anchorName AddPPoint}`Add` instance for {anchorName AddPPoint}`PPoint` requires an {anchorName AddPPoint}`Add` instance for whatever type these fields have. diff --git a/book/FPLean/TypeClasses/Pos.lean b/book/FPLean/TypeClasses/Pos.lean index 82d7765..adaecd1 100644 --- a/book/FPLean/TypeClasses/Pos.lean +++ b/book/FPLean/TypeClasses/Pos.lean @@ -39,7 +39,7 @@ numerals are polymorphic in Lean, but the numeral `7` cannot be used in a contex Pos due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` Instead, the constructors must be used directly: ```anchor seven @@ -53,18 +53,18 @@ def fourteen : Pos := seven + seven ``` ```anchorError fourteenOops failed to synthesize - HAdd Pos Pos ?m.543 + HAdd Pos Pos ?m.3 -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` ```anchor fortyNineOops def fortyNine : Pos := seven * seven ``` ```anchorError fortyNineOops failed to synthesize - HMul Pos Pos ?m.576 + HMul Pos Pos ?m.3 -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` Each of these error messages begins with {lit}`failed to synthesize`. @@ -148,7 +148,7 @@ Because there is not yet an instance of {anchorTerm PlusFloat}`Plus Float`, atte failed to synthesize Plus Float -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` These errors mean that Lean was unable to find an instance for a given type class. @@ -224,7 +224,7 @@ instance : ToString Pos where "There are 7" ``` When more than one instance is defined, the most recent takes precedence. -Additionally, if a type has a {anchorName UglyToStringPos}`ToString` instance, then it can be used to display the result of {kw}`#eval` even if the type in question was not defined with {anchorTerm JSON}`deriving Repr`, so {anchorTerm sevenEvalStr}`#eval seven` outputs {anchorInfo sevenEvalStr}`7`. +Additionally, if a type has a {anchorName UglyToStringPos}`ToString` instance, then it can be used to display the result of {kw}`#eval` so {anchorTerm sevenEvalStr}`#eval seven` outputs {anchorInfo sevenEvalStr}`7`. # Overloaded Multiplication @@ -318,7 +318,6 @@ inductive LT4 where | one | two | three -deriving Repr ``` While it would not make sense to allow _any_ literal number to be used for this type, numbers less than four clearly make sense: @@ -359,7 +358,7 @@ numerals are polymorphic in Lean, but the numeral `4` cannot be used in a contex LT4 due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` For {anchorName PosMul}`Pos`, the {anchorTerm OfNat}`OfNat` instance should work for _any_ {anchorTerm chapterIntro}`Nat` other than {anchorName PosStuff}`Nat.zero`. @@ -391,7 +390,7 @@ numerals are polymorphic in Lean, but the numeral `0` cannot be used in a contex Pos due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` # Exercises diff --git a/book/FPLean/TypeClasses/StandardClasses.lean b/book/FPLean/TypeClasses/StandardClasses.lean index fbd316a..f81b0b9 100644 --- a/book/FPLean/TypeClasses/StandardClasses.lean +++ b/book/FPLean/TypeClasses/StandardClasses.lean @@ -24,7 +24,7 @@ Most arithmetic operators are available in a heterogeneous form, where the argum For each heterogeneous operator, there is a corresponding homogeneous version that can found by removing the letter {lit}`h`, so that {moduleName}`HAdd.hAdd` becomes {moduleName}`Add.add`. The following arithmetic operators are overloaded: -:::table (header := true) +:::table +header * - Expression @@ -69,7 +69,7 @@ There are instances for fixed-width types such as {anchorTerm UInt8}`UInt8`, {an The latter is the size of words on the current platform, typically 32 or 64 bits. The following bitwise operators are overloaded: -:::table (header := true) +:::table +header * - Expression - Desugaring @@ -123,7 +123,7 @@ For example, {anchorTerm functionEq}`(fun (x : Nat) => 1 + x) == (Nat.succ ·)` failed to synthesize BEq (Nat → Nat) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` As this message indicates, {lit}`==` is overloaded using a type class. The expression {anchorTerm beqDesugar}`x == y` is actually shorthand for {anchorTerm beqDesugar}`BEq.beq x y`. @@ -163,12 +163,12 @@ For example, {anchorTerm funEqDec}`if (fun (x : Nat) => 1 + x) = (Nat.succ ·) t failed to synthesize Decidable ((fun x => 1 + x) = fun x => x.succ) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. ``` The following propositions, that are usually decidable, are overloaded with type classes: -:::table (header := true) +:::table +header * - Expression - Desugaring @@ -221,12 +221,12 @@ instance {x : Pos} {y : Pos} : Decidable (x ≤ y) := inferInstanceAs (Decidable (x.toNat < y.toNat)) ``` ```anchorError LTLEMismatch -type mismatch +Type mismatch inferInstanceAs (Decidable (x.toNat < y.toNat)) has type - Decidable (x.toNat < y.toNat) : Type + Decidable (x.toNat < y.toNat) but is expected to have type - Decidable (x ≤ y) : Type + Decidable (x ≤ y) ``` :::paragraph @@ -328,7 +328,7 @@ instance [Hashable α] : Hashable (BinTree α) where Instance of classes like {moduleName}`BEq` and {moduleName}`Hashable` are often quite tedious to implement by hand. Lean includes a feature called _instance deriving_ that allows the compiler to automatically construct well-behaved instances of many type classes. -In fact, the {anchorTerm Point (module := Examples.Intro)}`deriving Repr` phrase in the definition of {anchorName Point (module:=Examples.Intro)}`Point` in the {ref "structures"}[section on structures] is an example of instance deriving. +In fact, the {anchorTerm Firewood (module := Examples.Intro)}`deriving Repr` phrase in the definition of {anchorName Firewood (module:=Examples.Intro)}`Firewood` in the {ref "polymorphism"}[first section on polymorphism] is an example of instance deriving. Instances can be derived in two ways. The first can be used when defining a structure or inductive type. @@ -504,7 +504,7 @@ deriving instance ToString for NonEmptyList ``` results in the following error: ```anchorError derivingNotFound -default handlers have not been implemented yet, class: 'ToString' types: [NonEmptyList] +No deriving handlers have been implemented for class `ToString` ``` Invoking {anchorTerm derivingNotFound}`deriving instance` causes Lean to consult an internal table of code generators for type class instances. If the code generator is found, then it is invoked on the provided type to create the instance. diff --git a/book/FPLean/TypeClasses/Summary.lean b/book/FPLean/TypeClasses/Summary.lean index 3d95ad7..8ba5f43 100644 --- a/book/FPLean/TypeClasses/Summary.lean +++ b/book/FPLean/TypeClasses/Summary.lean @@ -44,7 +44,7 @@ When an instance is a default instance, then it will be chosen as a fallback whe Most infix operators in Lean are overridden with a type class. For instance, the addition operator corresponds to a type class called {moduleName}`Add`. Most of these operators have a corresponding heterogeneous version, in which the two arguments need not have the same type. -These heterogenous operators are overloaded using a version of the class whose name starts with {lit}`H`, such as {moduleName}`HAdd`. +These heterogeneous operators are overloaded using a version of the class whose name starts with {lit}`H`, such as {moduleName}`HAdd`. Indexing syntax is overloaded using a type class called {moduleName}`GetElem`, which involves proofs. {moduleName}`GetElem` has two output parameters, which are the type of elements to be extracted from the collection and a function that can be used to determine what counts as evidence that the index value is in bounds for the collection. diff --git a/book/lake-manifest.json b/book/lake-manifest.json index ee1d13a..3c1ebdf 100644 --- a/book/lake-manifest.json +++ b/book/lake-manifest.json @@ -5,7 +5,7 @@ "type": "git", "subDir": null, "scope": "", - "rev": "c8ef4e8c1846d133ea39d878ba4e6e7e1b69ba4d", + "rev": "a54297313f81c9243c4e8c1e72270c1f7681f0f0", "name": "verso", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -15,7 +15,7 @@ "type": "git", "subDir": null, "scope": "", - "rev": "b16338c5c66f57ef5510d4334eb6fa4e2c6c8cd8", + "rev": "66aefec2852d3e229517694e642659f316576591", "name": "MD4Lean", "manifestFile": "lake-manifest.json", "inputRev": "main", @@ -25,7 +25,7 @@ "type": "git", "subDir": null, "scope": "", - "rev": "597aa7f6d1d4bc22c5bdef797797497b10bea1f4", + "rev": "767f10408ca8abe29a15add2bf111eefdd9522b2", "name": "subverso", "manifestFile": "lake-manifest.json", "inputRev": "main", diff --git a/book/lean-toolchain b/book/lean-toolchain index 8ce1023..fd384f2 100644 --- a/book/lean-toolchain +++ b/book/lean-toolchain @@ -1 +1 @@ -leanprover/lean4:v4.22.0-rc4 \ No newline at end of file +leanprover/lean4:v4.24.0-rc1 diff --git a/book/verso-sources.json b/book/verso-sources.json index 57a12cc..166c291 100644 --- a/book/verso-sources.json +++ b/book/verso-sources.json @@ -2,10 +2,10 @@ "version": 0, "sources": { "manual": { - "root": "https://lean-lang.org/doc/reference/4.19.0/", + "root": "https://lean-lang.org/doc/reference/4.23.0/", "updateFrequency": "manual", "shortName": "ref", "longName": "Lean Language Reference" } } -} \ No newline at end of file +} diff --git a/examples/ExampleSupport.lean b/examples/ExampleSupport.lean index cf1ed70..415b670 100644 --- a/examples/ExampleSupport.lean +++ b/examples/ExampleSupport.lean @@ -180,12 +180,12 @@ elab_rules : command expect error {{{ errorEx1 }}} def x : Nat := "I am not a Nat" message -"type mismatch +"Type mismatch \"I am not a Nat\" has type - String : Type + String but is expected to have type - Nat : Type" + Nat" end expect diff --git a/examples/Examples/Classes.lean b/examples/Examples/Classes.lean index 7120e15..d4dd805 100644 --- a/examples/Examples/Classes.lean +++ b/examples/Examples/Classes.lean @@ -95,11 +95,11 @@ open Plus (plus) example : {α : Type} → [Plus α] → α → α → α := @Plus.plus -- ANCHOR_END: plusType -/-- error: -failed to synthesize +/-- +error: failed to synthesize Plus Float -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: plusFloatFail @@ -130,14 +130,14 @@ example := Nat.zero -- ANCHOR_END: PosStuff discarding -/-- error: -failed to synthesize +/-- +error: failed to synthesize OfNat Pos 7 numerals are polymorphic in Lean, but the numeral `7` cannot be used in a context where the expected type is Pos due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: sevenOops @@ -151,11 +151,11 @@ def seven : Pos := -- ANCHOR_END: seven discarding -/-- error: -failed to synthesize - HAdd Pos Pos ?m.332 +/-- +error: failed to synthesize + HAdd Pos Pos ?m.3 -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: fourteenOops @@ -163,11 +163,11 @@ def fourteen : Pos := seven + seven -- ANCHOR_END: fourteenOops stop discarding -/-- error: -failed to synthesize - HMul Pos Pos ?m.332 +/-- +error: failed to synthesize + HMul Pos Pos ?m.3 -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: fortyNineOops @@ -360,7 +360,6 @@ inductive LT4 where | one | two | three -deriving Repr -- ANCHOR_END: LT4 @@ -395,14 +394,14 @@ LT4.zero #eval (0 : LT4) -- ANCHOR_END: LT4zero -/-- error: -failed to synthesize +/-- +error: failed to synthesize OfNat LT4 4 numerals are polymorphic in Lean, but the numeral `4` cannot be used in a context where the expected type is LT4 due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: LT4four @@ -436,14 +435,14 @@ def eight : Pos := 8 -- ANCHOR_END: eight -/-- error: -failed to synthesize +/-- +error: failed to synthesize OfNat Pos 0 numerals are polymorphic in Lean, but the numeral `0` cannot be used in a context where the expected type is Pos due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: zeroBad @@ -514,11 +513,11 @@ def fourPos : List Pos := [1, 2, 3, 4] -- ANCHOR_END: fourNatsSum -/-- error: -failed to synthesize +/-- +error: failed to synthesize Zero Pos -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: fourPosSum @@ -532,7 +531,6 @@ namespace PointStuff structure PPoint (α : Type) where x : α y : α -deriving Repr -- ANCHOR_END: PPoint @@ -1099,11 +1097,11 @@ example : ("Octopus" == "Cuttlefish") = false := rfl example : ("Octopodes" == "Octo".append "podes") = true := rfl -- ANCHOR_END: boolEqFalse -/-- error: -failed to synthesize +/-- +error: failed to synthesize BEq (Nat → Nat) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: functionEq @@ -1133,13 +1131,13 @@ instance {x : Pos} {y : Pos} : Decidable (x ≤ y) := inferInstanceAs (Decidable (x.toNat ≤ y.toNat)) -- ANCHOR_END: DecLTLEPos -/-- error: -type mismatch +/-- +error: Type mismatch inferInstanceAs (Decidable (x.toNat < y.toNat)) has type - Decidable (x.toNat < y.toNat) : Type + Decidable (x.toNat < y.toNat) but is expected to have type - Decidable (x ≤ y) : Type + Decidable (x ≤ y) -/ #check_msgs in -- ANCHOR: LTLEMismatch @@ -1171,11 +1169,11 @@ class HTTP (m : Method) where #check 2 < 4 -- ANCHOR_END: twoLessFour -/-- error: -failed to synthesize +/-- +error: failed to synthesize Decidable ((fun x => 1 + x) = fun x => x.succ) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: funEqDec @@ -1290,9 +1288,7 @@ deriving instance BEq, Hashable for NonEmptyList -- ANCHOR_END: BEqHashableDerive -/-- error: -default handlers have not been implemented yet, class: 'ToString' types: [NonEmptyList] --/ +/-- error: No deriving handlers have been implemented for class `ToString` -/ #check_msgs in -- ANCHOR: derivingNotFound deriving instance ToString for NonEmptyList @@ -1482,14 +1478,14 @@ example : {α : Type} → Nat → List α → List α := @List.drop -- ANCHOR_END: drop /-- -error: Application type mismatch: In the application - List.drop 2 -the argument +error: Application type mismatch: The argument 2 has type - Pos : Type + Pos but is expected to have type - Nat : Type + Nat +in the application + List.drop 2 -/ #check_msgs in -- ANCHOR: dropPos @@ -1546,14 +1542,14 @@ def perhapsPerhapsPerhaps : Option (Option (Option String)) := discarding -/-- error: -failed to synthesize +/-- +error: failed to synthesize OfNat (Option (Option (Option Nat))) 392 numerals are polymorphic in Lean, but the numeral `392` cannot be used in a context where the expected type is Option (Option (Option Nat)) due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: ofNatBeforeCoe @@ -1595,12 +1591,12 @@ instance : CoeDep (List α) (x :: xs) (NonEmptyList α) where -- ANCHOR_END: CoeDepListNEList /-- -error: type mismatch +error: Type mismatch [] has type - List ?m.22415 : Type + List ?m.2 but is expected to have type - NonEmptyList Nat : Type + NonEmptyList Nat -/ #check_msgs in #eval ([] : NonEmptyList Nat) @@ -1618,7 +1614,6 @@ inductive JSON where | number : Float → JSON | object : List (String × JSON) → JSON | array : List JSON → JSON -deriving Repr -- ANCHOR_END: JSON @@ -1789,11 +1784,14 @@ structure Adder where def add5 : Adder := ⟨5⟩ -- ANCHOR_END: add5 -/-- error: -function expected at +/-- +error: Function expected at add5 -term has type +but this term has type Adder + +Note: Expected a function because this term is being applied to the argument + 3 -/ #check_msgs in -- ANCHOR: add5notfun @@ -1874,14 +1872,14 @@ end Ser namespace A /-- -error: Application type mismatch: In the application - List.getLast? idahoSpiders -the argument +error: Application type mismatch: The argument idahoSpiders has type - NonEmptyList String : Type + NonEmptyList String but is expected to have type - List ?m.56120 : Type + List ?m.3 +in the application + List.getLast? idahoSpiders -/ #check_msgs in -- ANCHOR: lastSpiderB @@ -1890,8 +1888,8 @@ def lastSpider := -- ANCHOR_END: lastSpiderB discarding -/-- error: -invalid field 'getLast?', the environment does not contain 'NonEmptyList.getLast?' +/-- +error: Invalid field `getLast?`: The environment does not contain `NonEmptyList.getLast?` idahoSpiders has type NonEmptyList String diff --git a/examples/Examples/DependentTypes.lean b/examples/Examples/DependentTypes.lean index 5364886..2332920 100644 --- a/examples/Examples/DependentTypes.lean +++ b/examples/Examples/DependentTypes.lean @@ -23,13 +23,13 @@ example : Vect String 3 := .cons "one" (.cons "two" (.cons "three" .nil)) -- ANCHOR_END: vect3 -/-- error: -type mismatch +/-- +error: Type mismatch Vect.nil has type - Vect ?m.1605 0 : Type ?u.1604 + Vect ?m.3 0 but is expected to have type - Vect String 3 : Type + Vect String 3 -/ #check_msgs in -- ANCHOR: nilNotLengthThree @@ -37,13 +37,13 @@ example : Vect String 3 := Vect.nil -- ANCHOR_END: nilNotLengthThree -/-- error: -type mismatch +/-- +error: Type mismatch Vect.nil has type - Vect ?m.1602 0 : Type ?u.1576 + Vect ?m.2 0 but is expected to have type - Vect String n : Type + Vect String n -/ #check_msgs in -- ANCHOR: nilNotLengthN @@ -51,13 +51,13 @@ example : Vect String n := Vect.nil -- ANCHOR_END: nilNotLengthN -/-- error: -type mismatch +/-- +error: Type mismatch Vect.cons "Hello" (Vect.cons "world" Vect.nil) has type - Vect String (0 + 1 + 1) : Type + Vect String (0 + 1 + 1) but is expected to have type - Vect String n : Type + Vect String n -/ #check_msgs in -- ANCHOR: consNotLengthN @@ -206,14 +206,14 @@ stop discarding discarding /-- -error: Application type mismatch: In the application - cons x (cons x (replicate k x)) -the argument +error: Application type mismatch: The argument cons x (replicate k x) has type - Vect α (k + 1) : Type ?u.2998 + Vect α (k + 1) but is expected to have type - Vect α k : Type ?u.2998 + Vect α k +in the application + cons x (cons x (replicate k x)) -/ #check_msgs in -- ANCHOR: replicateOops @@ -306,13 +306,13 @@ def List.zip : List α → List β → List (α × β) | x :: xs, y :: ys => (x, y) :: zip xs ys -- ANCHOR_END: zipMissing -/-- error: -type mismatch +/-- +error: Type mismatch Vect.cons y ys has type - Vect ?m.3469 (?m.3480 + 1) : Type ?u.3477 + Vect ?m.10 (?m.16 + 1) but is expected to have type - Vect β 0 : Type ?u.3344 + Vect β 0 -/ #check_msgs in -- ANCHOR: zipExtraCons diff --git a/examples/Examples/DependentTypes/DB.lean b/examples/Examples/DependentTypes/DB.lean index 9a98ee6..d9a2def 100644 --- a/examples/Examples/DependentTypes/DB.lean +++ b/examples/Examples/DependentTypes/DB.lean @@ -22,11 +22,11 @@ abbrev DBType.asType : DBType → Type -- ANCHOR_END: mountHoodEval discarding -/-- error: -failed to synthesize +/-- +error: failed to synthesize BEq t.asType -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: dbEqNoSplit @@ -142,13 +142,13 @@ def waterfallDiary : Table waterfall := [ -- ANCHOR_END: waterfallDiary discarding -/-- error: -type mismatch +/-- +error: Type mismatch (v1, r1') has type - ?m.3093 × ?m.3096 : Type (max ?u.3105 ?u.3104) + ?m.10 × ?m.11 but is expected to have type - Row (col :: cols) : Type + Row (col :: cols) -/ #check_msgs in -- ANCHOR: RowBEqRecursion @@ -427,17 +427,21 @@ inductive Query : Schema → Type where | union : Query s → Query s → Query s | diff : Query s → Query s → Query s | select : Query s → DBExpr s .bool → Query s - | project : Query s → (s' : Schema) → Subschema s' s → Query s' + | project : + Query s → (s' : Schema) → + Subschema s' s → + Query s' | product : - Query s1 → Query s2 → - disjoint (s1.map Column.name) (s2.map Column.name) → - Query (s1 ++ s2) + Query s1 → Query s2 → + disjoint (s1.map Column.name) (s2.map Column.name) → + Query (s1 ++ s2) | renameColumn : - Query s → (c : HasCol s n t) → (n' : String) → !((s.map Column.name).contains n') → - Query (s.renameColumn c n') + Query s → (c : HasCol s n t) → (n' : String) → + !((s.map Column.name).contains n') → + Query (s.renameColumn c n') | prefixWith : - (n : String) → Query s → - Query (s.map fun c => {c with name := n ++ "." ++ c.name}) + (n : String) → Query s → + Query (s.map fun c => {c with name := n ++ "." ++ c.name}) -- ANCHOR_END: Query @@ -552,7 +556,8 @@ def example2 := let waterfall := table waterfallDiary |>.prefixWith "waterfall" mountain.product waterfall (by decide) |>.select (.eq (c! "mountain.location") (c! "waterfall.location")) - |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] (by repeat constructor) + |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] + (by repeat constructor) -- ANCHOR_END: Query2 @@ -593,12 +598,13 @@ def example2 := let waterfalls := table waterfallDiary |>.prefixWith "waterfall" mountains.product waterfalls (by simp) |>.select (.eq (c! "location") (c! "waterfall.location")) - |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] (by repeat constructor) + |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] + (by repeat constructor) -- ANCHOR_END: QueryOops1 stop discarding /-- -error: tactic 'decide' proved that the proposition +error: Tactic `decide` proved that the proposition disjoint (List.map Column.name peak) (List.map Column.name waterfall) = true is false --- @@ -606,13 +612,13 @@ error: unsolved goals case a.a.a.a.a.a.a mountains : Query peak := ⋯ waterfalls : Query waterfall := ⋯ -⊢ HasCol [] "mountain.location" ?m.63414 +⊢ HasCol [] "mountain.location" ?m.29 --- error: unsolved goals case a.a.a.a.a.a.a mountains : Query peak := ⋯ waterfalls : Query waterfall := ⋯ -⊢ HasCol [] "waterfall.location" ?m.63414 +⊢ HasCol [] "waterfall.location" ?m.29 --- error: unsolved goals case a.a.a.a.a.a.a.a @@ -633,7 +639,8 @@ def example2 := let waterfalls := table waterfallDiary mountains.product waterfalls (by decide) |>.select (.eq (c! "mountain.location") (c! "waterfall.location")) - |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] (by repeat constructor) + |>.project [⟨"mountain.name", .string⟩, ⟨"waterfall.name", .string⟩] + (by repeat constructor) -- ANCHOR_END: QueryOops2 end Ooops diff --git a/examples/Examples/DependentTypes/Finite.lean b/examples/Examples/DependentTypes/Finite.lean index 360abcc..e0e866e 100644 --- a/examples/Examples/DependentTypes/Finite.lean +++ b/examples/Examples/DependentTypes/Finite.lean @@ -52,11 +52,11 @@ abbrev NestedPairs.asType : NestedPairs → Type -/-- error: -failed to synthesize +/-- +error: failed to synthesize BEq t.asType -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: beqNoCases diff --git a/examples/Examples/DependentTypes/IndicesParameters.lean b/examples/Examples/DependentTypes/IndicesParameters.lean index 44c3c57..7079df4 100644 --- a/examples/Examples/DependentTypes/IndicesParameters.lean +++ b/examples/Examples/DependentTypes/IndicesParameters.lean @@ -75,8 +75,8 @@ inductive WithIndex : Type u → Type (u + 1) where | test2 : WithIndex α → WithIndex α → WithIndex (α × α) -- ANCHOR_END: WithIndex -/-- error: -invalid universe level in constructor 'ParamAfterIndex.test1', parameter 'γ' has type +/-- +error: Invalid universe level in constructor `ParamAfterIndex.test1`: Parameter `γ` has type Type u at universe level u+2 diff --git a/examples/Examples/DependentTypes/Pitfalls.lean b/examples/Examples/DependentTypes/Pitfalls.lean index ac638a2..b89766c 100644 --- a/examples/Examples/DependentTypes/Pitfalls.lean +++ b/examples/Examples/DependentTypes/Pitfalls.lean @@ -282,13 +282,13 @@ def appendR : (n k : Nat) → Vect α n → Vect α k → Vect α (n.plusR k) stop discarding discarding -/-- error: -type mismatch - ?m.2199 +/-- +error: Type mismatch + ?m.11 has type - Vect α k : Type ?u.2135 + Vect α k but is expected to have type - Vect α (Nat.plusR 0 k) : Type ?u.2135 + Vect α (Nat.plusR 0 k) -/ #check_msgs in -- ANCHOR: appendR3 @@ -299,13 +299,13 @@ def appendR : (n k : Nat) → Vect α n → Vect α k → Vect α (n.plusR k) stop discarding discarding -/-- error: -type mismatch - ?m.2234 +/-- +error: Type mismatch + ?m.15 has type - Vect α k : Type ?u.2135 + Vect α k but is expected to have type - Vect α (0 + k) : Type ?u.2135 + Vect α (0 + k) -/ #check_msgs in -- ANCHOR: appendR4 diff --git a/examples/Examples/FunctorApplicativeMonad.lean b/examples/Examples/FunctorApplicativeMonad.lean index cef26fa..94b8728 100644 --- a/examples/Examples/FunctorApplicativeMonad.lean +++ b/examples/Examples/FunctorApplicativeMonad.lean @@ -95,14 +95,14 @@ end Blurble namespace Foo discarding /-- -error: Application type mismatch: In the application - Monster.mk true -the argument +error: Application type mismatch: The argument true has type - Bool : Type + Bool but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + Monster.mk true -/ #check_msgs in -- ANCHOR: wrongTroll1 @@ -117,14 +117,14 @@ end Foo /-- -error: Application type mismatch: In the application - MythicalCreature.large troll -the argument +error: Application type mismatch: The argument troll has type - Monster : Type + Monster but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + MythicalCreature.large troll -/ #check_msgs in -- ANCHOR: trollLargeNoDot @@ -248,14 +248,14 @@ false /-- -error: Application type mismatch: In the application - MythicalCreature.small troll -the argument +error: Application type mismatch: The argument troll has type - Monster : Type + Monster but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + MythicalCreature.small troll -/ #check_msgs in -- ANCHOR: smallTrollWrong @@ -266,14 +266,14 @@ example := MythicalCreature.small troll /-- -error: Application type mismatch: In the application - MythicalCreature.small nisse -the argument +error: Application type mismatch: The argument nisse has type - Helper : Type + Helper but is expected to have type - MythicalCreature : Type + MythicalCreature +in the application + MythicalCreature.small nisse -/ #check_msgs in -- ANCHOR: smallElfNoDot @@ -450,7 +450,7 @@ instance : LawfulFunctor (Pair α) where id_map x := by simp [Functor.map] map_const := by - simp [Function.const, Function.comp, Functor.mapConst, Functor.map] + simp [Functor.mapConst, Functor.map] comp_map g h x := by cases x simp [Function.comp, Functor.map] @@ -645,7 +645,7 @@ by v >>= pure ={ /-- `pure` is a right identity of `>>=` -/ -by simp [LawfulMonad.bind_pure_comp] +by simp }= v -- ANCHOR_END: mSeqRespId @@ -761,7 +761,7 @@ pure (x (y z)) Time to start moving backwards! `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= u >>= fun x => v >>= fun y => @@ -770,7 +770,7 @@ pure (y z) >>= fun q => pure (x q) ={ /-- Associativity of `>>=` -/ -by simp [LawfulMonad.bind_assoc] +by simp }= u >>= fun x => v >>= fun y => @@ -779,7 +779,7 @@ v >>= fun y => pure (x q) ={ /-- Associativity of `>>=` -/ -by simp [LawfulMonad.bind_assoc] +by simp }= u >>= fun x => (v >>= fun y => @@ -822,13 +822,13 @@ pure x >>= fun y => pure (g y) ={ /-- `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= pure f >>= fun g => pure (g x) ={ /-- `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= pure (f x) -- ANCHOR_END: mSeqPureNoOp @@ -856,7 +856,7 @@ pure x >>= fun y => pure (f y) ={ /-- `pure` is a left identity of `>>=` -/ -by simp [LawfulMonad.pure_bind] +by simp }= u >>= fun f => pure (f x) @@ -946,7 +946,7 @@ instance : LawfulApplicative (Validate ε) where simp [Function.comp, Functor.map] split <;> rfl seqLeft_eq x y := by - simp [SeqLeft.seqLeft, Function.const, Functor.map] + simp [SeqLeft.seqLeft, Functor.map] cases x <;> cases y <;> simp [Seq.seq, Functor.map] seqRight_eq x y := by cases x <;> cases y <;> simp [SeqRight.seqRight, Functor.map, Seq.seq] @@ -967,8 +967,8 @@ theorem v_bind_pure (x : Validate ε α) : x >>= pure = x := by -/-- error: -unsolved goals +/-- +error: unsolved goals case errors.errors ε α✝ β✝ : Type a✝¹ a✝ : NonEmptyList ε @@ -983,7 +983,7 @@ instance : LawfulMonad (Validate ε) where cases f <;> cases x <;> simp [Functor.map, bind, Seq.seq] pure_bind x f := by - simp [bind, pure] + simp [bind] bind_assoc x f g := by cases x <;> simp [bind] diff --git a/examples/Examples/Induction.lean b/examples/Examples/Induction.lean index 980ce1e..be9d9ae 100644 --- a/examples/Examples/Induction.lean +++ b/examples/Examples/Induction.lean @@ -154,9 +154,7 @@ theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by namespace Golf discarding -/-- error: -simp made no progress --/ +/-- error: `simp` made no progress -/ #check_msgs in -- ANCHOR: plusR_zero_left_golf_1 theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by @@ -237,10 +235,17 @@ theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by -- ANCHOR_END: plusR_zero_left_golf_6a stop discarding +discarding -- ANCHOR: plusR_zero_left_golf_6 theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by induction k <;> simp [Nat.plusR] <;> assumption -- ANCHOR_END: plusR_zero_left_golf_6 +stop discarding + +-- ANCHOR: plusR_zero_left_golf_7 +theorem plusR_zero_left (k : Nat) : k = Nat.plusR 0 k := by + induction k <;> grind [Nat.plusR] +-- ANCHOR_END: plusR_zero_left_golf_7 end Golf discarding @@ -475,11 +480,19 @@ end B namespace A +discarding -- ANCHOR: mirror_count_7 theorem BinTree.mirror_count (t : BinTree α) : t.mirror.count = t.count := by induction t <;> simp +arith [BinTree.mirror, BinTree.count, *] -- ANCHOR_END: mirror_count_7 +stop discarding + +-- ANCHOR: mirror_count_8 +theorem BinTree.mirror_count (t : BinTree α) : + t.mirror.count = t.count := by + induction t <;> grind [BinTree.mirror, BinTree.count] +-- ANCHOR_END: mirror_count_8 end A end Golf @@ -499,3 +512,21 @@ theorem List.append_assoc (xs ys zs : List α) : xs ++ (ys ++ zs) = (xs ++ ys) ++ zs := by simp -- ANCHOR_END: ex end Ex + +def BinTree.graftLeft (root newBranch : BinTree α) : BinTree α := + match root with + | .leaf => newBranch + | .branch l x r => .branch (l.graftLeft newBranch) x r + +theorem BinTree.count_graftLeft_eq_sum_count' (root newBranch : BinTree α) : + (root.graftLeft newBranch).count = root.count + newBranch.count := by + induction root with + | leaf => simp [BinTree.graftLeft, BinTree.count] + | branch l x r ihl ihr => + simp +arith [BinTree.graftLeft, BinTree.count, *] + + + +theorem BinTree.count_graftLeft_eq_sum_count (root newBranch : BinTree α) : + (root.graftLeft newBranch).count = root.count + newBranch.count := by + induction root <;> grind [BinTree.graftLeft, BinTree.count] diff --git a/examples/Examples/Intro.lean b/examples/Examples/Intro.lean index 9d9d795..e13456c 100644 --- a/examples/Examples/Intro.lean +++ b/examples/Examples/Intro.lean @@ -64,6 +64,7 @@ error: could not synthesize a 'ToExpr', 'Repr', or 'ToString' instance for type #eval String.append "it is " -- ANCHOR_END: stringAppendReprFunction + /-- info: false -/ @@ -133,14 +134,14 @@ example : ( /-- -error: Application type mismatch: In the application - String.append ["hello", " "] -the argument +error: Application type mismatch: The argument ["hello", " "] has type - List String : Type + List String but is expected to have type - String : Type + String +in the application + String.append ["hello", " "] --- info: sorry.append "world" : String -/ @@ -208,14 +209,14 @@ example : Nat -> Nat := add1 -- ANCHOR_END: add1_7 /-- -error: Application type mismatch: In the application - add1 "seven" -the argument +error: Application type mismatch: The argument "seven" has type - String : Type + String but is expected to have type - Nat : Type + Nat +in the application + add1 "seven" --- info: add1 sorry : Nat -/ @@ -350,14 +351,14 @@ open SubVerso.Examples in discarding open SubVerso.Examples in -/-- error: -failed to synthesize +/-- +error: failed to synthesize OfNat NaturalNumber 38 numerals are polymorphic in Lean, but the numeral `38` cannot be used in a context where the expected type is NaturalNumber due to the absence of the instance above -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: thirtyEight @@ -434,7 +435,6 @@ end evaluation steps structure Point where x : Float y : Float -deriving Repr -- ANCHOR_END: Point @@ -605,7 +605,6 @@ structure Point3D where x : Float y : Float z : Float -deriving Repr -- ANCHOR_END: Point3D -- ANCHOR: origin3D @@ -619,7 +618,6 @@ structure Point where point :: x : Float y : Float -deriving Repr -- ANCHOR_END: PointCtorName -- ANCHOR: PointCtorNameName example := Point.point @@ -1020,7 +1018,6 @@ open SubVerso.Examples in structure PPoint (α : Type) where x : α y : α -deriving Repr -- ANCHOR_END: PPoint @@ -1653,8 +1650,8 @@ example : Exhausts (Bool ⊕ Empty) [Sum.inl true, Sum.inl false] := by discarding -/-- error: -invalid universe level in constructor 'MyType.ctor', parameter 'α' has type +/-- +error: Invalid universe level in constructor `MyType.ctor`: Parameter `α` has type Type at universe level 2 @@ -1721,6 +1718,58 @@ type expected, got def ofFive : MyType := ctor 5 -- ANCHOR_END: MissingTypeArg2 +-- ANCHOR: WoodSplittingTool +inductive WoodSplittingTool where + | axe + | maul + | froe +-- ANCHOR_END: WoodSplittingTool + +/-- info: WoodSplittingTool.axe -/ +#check_msgs in +-- ANCHOR: evalAxe +#eval WoodSplittingTool.axe +-- ANCHOR_END: evalAxe + +-- ANCHOR: allTools +def allTools : List WoodSplittingTool := [ + WoodSplittingTool.axe, + WoodSplittingTool.maul, + WoodSplittingTool.froe +] +-- ANCHOR_END: allTools + +/-- +error: could not synthesize a 'ToExpr', 'Repr', or 'ToString' instance for type + List WoodSplittingTool +-/ +#check_msgs in +-- ANCHOR: evalAllTools +#eval allTools +-- ANCHOR_END: evalAllTools + +-- ANCHOR: Firewood +inductive Firewood where + | birch + | pine + | beech +deriving Repr +-- ANCHOR_END: Firewood + +-- ANCHOR: allFirewood +def allFirewood : List Firewood := [ + Firewood.birch, + Firewood.pine, + Firewood.beech +] +-- ANCHOR_END: allFirewood + +/-- info: [Firewood.birch, Firewood.pine, Firewood.beech] -/ +#check_msgs in +-- ANCHOR: evalAllFirewood +#eval allFirewood +-- ANCHOR_END: evalAllFirewood + end -- Example solution @@ -1756,7 +1805,7 @@ Could not find a decreasing measure. The basic measures relate at each recursive call as follows: (<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted) xs ys -1) 1767:28-46 ? ? +1) 1816:28-46 ? ? Please use `termination_by` to specify a decreasing measure. -/ #check_msgs in @@ -1939,9 +1988,9 @@ namespace ReallyNoTypes open SubVerso.Examples /-- -error: failed to infer type of `id` +error: Failed to infer type of definition `id` --- -error: failed to infer binder type +error: Failed to infer type of binder `x` -/ #check_msgs in -- ANCHOR: identNoTypes @@ -2224,7 +2273,7 @@ open NewNamespace in error: failed to synthesize ToString (Nat → Nat) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. --- info: toString "three fives is " ++ sorry ++ toString "" : String -/ @@ -2275,10 +2324,7 @@ example : (⟨1, 2⟩ : (Point)) = (Point.mk 1 2 : (Point)) := rfl -- ANCHOR_END: pointPos -/-- -error: invalid constructor ⟨...⟩, expected type must be an inductive type ⏎ - ?m.93541 --/ +/-- error: Invalid `⟨...⟩` notation: The expected type of this term could not be determined -/ #check_msgs in -- ANCHOR: pointPosEvalNoType #eval ⟨1, 2⟩ diff --git a/examples/Examples/MonadTransformers/Defs.lean b/examples/Examples/MonadTransformers/Defs.lean index a1cae7f..c406eba 100644 --- a/examples/Examples/MonadTransformers/Defs.lean +++ b/examples/Examples/MonadTransformers/Defs.lean @@ -20,31 +20,31 @@ def OptionT (m : Type u → Type v) (α : Type u) : Type v := -- ANCHOR_END: OptionTdef /-- -error: Application type mismatch: In the application - pure (some x) -the argument +error: Application type mismatch: The argument some x has type - Option α✝ : Type ?u.78 + Option α✝ but is expected to have type - α✝ : Type ?u.78 + α✝ +in the application + pure (some x) --- error: failed to synthesize Pure (OptionT m) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. --- -error: type mismatch +error: Type mismatch none has type - Option ?m.561 : Type ?u.560 + Option ?m.24 but is expected to have type - α✝ : Type ?u.78 + α✝ --- error: failed to synthesize Bind (OptionT m) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: firstMonadOptionT diff --git a/examples/Examples/Monads/Class.lean b/examples/Examples/Monads/Class.lean index ac82234..96de96f 100644 --- a/examples/Examples/Monads/Class.lean +++ b/examples/Examples/Monads/Class.lean @@ -279,11 +279,11 @@ def saveIfEven (i : Int) : WithLog Int Int := -/-- error: -failed to synthesize - HAdd Nat Nat (?m.4319 ?m.4321) +/-- +error: failed to synthesize + HAdd Nat Nat (?m.4 ?m.3) -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: mapMIdNoHint diff --git a/examples/Examples/Monads/Conveniences.lean b/examples/Examples/Monads/Conveniences.lean index 821d35b..1c0bcf8 100644 --- a/examples/Examples/Monads/Conveniences.lean +++ b/examples/Examples/Monads/Conveniences.lean @@ -142,9 +142,7 @@ def getTheNat : (Nat × α) ⊕ (Nat × β) → Nat -/-- error: -unknown identifier 'x' --/ +/-- error: Unknown identifier `x` -/ #check_msgs in -- ANCHOR: getTheAlpha def getTheAlpha : (Nat × α) ⊕ (Nat × α) → α diff --git a/examples/Examples/Monads/Do.lean b/examples/Examples/Monads/Do.lean index 75d1c4f..9041208 100644 --- a/examples/Examples/Monads/Do.lean +++ b/examples/Examples/Monads/Do.lean @@ -20,9 +20,9 @@ variable {Es : m Unit} {Stmt Stmt₁ : m Unit} {Eₙ : m ζ} -local syntax "..." : term +local syntax "…" : term macro_rules - | `(...) => `(Es) + | `(…) => `(Es) example : ( @@ -43,7 +43,7 @@ example : -- ANCHOR: doSugar2a do let x ← E₁ Stmt - ... + … Eₙ -- ANCHOR_END: doSugar2a ) = @@ -51,7 +51,7 @@ example : -- ANCHOR: doSugar2b E₁ >>= fun x => do Stmt - ... + … Eₙ -- ANCHOR_END: doSugar2b ) @@ -66,7 +66,7 @@ example : -- ANCHOR: doSugar4a do let x := E₁ Stmt - ... + … Eₙ -- ANCHOR_END: doSugar4a ) = @@ -74,7 +74,7 @@ do let x := E₁ -- ANCHOR: doSugar4b let x := E₁ do Stmt - ... + … Eₙ -- ANCHOR_END: doSugar4b ) @@ -88,7 +88,7 @@ example : -- ANCHOR: doSugar3a do E₁ Stmt - ... + … Eₙ -- ANCHOR_END: doSugar3a ) = @@ -96,7 +96,7 @@ example : -- ANCHOR: doSugar3b E₁ >>= fun () => do Stmt - ... + … Eₙ -- ANCHOR_END: doSugar3b ) diff --git a/examples/Examples/ProgramsProofs/Arrays.lean b/examples/Examples/ProgramsProofs/Arrays.lean index 81e042c..61ef60e 100644 --- a/examples/Examples/ProgramsProofs/Arrays.lean +++ b/examples/Examples/ProgramsProofs/Arrays.lean @@ -122,8 +122,9 @@ theorem three_plus_two_five : IsThree n → IsFive (n + 2) := by stop discarding discarding -/-- error: -tactic 'constructor' failed, no applicable constructor found +/-- +error: Tactic `constructor` failed: no applicable constructor found + n : Nat three : IsThree n ⊢ IsFive (n + 2) diff --git a/examples/Examples/ProgramsProofs/Inequalities.lean b/examples/Examples/ProgramsProofs/Inequalities.lean index 640cd25..3499081 100644 --- a/examples/Examples/ProgramsProofs/Inequalities.lean +++ b/examples/Examples/ProgramsProofs/Inequalities.lean @@ -497,10 +497,10 @@ theorem Nat.le_succ_of_le (h : n ≤ m) : n ≤ m + 1:= by end Golf namespace Golf' --- ANCHOR: le_succ_of_le_omega +-- ANCHOR: le_succ_of_le_grind theorem Nat.le_succ_of_le (h : n ≤ m) : n ≤ m + 1:= by - omega --- ANCHOR_END: le_succ_of_le_omega + grind +-- ANCHOR_END: le_succ_of_le_grind end Golf' namespace NoTac @@ -513,6 +513,7 @@ theorem Nat.le_succ_of_le : n ≤ m → n ≤ m + 1 end NoTac end Extras +discarding -- ANCHOR: splitList_shorter_le theorem splitList_shorter_le (lst : List α) : (splitList lst).fst.length ≤ lst.length ∧ @@ -528,6 +529,42 @@ theorem splitList_shorter_le (lst : List α) : apply Nat.le_succ_of_le assumption -- ANCHOR_END: splitList_shorter_le +stop discarding + +discarding +/-- +error: unsolved goals +case case1 +α : Type u_1 +⊢ ([], []).fst.length ≤ [].length ∧ ([], []).snd.length ≤ [].length +--- +error: unsolved goals +case case2 +α : Type u_1 +x : α +xs a b : List α +splitEq : splitList xs = (a, b) +ih : (splitList xs).fst.length ≤ xs.length ∧ (splitList xs).snd.length ≤ xs.length +⊢ (x :: b, a).fst.length ≤ (x :: xs).length ∧ (x :: b, a).snd.length ≤ (x :: xs).length +-/ +#check_msgs in +-- ANCHOR: splitList_shorter_le_funInd1 +theorem splitList_shorter_le (lst : List α) : + (splitList lst).fst.length ≤ lst.length ∧ + (splitList lst).snd.length ≤ lst.length := by + fun_induction splitList with + | case1 => skip + | case2 x xs a b splitEq ih => skip +-- ANCHOR_END: splitList_shorter_le_funInd1 +stop discarding + + +-- ANCHOR: splitList_shorter_le_funInd2 +theorem splitList_shorter_le (lst : List α) : + (splitList lst).fst.length ≤ lst.length ∧ + (splitList lst).snd.length ≤ lst.length := by + fun_induction splitList <;> grind +-- ANCHOR_END: splitList_shorter_le_funInd2 discarding /-- error: @@ -621,6 +658,8 @@ theorem splitList_shorter (lst : List α) (_ : lst.length ≥ 2) : -- ANCHOR_END: splitList_shorter + + -- ANCHOR: splitList_shorter_sides theorem splitList_shorter_fst (lst : List α) (h : lst.length ≥ 2) : (splitList lst).fst.length < lst.length := @@ -749,7 +788,7 @@ def mergeSort [Ord α] (xs : List α) : List α := else let halves := splitList xs have : xs.length ≥ 2 := by - omega + grind have : halves.fst.length < xs.length := by apply splitList_shorter_fst assumption diff --git a/examples/Examples/ProgramsProofs/InsertionSort.lean b/examples/Examples/ProgramsProofs/InsertionSort.lean index b83c306..491a915 100644 --- a/examples/Examples/ProgramsProofs/InsertionSort.lean +++ b/examples/Examples/ProgramsProofs/InsertionSort.lean @@ -51,7 +51,7 @@ def insertSorted [Ord α] (arr : Array α) (i : Fin arr.size) : Array α := | ⟨0, _⟩ => arr | ⟨i' + 1, _⟩ => have : i' < arr.size := by - omega + grind match Ord.compare arr[i'] arr[i] with | .lt | .eq => arr | .gt => @@ -154,6 +154,7 @@ theorem insert_sorted_size_eq [Ord α] (arr : Array α) (i : Fin arr.size) : -- ANCHOR_END: insert_sorted_size_eq_1 stop discarding + discarding /-- error: unsolved goals @@ -212,329 +213,82 @@ theorem insert_sorted_size_eq [Ord α] (arr : Array α) (i : Fin arr.size) : -- ANCHOR_END: insert_sorted_size_eq_3 stop discarding -discarding -/-- error: -unsolved goals -α : Type u_1 -inst✝ : Ord α -len i : Nat -⊢ ∀ (arr : Array α) (isLt : i < arr.size), arr.size = len → (insertSorted arr ⟨i, isLt⟩).size = len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_0 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - skip --- ANCHOR_END: insert_sorted_size_eq_redo_0 -stop discarding - discarding /-- error: unsolved goals -case zero +case case1 α : Type u_1 inst✝ : Ord α -len : Nat -⊢ ∀ (arr : Array α) (isLt : 0 < arr.size), arr.size = len → (insertSorted arr ⟨0, isLt⟩).size = len +arr✝ arr : Array α +isLt : 0 < arr.size +⊢ arr.size = arr.size --- error: unsolved goals -case succ +case case2 α : Type u_1 inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -⊢ ∀ (arr : Array α) (isLt : i' + 1 < arr.size), arr.size = len → (insertSorted arr ⟨i' + 1, isLt⟩).size = len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_1a -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => skip - | succ i' ih => skip --- ANCHOR_END: insert_sorted_size_eq_redo_1a -stop discarding - -discarding -/-- -error: unsolved goals -case zero -α : Type u_1 -inst✝ : Ord α -len : Nat -⊢ ∀ (arr : Array α) (isLt : 0 < arr.size), arr.size = len → (insertSorted arr ⟨0, isLt⟩).size = len +arr✝ arr : Array α +i : Nat +isLt✝ : i + 1 < arr.size +this : i < arr.size +isLt : compare arr[i] arr[⟨i.succ, isLt✝⟩] = Ordering.lt +⊢ (match compare arr[i] arr[⟨i.succ, isLt✝⟩] with + | Ordering.lt => arr + | Ordering.eq => arr + | Ordering.gt => insertSorted (arr.swap i (↑⟨i.succ, isLt✝⟩) this ⋯) ⟨i, ⋯⟩).size = + arr.size --- error: unsolved goals -case succ +case case3 α : Type u_1 inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -⊢ ∀ (arr : Array α) (isLt : i' + 1 < arr.size), arr.size = len → (insertSorted arr ⟨i' + 1, isLt⟩).size = len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_1b -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => skip - | succ i' ih => skip --- ANCHOR_END: insert_sorted_size_eq_redo_1b -stop discarding - -discarding -/-- -error: unsolved goals -case zero -α : Type u_1 -inst✝ : Ord α -len : Nat -arr : Array α -isLt : 0 < arr.size -hLen : arr.size = len -⊢ arr.size = len +arr✝ arr : Array α +i : Nat +isLt : i + 1 < arr.size +this : i < arr.size +isEq : compare arr[i] arr[⟨i.succ, isLt⟩] = Ordering.eq +⊢ (match compare arr[i] arr[⟨i.succ, isLt⟩] with + | Ordering.lt => arr + | Ordering.eq => arr + | Ordering.gt => insertSorted (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯) ⟨i, ⋯⟩).size = + arr.size --- error: unsolved goals -case succ -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -⊢ ∀ (arr : Array α) (isLt : i' + 1 < arr.size), arr.size = len → (insertSorted arr ⟨i' + 1, isLt⟩).size = len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_2 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted] - | succ i' ih => skip --- ANCHOR_END: insert_sorted_size_eq_redo_2 -stop discarding - -discarding -/-- error: -unsolved goals -case succ -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -⊢ ∀ (arr : Array α) (isLt : i' + 1 < arr.size), arr.size = len → (insertSorted arr ⟨i' + 1, isLt⟩).size = len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_2b -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → arr.size = len → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => skip --- ANCHOR_END: insert_sorted_size_eq_redo_2b -stop discarding - -discarding -/-- error: -unsolved goals -case succ +case case4 α : Type u_1 inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -⊢ (match compare arr[i'] arr[i' + 1] with +arr✝ arr : Array α +i : Nat +isLt : i + 1 < arr.size +this : i < arr.size +isGt : compare arr[i] arr[⟨i.succ, isLt⟩] = Ordering.gt +ih : (insertSorted (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯) ⟨i, ⋯⟩).size = (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯).size +⊢ (match compare arr[i] arr[⟨i.succ, isLt⟩] with | Ordering.lt => arr | Ordering.eq => arr - | Ordering.gt => insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size = - len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_3 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] --- ANCHOR_END: insert_sorted_size_eq_redo_3 -stop discarding - -discarding -/-- -error: unsolved goals -case h_1 -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.lt -⊢ arr.size = len - -case h_2 -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.eq -⊢ arr.size = len - -case h_3 -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.gt -⊢ (insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size = len --/ -#check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_4 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split --- ANCHOR_END: insert_sorted_size_eq_redo_4 -stop discarding - -discarding -/-- -error: unsolved goals -case h_3 -α : Type u_1 -inst✝ : Ord α -len i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = len → (insertSorted arr ⟨i', isLt⟩).size = len -arr : Array α -isLt : i' + 1 < arr.size -hLen : arr.size = len -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.gt -⊢ (insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size = len + | Ordering.gt => insertSorted (arr.swap i (↑⟨i.succ, isLt⟩) this ⋯) ⟨i, ⋯⟩).size = + arr.size -/ #check_msgs in --- ANCHOR: insert_sorted_size_eq_redo_5 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split <;> try assumption --- ANCHOR_END: insert_sorted_size_eq_redo_5 +-- ANCHOR: insert_sorted_size_eq_funInd1 +theorem insert_sorted_size_eq [Ord α] + (arr : Array α) (i : Fin arr.size) : + (insertSorted arr i).size = arr.size := by + fun_induction insertSorted with + | case1 arr isLt => skip + | case2 arr i isLt this isLt => skip + | case3 arr i isLt this isEq => skip + | case4 arr i isLt this isGt ih => skip +-- ANCHOR_END: insert_sorted_size_eq_funInd1 stop discarding -namespace Wak - -/-- -error: unsolved goals -case h_2 -α : Type u_1 -inst✝ : Ord α -i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = (insertSorted arr ⟨i', isLt⟩).size -arr : Array α -isLt : i' + 1 < arr.size -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.eq -⊢ arr.size = arr.size -case h_3 -α : Type u_1 -inst✝ : Ord α -i' : Nat -ih : ∀ (arr : Array α) (isLt : i' < arr.size), arr.size = (insertSorted arr ⟨i', isLt⟩).size -arr : Array α -isLt : i' + 1 < arr.size -x✝ : Ordering -heq✝ : compare arr[i'] arr[i' + 1] = Ordering.gt -⊢ arr.size = (insertSorted (arr.swap i' (i' + 1) ⋯ ⋯) ⟨i', ⋯⟩).size --/ -#check_msgs in --- ANCHOR: isnert_sorted_size_eq_partial_redo -theorem insert_sorted_size_eq [Ord α] (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → - arr.size = (insertSorted arr ⟨i, isLt⟩).size := by - induction i with - | zero => - intro arr isLt - simp [insertSorted, *] - | succ i' ih => - intro arr isLt - simp [insertSorted] - split <;> try assumption - simp [*] --- ANCHOR_END: isnert_sorted_size_eq_partial_redo -end Wak - -namespace Alt - - --- ANCHOR: insert_sorted_size_eq_redo_6 -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split <;> try assumption - simp [*] --- ANCHOR_END: insert_sorted_size_eq_redo_6 -end Alt - - --- ANCHOR: insert_sorted_size_eq_redo -theorem insert_sorted_size_eq [Ord α] (len : Nat) (i : Nat) : - (arr : Array α) → (isLt : i < arr.size) → (arr.size = len) → - (insertSorted arr ⟨i, isLt⟩).size = len := by - induction i with - | zero => - intro arr isLt hLen - simp [insertSorted, *] - | succ i' ih => - intro arr isLt hLen - simp [insertSorted] - split <;> simp [*] --- ANCHOR_END: insert_sorted_size_eq_redo +-- ANCHOR: insert_sorted_size_eq_funInd +theorem insert_sorted_size_eq [Ord α] + (arr : Array α) (i : Fin arr.size) : + (insertSorted arr i).size = arr.size := by + fun_induction insertSorted <;> grind [Array.size_swap] +-- ANCHOR_END: insert_sorted_size_eq_funInd discarding /-- @@ -557,7 +311,7 @@ Could not find a decreasing measure. The basic measures relate at each recursive call as follows: (<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted) arr i #1 -1) 570:4-55 ? ? ? +1) 324:4-55 ? ? ? #1: arr.size - i @@ -593,11 +347,11 @@ partial def insertionSortLoop [Ord α] (arr : Array α) (i : Nat) : Array α := -- ANCHOR_END: insertionSortPartialOne /-- info: -#["igneous", "metamorphic", "sedentary"] +#["igneous", "metamorphic", "sedimentary"] -/ #check_msgs in -- ANCHOR: insertionSortPartialTwo -#eval insertionSortLoop #["metamorphic", "igneous", "sedentary"] 0 +#eval insertionSortLoop #["metamorphic", "igneous", "sedimentary"] 0 -- ANCHOR_END: insertionSortPartialTwo end Partial @@ -666,7 +420,7 @@ h : i < arr.size def insertionSortLoop [Ord α] (arr : Array α) (i : Nat) : Array α := if h : i < arr.size then have : (insertSorted arr ⟨i, h⟩).size - (i + 1) < arr.size - i := by - rw [insert_sorted_size_eq arr.size i arr h rfl] + rw [insert_sorted_size_eq] insertionSortLoop (insertSorted arr ⟨i, h⟩) (i + 1) else arr @@ -683,8 +437,7 @@ example : ∀ (a i : Nat), i < a → a - (i + 1) < a - i := Nat.sub_succ_lt_self def insertionSortLoop [Ord α] (arr : Array α) (i : Nat) : Array α := if h : i < arr.size then have : (insertSorted arr ⟨i, h⟩).size - (i + 1) < arr.size - i := by - rw [insert_sorted_size_eq arr.size i arr h rfl] - omega + grind [insert_sorted_size_eq] insertionSortLoop (insertSorted arr ⟨i, h⟩) (i + 1) else arr @@ -701,7 +454,7 @@ def insertionSort [Ord α] (arr : Array α) : Array α := example := @List.map example := @Array.swap example := (@Array.swap : {α : Type _} → (xs : Array α) → (i j : Nat) → (h1 : autoParam (i < xs.size) _) → (h2 : autoParam (j < xs.size) _) → Array α) -example : Fin 1 := {val := 0, isLt := by omega} +example : Fin 1 := {val := 0, isLt := by grind} example := @Array.set example {n} := Fin n example := Fin 0 diff --git a/examples/Examples/ProgramsProofs/TCO.lean b/examples/Examples/ProgramsProofs/TCO.lean index ec6c6a3..957ee84 100644 --- a/examples/Examples/ProgramsProofs/TCO.lean +++ b/examples/Examples/ProgramsProofs/TCO.lean @@ -277,7 +277,7 @@ stop discarding theorem helper_add_sum_accum (xs : List Nat) : (n : Nat) → n + Tail.sumHelper 0 xs = Tail.sumHelper n xs := by induction xs with - | nil => simp [Tail.sum, Tail.sumHelper] + | nil => simp [Tail.sumHelper] | cons y ys ih => intro n simp [Tail.sumHelper] @@ -667,6 +667,7 @@ theorem non_tail_sum_eq_helper_accum (xs : List Nat) : -- ANCHOR_END: nonTailEqHelper8 stop discarding +discarding -- ANCHOR: nonTailEqHelperDone theorem non_tail_sum_eq_helper_accum (xs : List Nat) : (n : Nat) → n + NonTail.sum xs = Tail.sumHelper n xs := by @@ -679,7 +680,53 @@ theorem non_tail_sum_eq_helper_accum (xs : List Nat) : rw [Nat.add_comm y n] exact ih (n + y) -- ANCHOR_END: nonTailEqHelperDone +stop discarding + +discarding +/-- +error: unsolved goals +case case1 +n : Nat +⊢ n + NonTail.sum [] = n +--- +error: unsolved goals +case case2 +n y : Nat +ys : List Nat +ih : y + n + NonTail.sum ys = Tail.sumHelper (y + n) ys +⊢ n + NonTail.sum (y :: ys) = Tail.sumHelper (y + n) ys +-/ +#check_msgs in +-- ANCHOR: nonTailEqHelperFunInd1 +theorem non_tail_sum_eq_helper_accum (xs : List Nat) (n : Nat) : + n + NonTail.sum xs = Tail.sumHelper n xs := by + fun_induction Tail.sumHelper with + | case1 n => skip + -- ^ PROOF_STATE: BASE + | case2 n y ys ih => skip + -- ^ PROOF_STATE: STEP +-- ANCHOR_END: nonTailEqHelperFunInd1 +stop discarding + +discarding +-- ANCHOR: nonTailEqHelperFunInd2 +theorem non_tail_sum_eq_helper_accum (xs : List Nat) (n : Nat) : + n + NonTail.sum xs = Tail.sumHelper n xs := by + fun_induction Tail.sumHelper with + | case1 n => simp [NonTail.sum] + | case2 n y ys ih => + simp [NonTail.sum] + rw [←Nat.add_assoc] + rw [Nat.add_comm n y] + assumption +-- ANCHOR_END: nonTailEqHelperFunInd2 +stop discarding +-- ANCHOR: nonTailEqHelperFunInd3 +theorem non_tail_sum_eq_helper_accum (xs : List Nat) (n : Nat) : + n + NonTail.sum xs = Tail.sumHelper n xs := by + fun_induction Tail.sumHelper <;> grind [NonTail.sum] +-- ANCHOR_END: nonTailEqHelperFunInd3 -- ANCHOR: NatAddAssoc example : (n m k : Nat) → (n + m) + k = n + (m + k) := Nat.add_assoc diff --git a/examples/Examples/Props.lean b/examples/Examples/Props.lean index 9f61de7..5cf7533 100644 --- a/examples/Examples/Props.lean +++ b/examples/Examples/Props.lean @@ -32,12 +32,17 @@ def onePlusOneIsTwo : 1 + 1 = 2 := rfl -- ANCHOR_END: onePlusOneIsTwo /-- -error: type mismatch +error: Type mismatch rfl has type - ?m.1247 = ?m.1247 : Prop + ?m.16 = ?m.16 but is expected to have type - 1 + 1 = 15 : Prop + 1 + 1 = 15 +--- +error: Not a definitional equality: the left-hand side + 1 + 1 +is not definitionally equal to the right-hand side + 15 -/ #check_msgs in -- ANCHOR: onePlusOneIsFifteen @@ -54,7 +59,7 @@ theorem onePlusOneIsTwo : OnePlusOneIsTwo := rfl -- ANCHOR_END: onePlusOneIsTwoProp discarding -/-- error: simp made no progress -/ +/-- error: `simp` made no progress -/ #check_msgs in -- ANCHOR: onePlusOneIsStillTwo theorem onePlusOneIsStillTwo : OnePlusOneIsTwo := by simp @@ -65,7 +70,7 @@ stop discarding error: failed to synthesize Decidable OnePlusOneIsTwo -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: onePlusOneIsStillTwo2 @@ -106,7 +111,7 @@ end -- ANCHOR_END: connectiveTable -- ANCHOR: connectives -theorem onePlusOneAndLessThan : 1 + 1 = 2 ∨ 3 < 5 := by simp +theorem onePlusOneOrLessThan : 1 + 1 = 2 ∨ 3 < 5 := by simp theorem notTwoEqualFive : ¬(1 + 1 = 5) := by simp theorem trueIsTrue : True := by simp theorem trueOrFalse : True ∨ False := by simp @@ -115,7 +120,7 @@ theorem falseImpliesTrue : False → True := by simp namespace Decide -- ANCHOR: connectivesD -theorem onePlusOneAndLessThan : 1 + 1 = 2 ∨ 3 < 5 := by decide +theorem onePlusOneOrLessThan : 1 + 1 = 2 ∨ 3 < 5 := by decide theorem notTwoEqualFive : ¬(1 + 1 = 5) := by decide theorem trueIsTrue : True := by decide theorem trueOrFalse : True ∨ False := by decide @@ -260,7 +265,7 @@ example := Prop -- ANCHOR_END: thirdCritters /-- -error: tactic 'decide' proved that the proposition +error: Tactic `decide` proved that the proposition ["rabbit"].length > 2 is false -/ @@ -304,7 +309,7 @@ end error: failed to synthesize Inhabited α -Additional diagnostic information may be available using the `set_option diagnostics true` command. +Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command. -/ #check_msgs in -- ANCHOR: unsafeThird @@ -312,10 +317,13 @@ def unsafeThird (xs : List α) : α := xs[2]! -- ANCHOR_END: unsafeThird /-- -error: function expected at +error: Function expected at woodlandCritters -term has type +but this term has type List String + +Note: Expected a function because this term is being applied to the argument + [1] -/ #check_msgs in -- ANCHOR: extraSpace diff --git a/examples/Examples/Universes.lean b/examples/Examples/Universes.lean index bd648c3..5e65859 100644 --- a/examples/Examples/Universes.lean +++ b/examples/Examples/Universes.lean @@ -92,14 +92,14 @@ example : Type → Type := MyList /-- -error: Application type mismatch: In the application - MyList Type -the argument +error: Application type mismatch: The argument Type has type - Type 1 : Type 2 -but is expected to have type - Type : Type 1 + Type 1 +of sort `Type 2` but is expected to have type + Type +of sort `Type 1` in the application + MyList Type -/ #check_msgs in -- ANCHOR: myListNat1Err @@ -132,8 +132,8 @@ end MyList15 -/-- error: -invalid universe level in constructor 'MyList.cons', parameter has type +/-- +error: Invalid universe level in constructor `MyList.cons`: Parameter has type α at universe level 2 @@ -223,14 +223,14 @@ def typeOrType : Sum Type Type := .inr Nat -- ANCHOR_END: SumPoly /-- -error: Application type mismatch: In the application - Sum String Type -the argument +error: Application type mismatch: The argument Type has type - Type 1 : Type 2 -but is expected to have type - Type : Type 1 + Type 1 +of sort `Type 2` but is expected to have type + Type +of sort `Type 1` in the application + Sum String Type -/ #check_msgs in -- ANCHOR: stringOrTypeLevels diff --git a/examples/lake-manifest.json b/examples/lake-manifest.json index 7e3852d..4a488fe 100644 --- a/examples/lake-manifest.json +++ b/examples/lake-manifest.json @@ -5,7 +5,7 @@ "type": "git", "subDir": null, "scope": "", - "rev": "597aa7f6d1d4bc22c5bdef797797497b10bea1f4", + "rev": "767f10408ca8abe29a15add2bf111eefdd9522b2", "name": "subverso", "manifestFile": "lake-manifest.json", "inputRev": "main", diff --git a/examples/lean-toolchain b/examples/lean-toolchain index 893a7f3..f434439 100644 --- a/examples/lean-toolchain +++ b/examples/lean-toolchain @@ -1 +1 @@ -leanprover/lean4:4.21.0 +leanprover/lean4:4.23.0 diff --git a/examples/second-lake/greeting/lake-manifest.json b/examples/second-lake/greeting/lake-manifest.json new file mode 100644 index 0000000..3e9feac --- /dev/null +++ b/examples/second-lake/greeting/lake-manifest.json @@ -0,0 +1,15 @@ +{"version": "1.1.0", + "packagesDir": ".lake/packages", + "packages": + [{"url": "https://github.com/leanprover/subverso.git", + "type": "git", + "subDir": null, + "scope": "", + "rev": "bdc74c95376f9a5c23dba1b3159b03c5c1c8aad7", + "name": "subverso", + "manifestFile": "lake-manifest.json", + "inputRev": "main", + "inherited": false, + "configFile": "lakefile.lean"}], + "name": "greeting", + "lakeDir": ".lake"} diff --git a/examples/second-lake/greeting/lean-toolchain b/examples/second-lake/greeting/lean-toolchain index 8259911..7f254a9 100644 --- a/examples/second-lake/greeting/lean-toolchain +++ b/examples/second-lake/greeting/lean-toolchain @@ -1 +1 @@ -leanprover/lean4:v4.18.0 \ No newline at end of file +leanprover/lean4:v4.23.0