levels and custom induction
This commit is contained in:
@@ -7,6 +7,8 @@ import Mathlib.Tactic.Ring
|
||||
|
||||
import Adam.ToBePorted
|
||||
|
||||
set_option tactic.hygienic false
|
||||
|
||||
Game "Adam"
|
||||
World "Contradiction"
|
||||
Level 1
|
||||
@@ -49,10 +51,10 @@ Statement (A B : Prop) (h : A → ¬ B) (k : A ∧ B) : False := by
|
||||
Hint (hidden := true) "**Robo**: `apply` sollte helfen"
|
||||
apply h
|
||||
assumption
|
||||
· Hint (hidden := true) "**Du**: Und wie war das nochmals wenn zwei Annahmen sich widersprechen?
|
||||
Hint "**Du**: Und wie war das nochmals wenn zwei Annahmen sich widersprechen?
|
||||
|
||||
**Robo**: `contradiction`."
|
||||
contradiction
|
||||
**Robo**: `contradiction`."
|
||||
contradiction
|
||||
|
||||
NewTactic «have»
|
||||
DisabledTactic «suffices»
|
||||
|
||||
@@ -23,7 +23,7 @@ Statement not_imp_not (A B : Prop) : A → B ↔ (¬ B → ¬ A) := by
|
||||
Hint "**Du**: Ja, das habe ich tatsächlich schon einmal gesehen.
|
||||
|
||||
**Robo**: Ja, klar hast du das schon einmal gesehen. Das benutzen Mathematiker doch ständig. Wenn ihnen zu $A ⇒ B$ nichts einfällt, zeigen sie stattdessen $¬B ⇒ ¬A$. Ich würde das ja statt *Kontraposition* oder `not_imp_not` eher *von_hinten_durch_die_Brust_ins_Auge* nennen. Aber gut, ich will mich nicht einmisschen.
|
||||
"
|
||||
"
|
||||
Hint (hidden := true) "**Robo**: Fang doch mal mit `constructor` an."
|
||||
constructor
|
||||
intro h b
|
||||
@@ -44,5 +44,6 @@ Statement not_imp_not (A B : Prop) : A → B ↔ (¬ B → ¬ A) := by
|
||||
|
||||
DisabledTactic rw
|
||||
DisabledLemma not_not
|
||||
LemmaTab "Logic"
|
||||
|
||||
Conclusion ""
|
||||
|
||||
@@ -14,7 +14,7 @@ Title "Kontraposition"
|
||||
|
||||
Introduction
|
||||
"
|
||||
**Benedictus**: Gut, hier ist die angekündigte Frage. Versucht mal einen *direkten* Beweis, ohne `contrapose`.
|
||||
**Benedictus**: Gut, hier ist die angekündigte Frage. Versucht mal einen *direkten* Beweis, ohne `by_contra`.
|
||||
"
|
||||
|
||||
-- Ein Beweis durch Kontraposition benützt im Grunde das eben bewiesene Lemma
|
||||
@@ -44,7 +44,7 @@ Statement (n : ℕ) (h : Odd (n ^ 2)): Odd n := by
|
||||
|
||||
**Robo**: Erinner dich an `revert`. Mit `revert {h}` kannst du die Annahme `{h}` als Implikationsannahme ins Beweissziel schieben."
|
||||
revert h
|
||||
Hint "**Du**: Und jetzt kann ich dieses Kontrapositionslemma anwenden? Wie hieß das noch einmal?
|
||||
Hint "**Du**: Und jetzt kann ich dieses Kontrapositionslemma anwenden? Wie hieß das noch einmal?
|
||||
|
||||
**Robo**: Tatsächlich kannst auch einfach `contrapose` schreiben.
|
||||
"
|
||||
@@ -52,10 +52,13 @@ Statement (n : ℕ) (h : Odd (n ^ 2)): Odd n := by
|
||||
Hint (hidden := true) "**Robo**: Vielleicht hilft jetzt `even_iff_not_odd` weiter?"
|
||||
rw [← even_iff_not_odd]
|
||||
rw [← even_iff_not_odd]
|
||||
Hint "**Du**: Das sieht schon ganz gut aus. Jetzt kann ich tatsächlich das alte Lemma anwenden!"
|
||||
Hint "**Du**: Das sieht schon ganz gut aus. Jetzt kann ich tatsächlich das alte Lemma
|
||||
`even_square` anwenden!"
|
||||
apply even_square
|
||||
|
||||
NewLemma even_square
|
||||
NewTactic contrapose
|
||||
DisabledTactic by_contra
|
||||
LemmaTab "Nat"
|
||||
|
||||
Conclusion "**Benedictus**: Hervorragend! Ich glaube, damit seid Ihr jetzt ganz gut gewappnet."
|
||||
Conclusion "**Benedictus**: Hervorragend! Ich glaube, damit seid Ihr jetzt ganz gut gewappnet."
|
||||
|
||||
@@ -31,11 +31,11 @@ open Nat
|
||||
|
||||
Statement (n : ℕ) (h : Odd (n ^ 2)) : Odd n := by
|
||||
Hint "Sobald Ihr Euch sicher vom Gravitationsfeld des Asteroiden befreit habt, beugt Ihr Euch wieder über die Aufgabe.
|
||||
|
||||
|
||||
**Robo**: Ok, also diesmal fangen wir mit `by_contra g` an!"
|
||||
by_contra g
|
||||
Hint "**Robo**: Jetzt würde ich einen Widerspruch zu `Odd (n ^ 2)` führen."
|
||||
Hint "**Robo**: Also `suffices g : ¬ Odd (n ^ 2)`."
|
||||
Hint (hidden := true) "**Robo**: Also `suffices g : ¬ Odd (n ^ 2)`."
|
||||
suffices d : ¬ Odd (n ^ 2)
|
||||
contradiction
|
||||
rw [←even_iff_not_odd] at *
|
||||
@@ -49,7 +49,7 @@ Conclusion "**Robo**: Bravo! Hier ein Überblick, was uns Benediktus gezeigt hat
|
||||
|
||||
| | Taktik | Beispiel |
|
||||
|:------|:----------------|:-------------------------------------------------------|
|
||||
| 177 | `have` | Zwischenresultat annehmen |
|
||||
| 17 | `have` | Zwischenresultat annehmen |
|
||||
| 18 | `suffices` | Zwischenresultat annehmen |
|
||||
| 19 | `by_contra` | Widerspruch *(startet einen Widerspruchsbeweis)* |
|
||||
| *3* | `contradiction` | *(schliesst einen Widerspruchsbeweis)* |
|
||||
|
||||
Reference in New Issue
Block a user