import Adam.Metadata import Std.Tactic.RCases import Mathlib.Tactic.LeftRight set_option tactic.hygienic false Game "Adam" World "Implication" Level 9 Title "Oder" Introduction " Übung macht den Meister... Benutze alle vier Methoden mit UND und ODER umzugehen um folgende Aussage zu beweisen. | | Und | Oder | |---------|:-------------------------|:--------------------------| | Annahme | `rcases h with ⟨h₁, h₂⟩` | `rcases h with h₁ \\| h₂` | | Goal | `constructor` | `left`/`right` | " Statement and_or_imp "Angenommen $(A \\land B) \\lor (A \\Rightarrow C)$ und $A$ sind wahr, zeige dass $B \\lor (C \\land A)$ wahr ist." (A B C : Prop) (h : (A ∧ B) ∨ (A → C)) (hA : A) : (B ∨ (C ∧ A)) := by rcases h with h₁ | h₂ left rcases h₁ with ⟨x, y⟩ assumption right constructor apply h₂ assumption assumption HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B ∨ (A → C)) (hA : A) : B ∨ (C ∧ A) => "Ein ODER in den Annahmen teilt man mit `rcases h with h₁ | h₂`." -- If starting with `left`. Hint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B ∨ (A → C)) : B => "Da kommst du nicht mehr weiter..." -- If starting with `right`. Hint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B ∨ (A → C)) : (C ∧ A) => "Da kommst du nicht mehr weiter..." HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B) (hA : A) : B ∨ (C ∧ A) => "`left` oder `right`?" HiddenHint (A : Prop) (B : Prop) (C : Prop) (h : B) (hA : A) : B ∨ (C ∧ A) => "`left` oder `right`?" Hint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B) (hA : A) : B ∨ (C ∧ A) => "Ein UND in den Annahmen kann man mit `rcases h with ⟨h₁, h₂⟩` aufteilen." Hint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B) (hA : A) : B => "Ein UND in den Annahmen kann man mit `rcases h with ⟨h₁, h₂⟩` aufteilen." Hint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B) : C => "Sackgasse." Hint (A : Prop) (B : Prop) (C : Prop) (h : A ∧ B) : C ∧ A => "Hmmm..." Hint (A : Prop) (B : Prop) (C : Prop) (h : A → C) : C ∧ A => "Ein UND im Goal kann mit `constructor` aufgeteilt werden." NewTactic left right assumption constructor rcases