book/TPiL/Tactics.lean
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
147 declarations, 3 contain sorry, 0 declared as axioms
Imports (2)
VersoManualTPiL.Examples
- example
(example at line 25)line 25 source - theorem
testsorry line 45 source - theorem
testline 73 source - example
aboveline 82 source - theorem
testline 85 source - theorem
testline 129 source - theorem
testline 154 source - theorem
testline 162 source - theorem
testline 172 source - example
(example at line 177)line 177 source - theorem
testline 185 source - theorem
testline 200 source - theorem
testline 233 source - example
(example at line 253)line 253 source - example
(example at line 285)line 285 source - example
(example at line 289)line 289 source - example
(example at line 297)line 297 source - example
(example at line 315)line 315 source - example
(example at line 323)line 323 source - example
(example at line 342)line 342 source - example
(example at line 354)line 354 source - example
(example at line 365)line 365 source - example
(example at line 380)line 380 source - example
(example at line 395)line 395 source - example
(example at line 410)line 410 source - example
(example at line 419)line 419 source - example
(example at line 432)line 432 source - example
(example at line 458)line 458 source - example
(example at line 492)line 492 source - example
(example at line 512)line 512 source - example
(example at line 533)line 533 source - example
(example at line 559)sorry line 559 source - example
(example at line 574)line 574 source - example
(example at line 604)line 604 source - example
(example at line 616)line 616 source - example
(example at line 627)line 627 source - example
(example at line 640)line 640 source - example
(example at line 650)line 650 source - example
(example at line 659)line 659 source - example
(example at line 667)line 667 source - example
(example at line 677)line 677 source - example
(example at line 693)line 693 source - example
fromline 718 source - example
(example at line 721)line 721 source - example
(example at line 748)line 748 source - example
(example at line 763)line 763 source - example
(example at line 772)line 772 source - def
swap_pairTactics can define data: swapping a pair line 786 sourceL4DEL explanation
The same tactic script that proves p and q implies q and p also builds a function that swaps the two components of a pair.
- The type is α × β → β × α, a function type for products.
- intro p introduces the argument; cases p splits the pair into its two components.
- constructor <;> assumption builds the new pair, and for each of its two parts assumption finds the matching component in the context.
- The book remarks that, up to variable names, this is identical to the proof for conjunction.
See also: swap_sum
Sources and attribution: Pinned Lean source (4e28129fdd58)
def swap_pair : α × β → β × α := by …
- def
swap_sumSwapping the two sides of a sum type line 791 sourceL4DEL explanation
cases splits on which side of the sum we are in, and each branch rebuilds the value on the opposite side.
- The type is Sum α β → Sum β α.
- intro p and cases p give one goal per constructor of Sum.
- In the first branch apply Sum.inr; assumption wraps the left value on the right; in the second, apply Sum.inl; assumption does the reverse.
- The book remarks that this matches the proof of commutativity of disjunction.
See also: swap_pair
Sources and attribution: Pinned Lean source (4e28129fdd58)
cases: the tactic that splits a value or hypothesis by its constructors and gives one goal for each.
def swap_sum : Sum α β → Sum β α := by …
- example
(example at line 805)line 805 source - example
(example at line 820)line 820 source - example
(example at line 831)line 831 source - example
(example at line 852)line 852 source - structure
toline 875 sourceDistinct definitions of this name: book/TPiL/DependentTypeTheory.lean:526 (different declaration text). Qualify references as to@path.
- example
(example at line 888)line 888 source - example
(example at line 903)line 903 source - example
(example at line 922)line 922 source - example
(example at line 946)line 946 source - example
(example at line 954)line 954 source - example
(example at line 973)line 973 source - example
(example at line 995)line 995 source - example
(example at line 1013)line 1013 source - example
(example at line 1032)line 1032 source - theorem
(theorem at line 1053)line 1053 source - example
(example at line 1093)line 1093 source - example
(example at line 1105)line 1105 source - example
(example at line 1116)line 1116 source - example
(example at line 1119)line 1119 source - example
(example at line 1127)line 1127 source - example
(example at line 1130)line 1130 source - example
(example at line 1133)line 1133 source - example
(example at line 1155)line 1155 source - example
(example at line 1168)line 1168 source - example
(example at line 1179)line 1179 source - example
(example at line 1189)line 1189 source - example
(example at line 1198)line 1198 source - theorem
add_commline 1220 source - example
(example at line 1239)line 1239 source - example
(example at line 1256)line 1256 source - example
(example at line 1269)line 1269 source - example
(example at line 1281)line 1281 source - example
(example at line 1296)line 1296 source - example
(example at line 1299)line 1299 source - example
(example at line 1302)line 1302 source - example
(example at line 1325)line 1325 source - def
Tupleline 1338 source - example
(example at line 1341)line 1341 source - example
(example at line 1359)line 1359 source - example
(example at line 1362)line 1362 source - example
(example at line 1378)line 1378 source - example
(example at line 1382)line 1382 source - example
(example at line 1390)line 1390 source - example
(example at line 1401)line 1401 source - example
(example at line 1405)line 1405 source - example
(example at line 1440)line 1440 sourceSource comment
----example (w x y z : Nat) (p : Nat → Prop) : x * y + z * w * x = x * w * z + y * x := by …Mentions: x
- example
(example at line 1444)line 1444 source - def
fline 1457 sourceDistinct definitions of this name: book/TPiL/AxiomsComputation.lean:340 (different declaration text), book/TPiL/DependentTypeTheory.lean:416 (different declaration text), book/TPiL/InductionAndRecursion.lean:833 (different declaration text), book/TPiL/InteractingWithLean.lean:468 (different declaration text). Qualify references as f@path.
- example
(example at line 1460)line 1460 source - example
(example at line 1469)line 1469 source - example
(example at line 1480)line 1480 source - example
(example at line 1488)line 1488 source - example
(example at line 1500)line 1500 source - example
(example at line 1503)line 1503 source - example
(example at line 1506)line 1506 source - example
(example at line 1516)line 1516 sourceSource comment
----example (u w x x' y y' z : Nat) (p : Nat → Prop) (h₁ : x + 0 = x') (h₂ : y + 0 = y') : x + y + 0 = x' + y' := by …Mentions: x
- def
mk_symmline 1529 source - def
mk_symmline 1538 source - theorem
reverse_mk_symmline 1541 sourceSource comment
----theorem reverse_mk_symm (xs : List α) : (mk_symm xs).reverse = mk_symm xs := by … - def
mk_symmline 1550 source - theorem
reverse_mk_symmline 1552 source - example
(example at line 1556)line 1556 sourceSource comment
----example (xs ys : List Nat) : (xs ++ mk_symm ys).reverse = mk_symm ys ++ xs.reverse := by …Mentions: mk_symm
- example
(example at line 1560)line 1560 source - def
mk_symmline 1572 source - theorem
reverse_mk_symmline 1575 sourceSource comment
----@[simp] theorem reverse_mk_symm (xs : List α) : (mk_symm xs).reverse = mk_symm xs := by … - example
(example at line 1579)line 1579 source - example
(example at line 1583)line 1583 source - def
mk_symmline 1593 source - theorem
reverse_mk_symmline 1596 sourceSource comment
----theorem reverse_mk_symm (xs : List α) : (mk_symm xs).reverse = mk_symm xs := by … - example
(example at line 1602)line 1602 source - example
(example at line 1606)line 1606 source - def
mk_symmline 1615 source - theorem
reverse_mk_symmline 1618 sourceSource comment
----theorem reverse_mk_symm (xs : List α) : (mk_symm xs).reverse = mk_symm xs := by … - example
(example at line 1622)line 1622 source - example
(example at line 1628)line 1628 source - def
mk_symmline 1642 source - theorem
reverse_mk_symmline 1645 sourceSource comment
----theorem reverse_mk_symm (xs : List α) : (mk_symm xs).reverse = mk_symm xs := by … - example
(example at line 1652)line 1652 source - example
(example at line 1656)line 1656 source - def
mk_symmline 1682 source - theorem
reverse_mk_symmline 1684 source - example
(example at line 1688)line 1688 source - example
(example at line 1693)line 1693 source - example
(example at line 1698)line 1698 source - example
(example at line 1708)line 1708 source - example
(example at line 1716)line 1716 source - example
(example at line 1724)line 1724 source - def
fline 1742 sourceDistinct definitions of this name: book/TPiL/AxiomsComputation.lean:340 (different declaration text), book/TPiL/DependentTypeTheory.lean:416 (different declaration text), book/TPiL/InductionAndRecursion.lean:833 (different declaration text), book/TPiL/InteractingWithLean.lean:468 (different declaration text). Qualify references as f@path.
- example
(example at line 1749)line 1749 source - def
fline 1763 sourceDistinct definitions of this name: book/TPiL/AxiomsComputation.lean:340 (different declaration text), book/TPiL/DependentTypeTheory.lean:416 (different declaration text), book/TPiL/InductionAndRecursion.lean:833 (different declaration text), book/TPiL/InteractingWithLean.lean:468 (different declaration text). Qualify references as f@path.
- example
(example at line 1770)line 1770 sourceSource comment
----example (x y z : Nat) : x ≠ 5 → y ≠ 5 → z ≠ 5 → z = w → f x y w = 1 := by …
Mentions: x
- def
gline 1781 sourceDistinct definitions of this name: book/TPiL/AxiomsComputation.lean:341 (different declaration text), book/TPiL/DependentTypeTheory.lean:417 (different declaration text). Qualify references as g@path.
- example
(example at line 1787)line 1787 source - example
(example at line 1809)line 1809 source - example
(example at line 1821)line 1821 source - example
(example at line 1824)line 1824 source - example
(example at line 1830)line 1830 source - example
(example at line 1848)sorry line 1848 source