Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion LeanByExample/Reference/Tactic/Simp.lean
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ example {x y : Nat} : 0 < 1 + x ∧ x + y + 2 ≥ y + 1 := by
simp_arith

/- ## simp_all
`simp_all` はローカルコンテキストとゴールをこれ以上単純化できなくなるまですべて単純化します。-/
[`simp_all`](./SimpAll.md) はローカルコンテキストとゴールをこれ以上単純化できなくなるまですべて単純化します。-/

example {P Q : Prop} (hP : P) (hQ : Q) : P ∧ (Q ∧ (P → Q)) := by
-- simp at * は失敗する
Expand Down
25 changes: 25 additions & 0 deletions LeanByExample/Reference/Tactic/SimpAll.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
/- # simp_all

`simp_all` タクティクは、`simp` タクティクの派生で、仮定とゴールに対してこれ以上適用できなくなるまで `simp` を適用します。

`simp at *` と似ていますが、`simp_all` は簡約された仮定を再び簡約に使うなど再帰的な挙動をします。
-/

example (P : Nat → Bool)
(h1 : P (if 0 + 0 = 0 then 1 else 2))
(h2 : P (if P 1 then 0 else 1) ) : P 0 := by
simp at *

-- まだゴールが残っている
show P 0

simp [h1] at h2
assumption

example (P : Nat → Bool)
(h1 : P (if 0 + 0 = 0 then 1 else 2))
(h2 : P (if P 1 then 0 else 1) ) : P 0 := by
-- 一発で終わる。
-- h1 を簡約した後で、h2 を「簡約後の h1」を使って簡約し、
-- ゴールと仮定が一致していることを確認するという挙動をする。
simp_all
1 change: 1 addition & 0 deletions booksrc/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,7 @@
- [says: タクティク提案の痕跡を残す](./Reference/Tactic/Says.md)
- [set: 定義の導入](./Reference/Tactic/Set.md)
- [show: 示すべきことを宣言](./Reference/Tactic/Show.md)
- [simp_all: 仮定とゴールを全て単純化](./Reference/Tactic/SimpAll.md)
- [simp: 単純化](./Reference/Tactic/Simp.md)
- [slim_check: 反例を見つける](./Reference/Tactic/SlimCheck.md)
- [sorry: 証明したことにする](./Reference/Tactic/Sorry.md)
Expand Down