lemma docs

pull/54/head
Jon Eugster 3 years ago
parent 5dd846f168
commit c947ef20d7

@ -3,209 +3,451 @@ import GameServer.Commands
-- Wird im Level "Implication 11" ohne Beweis angenommen. -- Wird im Level "Implication 11" ohne Beweis angenommen.
LemmaDoc not_not as "not_not" in "Logic" LemmaDoc not_not as "not_not" in "Logic"
" "
### Aussage `not_not {A : Prop} : ¬¬A ↔ A`
`¬¬A ↔ A` * `simp`-Lemma: Ja
* Namespace: `Classical`
### Annahmen * Minimal Import: `Std.Logic`
* Mathlib Doc: [#not_not](https://leanprover-community.github.io/mathlib4_docs/Std/Logic.html#Classical.not_not)
`(A : Prop)`
" "
-- Wird im Level "Implication 10" ohne Beweis angenommen. -- Wird im Level "Implication 10" ohne Beweis angenommen.
LemmaDoc not_or_of_imp as "not_or_of_imp" in "Logic" LemmaDoc not_or_of_imp as "not_or_of_imp" in "Logic"
" "
### Aussage `not_or_of_imp {A B : Prop} : (A → B) → ¬A B`
`¬A B`
### Annahmen
`(A B : Prop)`\\ * `simp`-Lemma: Nein
`(h : A → B)` * Namespace: `-`
* Minimal Import: `Mathlib.Logic.Basic`
* Mathlib Doc: [#not_or_of_imp](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Logic/Basic.html#not_or_of_imp)
" "
-- Wird im Level "Implication 12" bewiesen. -- Wird im Level "Implication 12" bewiesen.
LemmaDoc imp_iff_not_or as "imp_iff_not_or" in "Logic" LemmaDoc imp_iff_not_or as "imp_iff_not_or" in "Logic"
" "
### Aussage `imp_iff_not_or {A B : Prop} : (A → B) ↔ (¬A B)`
`(A → B) ↔ ¬A B` * `simp`-Lemma: Nein
* Namespace: `-`
### Annahmen * Minimal Import: `Mathlib.Logic.Basic`
* Mathlib Doc: [#imp_iff_not_or](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Logic/Basic.html#imp_iff_not_or)
`(A B : Prop)`
" "
LemmaDoc Nat.succ_pos as "succ_pos" in "Nat"
LemmaDoc Nat.succ_pos as "Nat.succ_pos" in "Nat"
" "
" `Nat.succ_pos (n : ) : 0 < n.succ`
LemmaDoc Nat.pos_iff_ne_zero as "Nat.pos_iff_ne_zero" in "Nat"
"
"
LemmaDoc zero_add as "zero_add" in "Addition"
"This lemma says `∀ a : , 0 + a = a`."
LemmaDoc add_zero as "add_zero" in "Addition" $n + 1$ ist strikt grösser als Null.
"This lemma says `∀ a : , a + 0 = a`."
LemmaDoc add_succ as "add_succ" in "Addition"
"This lemma says `∀ a b : , a + succ b = succ (a + b)`."
LemmaDoc not_forall as "not_forall" in "Logic" ## Eigenschaften
"`∀ (A : Prop), ¬(∀ x, A) ↔ ∃x, (¬A)`."
LemmaDoc not_exists as "not_exists" in "Logic" * `simp` Lemma: Nein
"`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`." * Namespace: `Nat`
* Minimal Import: `Mathlib.Init.Prelude`
DefinitionDoc Even as "Even" * Mathlib Doc: [#Nat.succ_pos](https://leanprover-community.github.io/mathlib4_docs/Init/Prelude.html#Nat.succ_pos)
"
`even n` ist definiert als `∃ r, a = 2 * r`.
Die Definition kann man mit `unfold even at *` einsetzen.
" "
DefinitionDoc Odd as "Odd" LemmaDoc Nat.pos_iff_ne_zero as "pos_iff_ne_zero" in "Nat"
"
`odd n` ist definiert als `∃ r, a = 2 * r + 1`.
Die Definition kann man mit `unfold odd at *` einsetzen.
" "
`Nat.pos_iff_ne_zero {n : } : 0 < n ↔ n ≠ 0`
DefinitionDoc Injective as "Injective" * `simp`-Lemma: Nein
* Namespace: `Nat`
* Minimal Import: `Std.Data.Nat.Lemmas`
* Mathlib Doc: [#Nat.pos_iff_ne_zero](https://leanprover-community.github.io/mathlib4_docs/Std/Data/Nat/Lemmas.html#Nat.pos_iff_ne_zero)
" "
`Injective f` ist definiert als
``` -- TODO: Not minimal description
∀ a b, f a = f b → a = b LemmaDoc zero_add as "zero_add" in "Addition"
``` "zero_add (a : ) : 0 + a = a`.
definiert.
"
DefinitionDoc Surjective as "Surjective"
"
`Surjective f` ist definiert als
``` * `simp`-Lemma: Ja
∀ a, (∃ b, f a = b) * Namespace: `-`
``` * Import: `Mathlib.Nat.Basic`
* Mathlib Doc: [#zero_add](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Group/Defs.html#zero_add)
" "
DefinitionDoc Bijective as "Bijective" LemmaDoc add_zero as "add_zero" in "Addition"
" "This lemma says `∀ a : , a + 0 = a`.
"
DefinitionDoc LeftInverse as "LeftInverse" * `simp`-Lemma:
" * Namespace: `-`
" * Minimal Import: `Mathlib.`
* Mathlib Doc"
DefinitionDoc RightInverse as "RightInverse" LemmaDoc add_succ as "add_succ" in "Addition"
" "This lemma says `∀ a b : , a + succ b = succ (a + b)`.
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()"
LemmaDoc not_forall as "not_forall" in "Logic"
" "
`not_forall {α : Sort _} {P : α → Prop} : ¬(∀ x, → P x) ↔ ∃ x, ¬P x`
DefinitionDoc StrictMono as "StrictMono" * `simp`-Lemma: Ja
* Namespace: `-`
* Minimal Import: `Mathlib.Logic.Basic`
* Mathlib Doc: [#not_forall](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Logic/Basic.html#not_forall)
" "
`StrictMono f` ist definiert als
``` LemmaDoc not_exists as "not_exists" in "Logic"
∀ a b, a < b → f a < f b "`∀ (A : Prop), ¬(∃ x, A) ↔ ∀x, (¬A)`.
```
" * `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()"
LemmaDoc even_iff_not_odd as "even_iff_not_odd" in "Nat" LemmaDoc even_iff_not_odd as "even_iff_not_odd" in "Nat"
"`Even n ↔ ¬ (Odd n)`" "`Even n ↔ ¬ (Odd n)`
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()"
LemmaDoc odd_iff_not_even as "odd_iff_not_even" in "Nat" LemmaDoc odd_iff_not_even as "odd_iff_not_even" in "Nat"
"`Odd n ↔ ¬ (Even n)`" "`Odd n ↔ ¬ (Even n)`
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()"
LemmaDoc even_square as "even_square" in "Nat" LemmaDoc even_square as "even_square" in "Nat"
"`∀ (n : ), Even n → Even (n ^ 2)`" "`∀ (n : ), Even n → Even (n ^ 2)`
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc mem_univ as "mem_univ" in "Set" LemmaDoc mem_univ as "mem_univ" in "Set"
"x ∈ @univ α" "x ∈ @univ α
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc not_mem_empty as "not_mem_empty" in "Set" LemmaDoc not_mem_empty as "not_mem_empty" in "Set"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc empty_subset as "empty_subset" in "Set" LemmaDoc empty_subset as "empty_subset" in "Set"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Subset.antisymm_iff as "Subset.antisymm_iff" in "Set" LemmaDoc Subset.antisymm_iff as "Subset.antisymm_iff" in "Set"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Nat.prime_def_lt'' as "Nat.prime_def_lt''" in "Nat" LemmaDoc Nat.prime_def_lt'' as "Nat.prime_def_lt''" in "Nat"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Finset.sum_add_distrib as "Finset.sum_add_distrib" in "Sum" LemmaDoc Finset.sum_add_distrib as "Finset.sum_add_distrib" in "Sum"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum" LemmaDoc Fin.sum_univ_castSucc as "Fin.sum_univ_castSucc" in "Sum"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum" LemmaDoc Nat.succ_eq_add_one as "Nat.succ_eq_add_one" in "Sum"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Nat.zero_eq as "Nat.succ_eq_add_one" in "Sum" LemmaDoc Nat.zero_eq as "Nat.succ_eq_add_one" in "Sum"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc add_comm as "add_comm" in "Nat" LemmaDoc add_comm as "add_comm" in "Nat"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc mul_add as "mul_add" in "Nat" LemmaDoc mul_add as "mul_add" in "Nat"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc add_mul as "add_mul" in "Nat" LemmaDoc add_mul as "add_mul" in "Nat"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc arithmetic_sum as "arithmetic_sum" in "Sum" LemmaDoc arithmetic_sum as "arithmetic_sum" in "Sum"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc add_pow_two as "add_pow_two" in "Nat" LemmaDoc add_pow_two as "add_pow_two" in "Nat"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Finset.sum_comm as "Finset.sum_comm" in "Sum" LemmaDoc Finset.sum_comm as "Finset.sum_comm" in "Sum"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Function.comp_apply as "Function.comp_apply" in "Function" LemmaDoc Function.comp_apply as "Function.comp_apply" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc not_le as "not_le" in "Logic" LemmaDoc not_le as "not_le" in "Logic"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc if_pos as "if_pos" in "Logic" LemmaDoc if_pos as "if_pos" in "Logic"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc if_neg as "if_neg" in "Logic" LemmaDoc if_neg as "if_neg" in "Logic"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc StrictMono.injective as "StrictMono.injective" in "Function" LemmaDoc StrictMono.injective as "StrictMono.injective" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc StrictMono.add as "StrictMono.add" in "Function" LemmaDoc StrictMono.add as "StrictMono.add" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Odd.strictMono_pow as "Odd.strictMono_pow" in "Function" LemmaDoc Odd.strictMono_pow as "Odd.strictMono_pow" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Exists.choose as "Exists.choose" in "Function" LemmaDoc Exists.choose as "Exists.choose" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Exists.choose_spec as "Exists.choose_spec" in "Function" LemmaDoc Exists.choose_spec as "Exists.choose_spec" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc congrArg as "congrArg" in "Function" LemmaDoc congrArg as "congrArg" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc congrFun as "congrFun" in "Function" LemmaDoc congrFun as "congrFun" in "Function"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
LemmaDoc Iff.symm as "Iff.symm" in "Logic" LemmaDoc Iff.symm as "Iff.symm" in "Logic"
"" "
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
/-! ## Definitions -/
DefinitionDoc Even as "Even"
"
`even n` ist definiert als `∃ r, a = 2 * r`.
Die Definition kann man mit `unfold even at *` einsetzen.
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()"
DefinitionDoc Odd as "Odd"
"
`odd n` ist definiert als `∃ r, a = 2 * r + 1`.
Die Definition kann man mit `unfold odd at *` einsetzen.
"
DefinitionDoc Injective as "Injective"
"
`Injective f` ist definiert als
```
∀ a b, f a = f b → a = b
```
definiert.
"
DefinitionDoc Surjective as "Surjective"
"
`Surjective f` ist definiert als
```
∀ a, (∃ b, f a = b)
```
"
DefinitionDoc Bijective as "Bijective"
"
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
DefinitionDoc LeftInverse as "LeftInverse"
"
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
DefinitionDoc RightInverse as "RightInverse"
"
* `simp`-Lemma:
* Namespace: `-`
* Minimal Import: `Mathlib.`
* Mathlib Doc: [#]()
"
DefinitionDoc StrictMono as "StrictMono"
"
`StrictMono f` ist definiert als
```
∀ a b, a < b → f a < f b
```
"
DefinitionDoc Symbol.Subset as "⊆" "Test" DefinitionDoc Symbol.Subset as "⊆" "Test"

@ -83,7 +83,7 @@ Statement arithmetic_sum
ring ring
NewTactic induction NewTactic induction
NewLemma Fin.sum_univ_castSucc Nat.succ_eq_add_one mul_add add_mul NewLemma Fin.sum_univ_castSucc Nat.succ_eq_add_one mul_add add_mul Nat.zero_eq
Conclusion "Du schaust dich um und bewunderst das Tal in dem hunderte, wenn nicht tausende, Conclusion "Du schaust dich um und bewunderst das Tal in dem hunderte, wenn nicht tausende,
Steintürme in allen Formen und Höhen stehen." Steintürme in allen Formen und Höhen stehen."

@ -521,4 +521,9 @@ TacticDoc use
" "
Wenn das Goal von der Form `∃x, P x` ist, kann man mit `use n` ein konkretes Element angeben Wenn das Goal von der Form `∃x, P x` ist, kann man mit `use n` ein konkretes Element angeben
mit dem man das Goal beweisen möchte. mit dem man das Goal beweisen möchte.
## Details
`use n` versucht zudem anschliessend `rfl` aufzurufen, und kann das Goal damit manchmal direkt
schließen.
" "

Loading…
Cancel
Save