|
1 | 1 | /- # タクティク |
2 | 2 | タクティクは、Lean において証明を対話的に行ったり自動化したりすることを可能にするものです。 |
3 | 3 |
|
4 | | -なおこのリストは全部のタクティクを網羅していません。Mathlib の全タクティクのリストが必要であれば [Mathlib4 Help](https://seasawher.github.io/mathlib4-help/) を参照してください。 |
| 4 | +なお本書は全部のタクティクを網羅していません。Mathlib の全タクティクのリストが必要であれば [Mathlib4 Help](https://seasawher.github.io/mathlib4-help/) を参照してください。 |
| 5 | +
|
| 6 | +## よく使うタクティク早見表 |
| 7 | +
|
| 8 | +Lean で利用可能なタクティクは多岐にわたるので、ここによく使うタクティクの早見表を載せておきます。 |
| 9 | +
|
| 10 | +### 関数と等式系 |
| 11 | +
|
| 12 | +| タクティク | 用途 | |
| 13 | +|-----------|------| |
| 14 | +| [`rw`](./Rw.md) | `A = B` という等式を使って書き換えを行いたいとき | |
| 15 | +| [`rfl`](./Rfl.md) | `A = B` という等式を定義に展開することで示したいとき | |
| 16 | +| [`congr`](./Congr.md) | `f a = f b` を `a = b` に帰着して示したいとき | |
| 17 | +| [`calc`](./Calc.md) | 等式を連鎖させて `a = b` を示したいとき | |
| 18 | +
|
| 19 | +### 命題論理系 |
| 20 | +
|
| 21 | +| タクティク | 用途 | |
| 22 | +|-----------|------| |
| 23 | +| [`exact`](./Exact.md) | 仮定 `h : A` からゴール `⊢ A` を示したいとき | |
| 24 | +| [`assumption`](./Assumption.md) | 仮定の中にゴールと同じものがあるとき | |
| 25 | +| [`intro`](./Intro.md) | `A → B` を示したいとき | |
| 26 | +| [`apply`](./Apply.md) | `h : A → B` という仮定や命題を使いたいとき | |
| 27 | +| [`constructor`](./Constructor.md) | `A ∧ B` や `A ↔ B` を示したいとき | |
| 28 | +| [`obtain`](./Obtain.md) | `h : A ∧ B` という仮定や命題を分解したいとき | |
| 29 | +| [`rw`](./Rw.md) | `h : A ↔ B` という仮定や命題を使って書き換えを行いたいとき | |
| 30 | +| [`left`](./Left.md) | `⊢ A ∨ B` というゴールを `⊢ A` に帰着したいとき | |
| 31 | +| [`right`](./Right.md) | `⊢ A ∨ B` というゴールを `⊢ B` に帰着したいとき | |
| 32 | +| [`cases`](./Cases.md) | 仮定 `h : A ∨ B` をもとに場合分けしたいとき | |
| 33 | +| [`by_cases`](./ByCases.md) | 命題 `A` について `A ∨ ¬ A` という場合分けを行いたいとき | |
| 34 | +| [`exfalso`](./Exfalso.md) | ゴールを矛盾を示すことに帰着したいとき | |
| 35 | +| [`contradiction`](./Contradiction.md) | `A` と `¬ A` が両方成り立つことからゴールを閉じたいとき | |
| 36 | +| [`have`](./Have.md) | 証明の途中で補題を立てたいとき | |
| 37 | +| [`suffices`](./Suffices.md) | ゴールを十分条件に帰着したいとき | |
| 38 | +
|
| 39 | +### 述語論理系 |
| 40 | +
|
| 41 | +| タクティク | 用途 | |
| 42 | +|-----------|------| |
| 43 | +| [`intro`](./Intro.md) | `∀ x, P x` を示したいとき | |
| 44 | +| [`exists`](./Exists.md) | `∃ x, P x` を示したいとき | |
| 45 | +| [`obtain`](./Obtain.md) | `h : ∃ x, P x` という仮定や命題を分解したいとき | |
| 46 | +
|
| 47 | +### 帰納型と帰納法 |
| 48 | +
|
| 49 | +| タクティク | 用途 | |
| 50 | +|-----------|------| |
| 51 | +| [`induction`](./Induction.md) | 帰納法を行いたいとき | |
| 52 | +| [`fun_induction`](./FunInduction.md) | 関数定義に基づいて帰納法を行いたいとき | |
| 53 | +| [`cases`](./Cases.md) | 帰納型の値をコンストラクタに基づいて場合分けしたいとき | |
| 54 | +| [`fun_cases`](./FunCases.md) | 関数定義に基づいて場合分けしたいとき | |
| 55 | +| [`ext`](./Ext.md) | 外延性を利用したいとき | |
| 56 | +| [`unfold`](./Unfold.md) | 名前を定義に展開したいとき | |
| 57 | +
|
| 58 | +### ライブラリ検索と自動証明 |
| 59 | +
|
| 60 | +| タクティク | 用途 | |
| 61 | +|-----------|------| |
| 62 | +| [`exact?`](./Exact.md) | ゴールを閉じることのできる補題を検索したいとき | |
| 63 | +| [`rw?`](./Rw.md) | ゴールを書き換えることのできる補題を検索したいとき | |
| 64 | +| [`simp`](./Simp.md) | 等式書き換えによる単純化を自動で行いたいとき | |
| 65 | +| [`grind`](./Grind.md) | 書き換え・前方推論・後方推論・場合分けを自動で行いたいとき | |
| 66 | +| [`try?`](./Try.md) | とりあえず証明したいとき | |
| 67 | +
|
5 | 68 | -/ |
0 commit comments