remove old Hint statements

pull/68/head
Jon Eugster 2 years ago
parent db7a84c570
commit 26239d6687

@ -84,94 +84,94 @@ NewTactic funext by_cases simp_rw linarith
NewLemma not_le if_pos if_neg NewLemma not_le if_pos if_neg
LemmaTab "Logic" LemmaTab "Logic"
-- TODO : This does not trigger. -- -- TODO : This does not trigger.
-- TODO: These 5 hints should be mutually exclusive. i.e. they should not trigger -- -- TODO: These 5 hints should be mutually exclusive. i.e. they should not trigger
-- if a assumption is missing. -- -- if a assumption is missing.
Hint (x : ) : (f ∘ g) x = (g ∘ f) x => "" -- Hint (x : ) : (f ∘ g) x = (g ∘ f) x => ""
Hint (x : ) (h : 0 ≤ x) : f (g x) = g (f x) => -- Hint (x : ) (h : 0 ≤ x) : f (g x) = g (f x) =>
" -- "
" -- "
Hint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (g x) = g (f x) => -- Hint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (g x) = g (f x) =>
" -- "
**Du**: Mit den beiden Annahmen sagt die Definition von `g` ja z.B. -- **Du**: Mit den beiden Annahmen sagt die Definition von `g` ja z.B.
`(if 0 ≤ x then _)` wobei ich weiss dass `0 ≤ x` wahr ist, -- `(if 0 ≤ x then _)` wobei ich weiss dass `0 ≤ x` wahr ist,
kann ich das dann einfach vereinfachen? -- kann ich das dann einfach vereinfachen?
**Robo**: Dafür must du zuerst die Definition von `g` öffnen, also `unfold`. Und dann mit -- **Robo**: Dafür must du zuerst die Definition von `g` öffnen, also `unfold`. Und dann mit
dem Lemma `if_pos {h}` das umschreiben. -- dem Lemma `if_pos {h}` das umschreiben.
" -- "
Hint (x : ) (h : ¬ 0 ≤ x) : f (g x) = g (f x) => -- Hint (x : ) (h : ¬ 0 ≤ x) : f (g x) = g (f x) =>
" -- "
**Du**: Ich sehe, das ist jetzt der zweite Fall, da brauch ich sicher wieder eine zweite Annahme -- **Du**: Ich sehe, das ist jetzt der zweite Fall, da brauch ich sicher wieder eine zweite Annahme
`¬(0 ≤ f x)`… -- `¬(0 ≤ f x)`…
" -- "
Hint (x : ) (h : ¬ 0 ≤ x) (h₂ : ¬ 0 ≤ f x) : f (g x) = g (f x) => -- Hint (x : ) (h : ¬ 0 ≤ x) (h₂ : ¬ 0 ≤ f x) : f (g x) = g (f x) =>
" -- "
**Robo**: Jetzt ist der Zeitpunkt wo die Definition von `g` geöffnet sein sollte. -- **Robo**: Jetzt ist der Zeitpunkt wo die Definition von `g` geöffnet sein sollte.
**Robo**: Wenn man ein If-Statement mit wahrer Prämisse mit `if_pos` vereinfacht, dann -- **Robo**: Wenn man ein If-Statement mit wahrer Prämisse mit `if_pos` vereinfacht, dann
braucht man für eine falsche Prämisse… -- braucht man für eine falsche Prämisse…
**Du**: `if_neg`? -- **Du**: `if_neg`?
" -- "
-- END TODO -- -- END TODO
HiddenHint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (2 * x) = g (f x) => -- HiddenHint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (2 * x) = g (f x) =>
" -- "
**Robo**: Jetzt das Gleiche noch mit `if_pos {h₂}`. -- **Robo**: Jetzt das Gleiche noch mit `if_pos {h₂}`.
" -- "
HiddenHint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (g x) = 2 * f x => -- HiddenHint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (g x) = 2 * f x =>
" -- "
**Robo**: Jetzt das Gleiche noch mit `if_pos {h}`. -- **Robo**: Jetzt das Gleiche noch mit `if_pos {h}`.
" -- "
Hint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (2 * x) = 2 * f x => -- Hint (x : ) (h : 0 ≤ x) (h₂ : 0 ≤ f x) : f (2 * x) = 2 * f x =>
" -- "
**Robo**: Wenn du jetzt noch die Definition von `f` öffnest, dann kann `ring` den -- **Robo**: Wenn du jetzt noch die Definition von `f` öffnest, dann kann `ring` den
Rest ausrechnen. -- Rest ausrechnen.
" -- "
-- TODO: This are also showing in the case of the Hint below -- -- TODO: This are also showing in the case of the Hint below
-- Proof of `0 ≤ f x`. -- -- Proof of `0 ≤ f x`.
Hint (x : ) (h : 0 ≤ x) : 0 ≤ f x => -- Hint (x : ) (h : 0 ≤ x) : 0 ≤ f x =>
" **Robo**: Wenn du die Definition von `f` öffnest, dann hast du schon das wissen, -- " **Robo**: Wenn du die Definition von `f` öffnest, dann hast du schon das wissen,
um das zu beweisen." -- um das zu beweisen."
HiddenHint (x : ) (h : 0 ≤ x) : 0 ≤ f x => -- HiddenHint (x : ) (h : 0 ≤ x) : 0 ≤ f x =>
"**Du** *(in Gedanken)*: Was war das nochmals... Ungleichungen... `linarith`!" -- "**Du** *(in Gedanken)*: Was war das nochmals... Ungleichungen... `linarith`!"
HiddenHint (x : ) (h : ¬0 ≤ x) : ¬ 0 ≤ f x => -- HiddenHint (x : ) (h : ¬0 ≤ x) : ¬ 0 ≤ f x =>
" **Robo**: Das ist das selbe wie vorhin…" -- " **Robo**: Das ist das selbe wie vorhin…"
-- Hint for modifying `h` wrongly. -- -- Hint for modifying `h` wrongly.
Hint (x : ) (h : x < 0) : f (g x) = g (f x) => -- Hint (x : ) (h : x < 0) : f (g x) = g (f x) =>
" -- "
**Robo**: Das war nicht so ideal, hier brauchst du die Annahme in der Form `({h} : ¬ 0 ≤ {x})`! -- **Robo**: Das war nicht so ideal, hier brauchst du die Annahme in der Form `({h} : ¬ 0 ≤ {x})`!
" -- "
-- TODO: In this case we get to see the Hints above -- -- TODO: In this case we get to see the Hints above
Hint (x : ) (h : 0 ≤ x) : 0 ≤ x => -- Hint (x : ) (h : 0 ≤ x) : 0 ≤ x =>
"**Robo**: Dieses Goal ist entstanden, als du `rw [if_pos]` anstatt `rw [if_pos {h}]` -- "**Robo**: Dieses Goal ist entstanden, als du `rw [if_pos]` anstatt `rw [if_pos {h}]`
geschrieben hast." -- geschrieben hast."
Hint (x : ) (h : 0 ≤ f x) : 0 ≤ f x => -- Hint (x : ) (h : 0 ≤ f x) : 0 ≤ f x =>
"**Robo**: Dieses Goal ist entstanden, als du `rw [if_pos]` anstatt `rw [if_pos {h}]` -- "**Robo**: Dieses Goal ist entstanden, als du `rw [if_pos]` anstatt `rw [if_pos {h}]`
geschrieben hast." -- geschrieben hast."
Hint (x : ) (h : ¬ 0 ≤ x) : ¬ 0 ≤ x => -- Hint (x : ) (h : ¬ 0 ≤ x) : ¬ 0 ≤ x =>
"**Robo**: Dieses Goal ist entstanden, als du `rw [if_neg]` anstatt `rw [if_neg {h}]` -- "**Robo**: Dieses Goal ist entstanden, als du `rw [if_neg]` anstatt `rw [if_neg {h}]`
geschrieben hast." -- geschrieben hast."
Hint (x : ) (h : ¬ 0 ≤ f x) : ¬ 0 ≤ f x => -- Hint (x : ) (h : ¬ 0 ≤ f x) : ¬ 0 ≤ f x =>
"**Robo**: Dieses Goal ist entstanden, als du `rw [if_neg]` anstatt `rw [if_neg {h}]` -- "**Robo**: Dieses Goal ist entstanden, als du `rw [if_neg]` anstatt `rw [if_neg {h}]`
geschrieben hast." -- geschrieben hast."
Conclusion Conclusion
"Zufrieden tauschen die beiden Wächter ihren Platz und geben so dabei den "Zufrieden tauschen die beiden Wächter ihren Platz und geben so dabei den

Loading…
Cancel
Save