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/testgame/TestGame/Levels/Logic/L08b_Or.lean

53 lines
1.3 KiB
Plaintext

2 years ago
import TestGame.Metadata
import Std.Tactic.RCases
import Mathlib.Tactic.LeftRight
2 years ago
--set_option tactic.hygienic false
2 years ago
Game "TestGame"
World "TestWorld"
Level 15
2 years ago
Title "Oder - Bonus"
2 years ago
Introduction
"
Wenn man hingegen ein ODER - `(h : A B)` - in den Annahmen hat, kann man dieses
ähnlich wie beim UND mit `rcases h` aufteilen.
ABER! Beim UND `(h : A ∧ B)` hat man dann zwei neue Annahmen erhalten, und diese hat man mit
`rcases h with ⟨hA, hB⟩` benannt. Beim ODER `(h : A B)` kriegt man stattdessen zwei **Goals**
wo man annimmt, dass entweder die linke oder rechte Seite von `h` war ist.
Diese Annahme benennt man dann mit `rcases h with hA | hB`.
"
2 years ago
Statement
(A B C D : Prop) (h : (A ∧ B) (D C)) : (A ∧ B) (C D) := by
rcases h with ⟨ha, hb⟩ | (h | h)
2 years ago
left
2 years ago
constructor
assumption
2 years ago
assumption
right
2 years ago
right
2 years ago
assumption
2 years ago
right
left
2 years ago
assumption
2 years ago
Message (A : Prop) (B : Prop) (C : Prop) (D : Prop) (h : (A ∧ B) (D C)) : (A ∧ B) (C D) =>
"Man kann hier entweder in mehren Schritten `rcases` anwenden:
```
rcases h with h₁ | h₂
rcases h₁ with ⟨hA, hB⟩
[...]
rcases h₂ with h | h
```
oder man kann dies in einem Schritt verschachteln:
```
rcases h with ⟨ha, hb⟩ | (h | h)
```
"
2 years ago
2 years ago
Tactics left right assumption constructor rcases apply