book/TPiL/QuantifiersEquality.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned Theorem Proving in Lean documentation, Pinned Theorem Proving in Lean 4 book index

86 declarations, 12 contain sorry, 0 declared as axioms

Imports (2)
  1. example (example at line 87) line 87 source
  2. example (example at line 116) line 116 source
  3. example (example at line 181) line 181 source
  4. example (example at line 267) line 267 source
  5. example (example at line 277) line 277 source

    Source comment

    ----
    example : a = d := (hab.trans hcb.symm).trans hcd
    …
  6. example (example at line 289) line 289 source
  7. example (example at line 290) line 290 source
  8. example (example at line 291) line 291 source
  9. example (example at line 299) line 299 source

    Source comment

    ----
    example (f : α → β) (a : α) : (fun x => f x) a = f a := rfl

    Mentions: α, β, x

  10. example (example at line 300) line 300 source
  11. example (example at line 301) line 301 source
  12. example (example at line 318) line 318 source
  13. example (example at line 322) line 322 source
  14. example (example at line 344) line 344 source
  15. example (example at line 345) line 345 source
  16. example (example at line 346) line 346 source
  17. example (example at line 354) line 354 source
  18. example (example at line 355) line 355 source
  19. example (example at line 356) line 356 source
  20. example (example at line 357) line 357 source
  21. example (example at line 358) line 358 source
  22. example (example at line 359) line 359 source
  23. example (example at line 360) line 360 source
  24. example (example at line 361) line 361 source
  25. example (example at line 362) line 362 source
  26. example (example at line 363) line 363 source
  27. example (example at line 364) line 364 source
  28. example (example at line 365) line 365 source
  29. example (example at line 376) line 376 source
  30. example (example at line 392) line 392 source
  31. theorem T line 455 source
  32. theorem T line 478 source

    Source comment

    ----
    theorem T
        (h1 : a = b)
        (h2 : b = c + 1)
        (h3 : c = d)
        (h4 : e = 1 + d) :
        a = e :=
    …

    Mentions: h1, b, h2

  33. theorem T line 503 source

    Source comment

    ----
    theorem T
        (h1 : a = b)
        (h2 : b = c + 1)
        (h3 : c = d)
        (h4 : e = 1 + d) :
        a = e :=
    …

    Mentions: h1, b, h2

  34. theorem T line 520 source

    Source comment

    ----
    theorem T
        (h1 : a = b)
        (h2 : b = c + 1)
        (h3 : c = d)
        (h4 : e = 1 + d) :
        a = e :=
    …

    Mentions: h1, b, h2

  35. theorem T line 539 source

    Source comment

    ----
    theorem T
        (h1 : a = b)
        (h2 : b = c + 1)
        (h3 : c = d)
        (h4 : e = 1 + d) :
        a = e :=
    …

    Mentions: h1, b, h2

  36. example (example at line 555) line 555 source
  37. def divides line 568 source
  38. def divides_trans Divisibility is transitive, so calc can chain it line 571 source

    L4DEL explanation

    Compose the two witnesses by multiplying them, which is the witness for the combined divisibility.

    1. divides x y is defined as ∃ k, k*x = y.
    2. let ⟨k₁, d₁⟩ := h₁ and let ⟨k₂, d₂⟩ := h₂ unpack the two witnesses and their equations.
    3. The new witness is k₁ * k₂, and the equation is proved by rewriting with Nat.mul_comm, Nat.mul_assoc, d₁ and d₂.
    4. The book uses it to build instance Trans divides divides divides, which teaches calc about this relation.

    See also: divides_mul

    Sources and attribution: Pinned Lean source (4e28129fdd58)

    def divides_trans (h₁ : divides x y) (h₂ : divides y z) : divides x z :=
    …

    Mentions: divides, x

  39. def divides_mul line 576 source
  40. instance (instance at line 579) line 579 source
  41. example (example at line 582) line 582 source
  42. example (example at line 590) line 590 source
  43. example (example at line 609) line 609 source
  44. example (example at line 628) line 628 source
  45. example (example at line 647) line 647 source
  46. example (example at line 650) line 650 source
  47. example (example at line 670) line 670 source
  48. example (example at line 674) line 674 source
  49. example (example at line 677) line 677 source
  50. example (example at line 692) line 692 source
  51. example (example at line 696) line 696 source
  52. example (example at line 699) line 699 source
  53. theorem gex1 line 722 source
  54. theorem gex2 line 723 source
  55. theorem gex3 line 724 source
  56. theorem gex4 line 725 source
  57. example (example at line 758) line 758 source
  58. instance of line 784 source

    Distinct definitions of this name: book/TPiL/StructuresAndRecords.lean:25 (different declaration text). Qualify references as of@path.

  59. example (example at line 793) line 793 source
  60. example (example at line 810) line 810 source

    Source comment

    ----
    example (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=
    …

    Mentions: x

  61. example (example at line 820) line 820 source

    Source comment

    ----
    example (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=
    …

    Mentions: x

  62. example (example at line 830) line 830 source

    Source comment

    ----
    example (h : ∃ x, p x ∧ q x) : ∃ x, q x ∧ p x :=
    …

    Mentions: x

  63. example (example at line 842) line 842 source

    Source comment

    ----
    example : (∃ x, p x ∧ q x) → ∃ x, q x ∧ p x :=
    …

    Mentions: x

  64. def IsEven line 851 source
  65. def IsEven line 860 source
  66. theorem even_plus_even line 862 source
  67. def IsEven line 877 source
  68. theorem even_plus_even line 879 source

    Source comment

    ----
    theorem even_plus_even (h1 : IsEven a) (h2 : IsEven b) :
        IsEven (a + b) :=
    …

    Mentions: h1, IsEven, h2, b

  69. example (example at line 898) line 898 source
  70. example (example at line 921) sorry line 921 source
  71. example (example at line 922) sorry line 922 source
  72. example (example at line 923) sorry line 923 source
  73. example (example at line 924) sorry line 924 source
  74. example (example at line 926) sorry line 926 source
  75. example (example at line 927) sorry line 927 source
  76. example (example at line 928) sorry line 928 source
  77. example (example at line 929) sorry line 929 source
  78. example (example at line 931) sorry line 931 source
  79. example (example at line 932) sorry line 932 source
  80. example (example at line 933) sorry line 933 source
  81. example (example at line 948) line 948 source
  82. example (example at line 959) line 959 source
  83. example (example at line 998) line 998 source
  84. example (example at line 1014) line 1014 source

    Source comment

    ----
    example : f 0 ≤ f 3 :=
    …
  85. example (example at line 1050) line 1050 source
  86. example (example at line 1064) sorry line 1064 source