make it compile
This commit is contained in:
@@ -37,14 +37,7 @@ Dazwischen sollst Du offenbar einen Beweis eintragen.
|
|||||||
Du siehst Robo hilflos an.
|
Du siehst Robo hilflos an.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "**Robo** Das ist ganz einfach. Mit `A B C : Prop` meint er: `A`, `B` und `C` sind irgendwelche Aussagen (*propositions*). Und mit `→` meint er ⇒, also “impliziert”. Die anderen Symbole kennst Du, oder?
|
||||||
(A B C : Prop) :
|
|
||||||
¬((¬B ∨ ¬ C) ∨ (A → B)) → (¬A ∨ B) ∧ ¬ (B ∧ C) := by
|
|
||||||
tauto
|
|
||||||
|
|
||||||
|
|
||||||
Hint
|
|
||||||
"**Robo** Das ist ganz einfach. Mit `A B C : Prop` meint er: `A`, `B` und `C` sind irgendwelche Aussagen (*propositions*). Und mit `→` meint er ⇒, also “impliziert”. Die anderen Symbole kennst Du, oder?
|
|
||||||
|
|
||||||
**Du** Ehhm, ja. Aber da muss ich jetzt trotzdem erst einmal überlegen.
|
**Du** Ehhm, ja. Aber da muss ich jetzt trotzdem erst einmal überlegen.
|
||||||
|
|
||||||
@@ -56,6 +49,9 @@ Hint
|
|||||||
|
|
||||||
**Robo** Mach schon …
|
**Robo** Mach schon …
|
||||||
"
|
"
|
||||||
|
(A B C : Prop) :
|
||||||
|
¬((¬B ∨ ¬ C) ∨ (A → B)) → (¬A ∨ B) ∧ ¬ (B ∧ C) := by
|
||||||
|
tauto
|
||||||
|
|
||||||
Conclusion
|
Conclusion
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -16,15 +16,12 @@ Du schaust ihn fassungslos an.
|
|||||||
Er schreibt es Dir wieder auf.
|
Er schreibt es Dir wieder auf.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "
|
||||||
|
**Robo** Ist doch klar. Du musst ihn einfach daran erinnern, dass Gleichheit *reflexiv* ist. Probier mal `rfl`.
|
||||||
|
" :
|
||||||
42 = 42 := by
|
42 = 42 := by
|
||||||
rfl
|
rfl
|
||||||
|
|
||||||
Hint
|
|
||||||
"
|
|
||||||
**Robo** Ist doch klar. Du musst ihn einfach daran erinnern, dass Gleichheit *reflexiv* ist. Probier mal `rfl`.
|
|
||||||
"
|
|
||||||
|
|
||||||
Conclusion
|
Conclusion
|
||||||
"
|
"
|
||||||
**Untertan** Ah, richtig. Ja, Sie haben ja so recht. Das vergesse ich immer. Rfl, rfl, rfl …
|
**Untertan** Ah, richtig. Ja, Sie haben ja so recht. Das vergesse ich immer. Rfl, rfl, rfl …
|
||||||
|
|||||||
@@ -11,12 +11,7 @@ Introduction
|
|||||||
Während der erste Untertan noch rfl, rfl, rfl murmelt, tritt schon der nächste nach vorne. Es ist schüchtern und schreibt bloß.
|
Während der erste Untertan noch rfl, rfl, rfl murmelt, tritt schon der nächste nach vorne. Es ist schüchtern und schreibt bloß.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "
|
||||||
(n : ℕ) (h₁ : 10 > n) (h₂ : 1 < n) (h₃ : n ≠ 5) : 1 < n := by
|
|
||||||
assumption
|
|
||||||
|
|
||||||
Hint
|
|
||||||
"
|
|
||||||
**Robo** `n : ℕ` bedeutet, `n` ist eine natürliche Zahl.
|
**Robo** `n : ℕ` bedeutet, `n` ist eine natürliche Zahl.
|
||||||
|
|
||||||
**Du** Warum schreibt er dann nicht `n ∈ ℕ`??
|
**Du** Warum schreibt er dann nicht `n ∈ ℕ`??
|
||||||
@@ -33,7 +28,8 @@ Hint
|
|||||||
|
|
||||||
**Robo** Du musst ihm das halt explizit sagen. Probiers mal mit `assumption`.
|
**Robo** Du musst ihm das halt explizit sagen. Probiers mal mit `assumption`.
|
||||||
"
|
"
|
||||||
|
(n : ℕ) (h₁ : 10 > n) (h₂ : 1 < n) (h₃ : n ≠ 5) : 1 < n := by
|
||||||
|
assumption
|
||||||
|
|
||||||
Conclusion
|
Conclusion
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -12,13 +12,7 @@ Introduction
|
|||||||
Ein dritter Untertan kommt mit folgendem Problem.
|
Ein dritter Untertan kommt mit folgendem Problem.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "
|
||||||
(A : Prop) (hA : A) : A := by
|
|
||||||
assumption
|
|
||||||
|
|
||||||
|
|
||||||
Hint
|
|
||||||
"
|
|
||||||
**Robo** Hier bedeutet `A : Prop` wieder, dass `A` irgendeine Aussage ist.
|
**Robo** Hier bedeutet `A : Prop` wieder, dass `A` irgendeine Aussage ist.
|
||||||
Und `hA` ist eine Name für die Annahme, dass `A` wahr ist.
|
Und `hA` ist eine Name für die Annahme, dass `A` wahr ist.
|
||||||
|
|
||||||
@@ -26,6 +20,9 @@ Hint
|
|||||||
|
|
||||||
**Robo** Ja. Da kommst Du jetzt selbst drauf, wie das geht, oder?
|
**Robo** Ja. Da kommst Du jetzt selbst drauf, wie das geht, oder?
|
||||||
"
|
"
|
||||||
|
(A : Prop) (hA : A) : A := by
|
||||||
|
assumption
|
||||||
|
|
||||||
|
|
||||||
HiddenHint (A : Prop) (hA : A) : A =>
|
HiddenHint (A : Prop) (hA : A) : A =>
|
||||||
"Ist doch genau wie eben: die Aussage, die zu beweisen ist, gehört selbst zu den Annahmen. Also wird `asumption` auch wieder funktionieren."
|
"Ist doch genau wie eben: die Aussage, die zu beweisen ist, gehört selbst zu den Annahmen. Also wird `asumption` auch wieder funktionieren."
|
||||||
|
|||||||
@@ -11,18 +11,15 @@ Introduction
|
|||||||
Der nächste Untertan in der Reihe ist ein Schelm.
|
Der nächste Untertan in der Reihe ist ein Schelm.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "
|
||||||
True := by
|
|
||||||
trivial
|
|
||||||
|
|
||||||
Hint
|
|
||||||
"
|
|
||||||
**Robo** Dieses `True` ist eine spezielle Aussage, nämlich die Aussage, die immer und bedingungslos wahr ist.
|
**Robo** Dieses `True` ist eine spezielle Aussage, nämlich die Aussage, die immer und bedingungslos wahr ist.
|
||||||
|
|
||||||
**Du** Und was genau ist dann zu beweisen?
|
**Du** Und was genau ist dann zu beweisen?
|
||||||
|
|
||||||
**Robo** Ich glaube, nichts. Ich glaube, Du kannst einfach `trivial` schreiben.
|
**Robo** Ich glaube, nichts. Ich glaube, Du kannst einfach `trivial` schreiben.
|
||||||
"
|
" :
|
||||||
|
True := by
|
||||||
|
trivial
|
||||||
|
|
||||||
Conclusion
|
Conclusion
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -11,12 +11,7 @@ Introduction
|
|||||||
Der Schelm hat noch eine Schwester dabei.
|
Der Schelm hat noch eine Schwester dabei.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "
|
||||||
¬False := by
|
|
||||||
trivial
|
|
||||||
|
|
||||||
Hint
|
|
||||||
"
|
|
||||||
**Robo** Dieses Zeichen `¬` bedeutet Negation. Also wenn eine Aussage `(A : Prop)` wahr ist, dann ist `¬A` falsch, und umgekehrt.
|
**Robo** Dieses Zeichen `¬` bedeutet Negation. Also wenn eine Aussage `(A : Prop)` wahr ist, dann ist `¬A` falsch, und umgekehrt.
|
||||||
|
|
||||||
**Du** Und `False` ist wahrscheinlich die Aussage, die immer falsch ist?
|
**Du** Und `False` ist wahrscheinlich die Aussage, die immer falsch ist?
|
||||||
@@ -26,7 +21,10 @@ Hint
|
|||||||
**Du** Ist das jetzt nicht doch wieder trivial?
|
**Du** Ist das jetzt nicht doch wieder trivial?
|
||||||
|
|
||||||
**Robo** Probier mal!
|
**Robo** Probier mal!
|
||||||
"
|
" :
|
||||||
|
¬False := by
|
||||||
|
trivial
|
||||||
|
|
||||||
|
|
||||||
Conclusion
|
Conclusion
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ Zeige, dass daraus $A$ folgt."
|
|||||||
(A : Prop) (h : False) : A := by
|
(A : Prop) (h : False) : A := by
|
||||||
contradiction
|
contradiction
|
||||||
|
|
||||||
Hint
|
Hint (A : Prop) (h : False) : A =>
|
||||||
"
|
"
|
||||||
**Du** Wenn ich das jetzt richtig lese, ist `A` eine Aussage, und wir haben außerdem eine Annahme names `h`, die besagt …
|
**Du** Wenn ich das jetzt richtig lese, ist `A` eine Aussage, und wir haben außerdem eine Annahme names `h`, die besagt …
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ Hint
|
|||||||
**Robo** Ich glaube, Du musst ihn darauf hinweisen, dass zwischen der allgemeingültigen Annahme `True` und seiner Annahme `False` ein Widerspruch besteht. Probier mal `contradiction`.
|
**Robo** Ich glaube, Du musst ihn darauf hinweisen, dass zwischen der allgemeingültigen Annahme `True` und seiner Annahme `False` ein Widerspruch besteht. Probier mal `contradiction`.
|
||||||
"
|
"
|
||||||
|
|
||||||
Conlusion
|
Conclusion
|
||||||
"Der erste Querulant ist offenbar zufrieden.
|
"Der erste Querulant ist offenbar zufrieden.
|
||||||
|
|
||||||
**Du** War das jetzt ein Widerspruchsbeweis?
|
**Du** War das jetzt ein Widerspruchsbeweis?
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ Introduction
|
|||||||
Auftritt zweiter Querulant.
|
Auftritt zweiter Querulant.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement ""
|
||||||
(n : ℕ) (h : n ≠ n) : n = 37 := by
|
(n : ℕ) (h : n ≠ n) : n = 37 := by
|
||||||
contradiction
|
contradiction
|
||||||
|
|
||||||
Hint
|
Hint (n : ℕ) (h : n ≠ n) : n = 37 =>
|
||||||
"
|
"
|
||||||
**Du** Ist `n ≠ n` nicht auch ein Widerspruch?
|
**Du** Ist `n ≠ n` nicht auch ein Widerspruch?
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,11 @@ Introduction
|
|||||||
Auftritt dritter Querulant.
|
Auftritt dritter Querulant.
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement ""
|
||||||
(n : ℕ) (h : n = 10) (g : (n ≠ 10)) : n = 42 := by
|
(n : ℕ) (h : n = 10) (g : (n ≠ 10)) : n = 42 := by
|
||||||
contradiction
|
contradiction
|
||||||
|
|
||||||
Hint
|
Hint (n : ℕ) (h : n = 10) (g : (n ≠ 10)) : n = 42 =>
|
||||||
"
|
"
|
||||||
**Du** Wieder ein Widerspruch in den Annahmen?
|
**Du** Wieder ein Widerspruch in den Annahmen?
|
||||||
"
|
"
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Statement "" (A B : Prop) (hA : A) (hB : B) : A ∧ B := by
|
|||||||
assumption
|
assumption
|
||||||
assumption
|
assumption
|
||||||
|
|
||||||
Hint
|
Hint (A B : Prop) (hA : A) (hB : B) : A ∧ B =>
|
||||||
"
|
"
|
||||||
**Du**: Also, wir haben zwei Annahmen: `A` gilt, und `B` gilt. Auch. Und beweisen sollen wir … `A und B` gilt. Ich glaube, diese Formalospinner treiben mich noch zur Verzweiflung. Kann ich nicht wieder `trivial` sagen?
|
**Du**: Also, wir haben zwei Annahmen: `A` gilt, und `B` gilt. Auch. Und beweisen sollen wir … `A und B` gilt. Ich glaube, diese Formalospinner treiben mich noch zur Verzweiflung. Kann ich nicht wieder `trivial` sagen?
|
||||||
|
|
||||||
|
|||||||
@@ -14,13 +14,7 @@ Introduction
|
|||||||
Langsam wird die Schlange kürzer. Die nächste Formalosophin hat folgendes Anliegen:
|
Langsam wird die Schlange kürzer. Die nächste Formalosophin hat folgendes Anliegen:
|
||||||
"
|
"
|
||||||
|
|
||||||
Statement
|
Statement "
|
||||||
(A B C : Prop) (h : A ∧ (B ∧ C)) : B := by
|
|
||||||
rcases h with ⟨_, ⟨g , _⟩⟩
|
|
||||||
assumption
|
|
||||||
|
|
||||||
Hint
|
|
||||||
"
|
|
||||||
**Du** Jetzt müssen wir wohl die Annahme de-konstruieren.
|
**Du** Jetzt müssen wir wohl die Annahme de-konstruieren.
|
||||||
|
|
||||||
**Robo** Ja, genau. Das geht am einfachsten mit `rcases h with ⟨h₁, h₂⟩`.
|
**Robo** Ja, genau. Das geht am einfachsten mit `rcases h with ⟨h₁, h₂⟩`.
|
||||||
@@ -30,6 +24,9 @@ Hint
|
|||||||
**Robo** Die bleiden Klammern schreibst Du als `\\<` und `\\>`, oder gleichzeitig als `\\<>`.
|
**Robo** Die bleiden Klammern schreibst Du als `\\<` und `\\>`, oder gleichzeitig als `\\<>`.
|
||||||
Und h₁ schreibst Du einfach als `h\\1`. Aber Du kannst Dir auch einfach andere Namen für `h₁` und `h₂`, zum Beispiel `rcases h with ⟨hA, hBC⟩`
|
Und h₁ schreibst Du einfach als `h\\1`. Aber Du kannst Dir auch einfach andere Namen für `h₁` und `h₂`, zum Beispiel `rcases h with ⟨hA, hBC⟩`
|
||||||
"
|
"
|
||||||
|
(A B C : Prop) (h : A ∧ (B ∧ C)) : B := by
|
||||||
|
rcases h with ⟨_, ⟨g , _⟩⟩
|
||||||
|
assumption
|
||||||
|
|
||||||
Hint (A B C : Prop) (hA : A) (hAB : B ∧ C) : B =>
|
Hint (A B C : Prop) (hA : A) (hAB : B ∧ C) : B =>
|
||||||
"
|
"
|
||||||
@@ -48,4 +45,3 @@ Conclusion
|
|||||||
|
|
||||||
NewTactics rcases
|
NewTactics rcases
|
||||||
DisabledTactics tauto
|
DisabledTactics tauto
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Statement
|
|||||||
left
|
left
|
||||||
assumption
|
assumption
|
||||||
|
|
||||||
Hint
|
Hint (A B : Prop) (hA : A) : A ∨ (¬ B) =>
|
||||||
"
|
"
|
||||||
**Du** Muss ich jetzt wieder das Beweisziel de-konstruieren?
|
**Du** Muss ich jetzt wieder das Beweisziel de-konstruieren?
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ Statement
|
|||||||
rcases h with ⟨h₁, h₂⟩
|
rcases h with ⟨h₁, h₂⟩
|
||||||
assumption
|
assumption
|
||||||
|
|
||||||
Hint
|
Hint (A B : Prop) (h : A ∨ (A ∧ B)) : A =>
|
||||||
"
|
"
|
||||||
**Du** Ja klar, erst ein Und im Ziel, dann ein Und in der Annahme, dann ein Oder im Ziel, und jetzt noch ein Oder in der Annahme. Ich glaube den ganzen Circus hier langsam nicht mehr. Die haben sich doch abgesprochen!
|
**Du** Ja klar, erst ein Und im Ziel, dann ein Und in der Annahme, dann ein Oder im Ziel, und jetzt noch ein Oder in der Annahme. Ich glaube den ganzen Circus hier langsam nicht mehr. Die haben sich doch abgesprochen!
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Der letzte Untertan tritt vor. Ihr Anliegen ist etwas komplizierter als die vor
|
|||||||
|
|
||||||
-- Note: The other direction would need arguing by cases.
|
-- Note: The other direction would need arguing by cases.
|
||||||
|
|
||||||
Statement
|
Statement ""
|
||||||
(A B C : Prop) (h : A ∨ (B ∧ C)) : (A ∨ B) ∧ (A ∨ C) := by
|
(A B C : Prop) (h : A ∨ (B ∧ C)) : (A ∨ B) ∧ (A ∨ C) := by
|
||||||
constructor
|
constructor
|
||||||
rcases h with h | h
|
rcases h with h | h
|
||||||
@@ -33,7 +33,7 @@ Statement
|
|||||||
right
|
right
|
||||||
assumption
|
assumption
|
||||||
|
|
||||||
Hint
|
Hint (A B C : Prop) (h : A ∨ (B ∧ C)) : (A ∨ B) ∧ (A ∨ C) =>
|
||||||
"
|
"
|
||||||
**Robo** Wirf einfach alles drauf, was Du gelernt hast. Hier, ich bin sogar so nett und zeig Dir noch einmal die beiden vier wichtigsten Taktiken für diese Situation an.
|
**Robo** Wirf einfach alles drauf, was Du gelernt hast. Hier, ich bin sogar so nett und zeig Dir noch einmal die beiden vier wichtigsten Taktiken für diese Situation an.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user