From 01b09a1cebd263cc3b678494fb26ad35ba17fa2c Mon Sep 17 00:00:00 2001 From: djvelleman <110697570+djvelleman@users.noreply.github.com> Date: Sat, 30 Nov 2024 16:33:45 -0500 Subject: [PATCH] Improve introduction of tactics --- IntroLean.qmd | 2 +- docs/How-To-Prove-It-With-Lean.pdf | Bin 2295471 -> 2295536 bytes docs/IntroLean.html | 2 +- docs/search.json | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/IntroLean.qmd b/IntroLean.qmd index 7d1fc19..1e98a2e 100644 --- a/IntroLean.qmd +++ b/IntroLean.qmd @@ -211,7 +211,7 @@ No goals Congratulations! You've written your first proof in tactic mode. If you move your cursor around in the proof, you will see that Lean always displays in the Infoview the tactic state at the point in the proof where the cursor is located. Try clicking on different lines of the proof to see how the tactic state changes over the course of the proof. If you want to try another example, you could try typing in the first example in this chapter. You will learn the most from this book if you continue to type the examples into Lean and see for yourself how the tactic state gets updated as the proof is written. -We have now seen four tactics: `contrapos`, `assume`, `have`, and `show`. If the goal is a conditional statement, the `contrapos` tactic replaces it with its contrapositive. If `h` is a given that is a conditional statement, then `contrapos at h` will replace `h` with its contrapositive. If the goal is a conditional statement `P → Q`, you can use the `assume` tactic to assume the antecedent `P`, and Lean will set the goal to be the consequent `Q`. You can use the `have` tactic to make an inference from your givens, as long as you can justify the inference with a proof. The `show` tactic is similar, but it is used to infer the goal, thus completing the proof. And we have learned how to use one rule of inference in term mode: modus ponens. In the rest of this book we will learn about other tactics and other term-mode rules. +In each step of a tactic-mode proof, we invoke a *tactic*. In the proofs above, we have used four tactics: `contrapos`, `assume`, `have`, and `show`. If the goal is a conditional statement, the `contrapos` tactic replaces it with its contrapositive. If `h` is a given that is a conditional statement, then `contrapos at h` will replace `h` with its contrapositive. If the goal is a conditional statement `P → Q`, you can use the `assume` tactic to assume the antecedent `P`, and Lean will set the goal to be the consequent `Q`. You can use the `have` tactic to make an inference from your givens, as long as you can justify the inference with a proof. The `show` tactic is similar, but it is used to infer the goal, thus completing the proof. And we have learned how to use one rule of inference in term mode: modus ponens. In the rest of this book we will learn about other tactics and other term-mode rules. Before continuing, it might be useful to summarize how you type statements into Lean. We have already told you how to type the symbols `→` and `¬`, but you will want to know how to type all of the logical connectives. In each case, the command to produce the symbol must be followed by space or tab, but there is also a plain text alternative: diff --git a/docs/How-To-Prove-It-With-Lean.pdf b/docs/How-To-Prove-It-With-Lean.pdf index 65424c347384ac701af0695836a8b69b506f7579..f58159445d65ea1bb2d37ea1c99b161eb9fbd6fa 100644 GIT binary patch delta 28729 zcmZ6yQ
GP5ow
z8tC>Pzk`8-frCMUL4(19!Gj@!A%mfUp@U(9VT0j<;e!!^5rdJMk o3q4eg#(=Dg!sRuQ-nY1;6UyqQbU+)5UaQbVnXXKS&;^Lv
zm8jSUrE4t5d?3}P(!je@J7#76>DR)HSae4clGP)W!|E88LDR=H&YxB8!e(qVIZiYW
zM?UXKYH@Yw-=y^kYdcKpxpUUKh5zu#Jm)HWmzpJ0=jObzo!>W|mxV4=n+l6@eHhQl
zjt#wh4K@oKt@D&9iit;cxTn41UIdtdj+^R4jTA%u;n?eWUQ9Qq#H%{6qgp!5Supo|
zIDUb)^p?p4S@&IdcB}ZkWd1zQq1o<07ox*Az-lRNeRVV;jmR;i!t1LzF>c%2%NQve
zG)p9`f$-#0W07EuW$OHUec&&+P$~Y@RPIX2ubpuq{Z6#Nrb}MS4B2MG@MXX&Sr0R}
zl@Z^Gn>XawQzIh7j^U-@3(nTu({OK7bU`IGs%)9A!;k4?hW-5(`V4})XJbRxFgB{Wj?yzo?V$OQ5(6o4X?<~V=LIT{1q&DZsFF)**)eI
zaMy{A-!%BA%~YNk2-Q@43F)oAobO4|XH2P=DR8#C;O`aG_>V-X?=6;@K<7YP=21}F
zU`joYlCZNlf+rlMFt`9YT*my$stx1pz2h{8+Y?D0AFpq_^Gt>tb^b$d%_zX_WjfG7
zON$GpW&plCHNut;(zaLc+U|lzV@A=yMJf6V#S4x`(s6R5BEdcQS
zWLMJ(M`ao_O!^mBqa*G?7h>K#@R4EoyBql&ZnR-_Vh$T|&!#{Y(dk>tv!hK0N6kK`
z7#uw|-_L3W-&~!UYV_EuaK@l#;b@?7y4$spQ8GJ13D=#Tj&PvXG}c_)utta?=a7;(
zy!RNqal