You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lean4game/server/adam/Adam/Levels/Proposition/L13_Summary.lean

118 lines
3.7 KiB
Plaintext

import Adam.Metadata
import Std.Tactic.RCases
import Mathlib.Tactic.LeftRight
set_option tactic.hygienic false
Game "Adam"
World "Proposition"
Level 14
Title "Zusammenfassung"
Introduction
"
Der letzte Untertan tritt vor. Ihr Anliegen ist etwas komplizierter als die vorherigen.
2 years ago
**Robo** Wirf einfach alles drauf, was Du gelernt hast.
Hier, ich bin sogar so nett und zeig Dir noch einmal die vier
wichtigsten Taktiken für diese Situation an.
| (Übersicht) | Und (`∧`) | Oder (``) |
|-------------|:-------------------------|:------------------------|
| Annahme | `rcases h with ⟨h₁, h₂⟩` | `rcases h with h \\| h` |
| Goal | `constructor` | `left`/`right` |
"
-- Note: The other direction would need arguing by cases.
2 years ago
Statement ""
(A B C : Prop) (h : A (B ∧ C)) : (A B) ∧ (A C) := by
2 years ago
Hint (hidden := true)
"**Robo**: Ich würd zuerst die Annahme {h} mit `rcases {h}` aufteilen."
Branch
constructor
· rcases h with h' | h'
· left
assumption
· rcases h' with ⟨h₁, h₂⟩
right
assumption
· rcases h with h' | h'
· left
assumption
· rcases h' with ⟨h₁, h₂⟩
right
assumption
rcases h
Hint (hidden := true) "**Robo**: Jetzt kannst Du das `∧` im Goal mit `constructor` angehen."
· constructor
· left
assumption
· left
assumption
· Hint (hidden := true)
"**Robo**: Hier würde ich die Annahme {h} nochmals mit `rcases` aufteilen."
Branch
constructor
· Hint "**Robo**: Der Nachteil an der Reihenfolge ist, dass du jetzt in jedem Untergoal
`rcases h` aufrufen musst."
Branch
right
rcases h with ⟨h₁, h₂⟩
assumption
rcases h with ⟨h₁, h₂⟩
right
assumption
· Branch
right
rcases h with ⟨h₁, h₂⟩
assumption
rcases h with ⟨h₁, h₂⟩
right
assumption
rcases h with ⟨h₁, h₂⟩
constructor
· right
assumption
· right
assumption
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : B ∧ C) : (A B) ∧ (A C) =>
-- "**Robo** Das `∧` in der Annahme kannst Du mit `rcases {h} with ⟨h₁, h₂⟩` zerlegen."
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) : (A B) ∧ (A C) =>
-- "**Robo** Das `∧` im Goal kannst Du mit `constructor` zerlegen."
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : A (B ∧ C)) : (A B) ∧ (A C) =>
-- "**Robo** Das `` in der Annahme kannst Du mit `rcases h with h | h` zerlegen."
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : A (B ∧ C)) : (A B) =>
-- "**Robo** Das `` in der Annahme kannst Du mit `rcases h with h | h` zerlegen."
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : A (B ∧ C)) : (A C) =>
-- "**Robo** Das `` in der Annahme kannst Du mit `rcases h with h | h` zerlegen."
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : B ∧ C) : (A B) =>
-- "**Robo** Das `∧` in der Annahme kannst Du mit `rcases h with ⟨h₁, h₂⟩` zerlegen."
-- HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : B ∧ C) : (A C) =>
-- "**Robo** Das `∧` in der Annahme kannst Du mit `rcases {h} with ⟨h₁, h₂⟩` zerlegen."
-- -- TODO: Hint nur Anhand der Annahmen?
-- HiddenHint (A : Prop) (B : Prop) : A B =>
-- "**Robo** `left` oder `right`?"
Conclusion
"
2 years ago
**Robo** Bravo! Jetzt aber nichts wie weg hier, bevor sich eine neue Schlange bildet!
Königin *Logisinde* ist in der Zwischenzeit eingeschlafen, und ihr stehlt euch heimlich davon.
"
NewTactic left right assumption constructor rcases rfl contradiction trivial
DisabledTactic tauto