import TestGame.Metadata import Mathlib set_option tactic.hygienic false Game "TestGame" World "Function" Level 6 Title "" Introduction " Sofort hackt die ältere Gestalt nach: " open Set Function example (f : ℤ → ℤ) (h : StrictMono f) : Injective f := by apply StrictMono.injective assumption -- Odd.strictMono_pow Statement "" : Injective (fun (n : ℤ) ↦ n^3 + (n + 3)) := by apply StrictMono.injective apply StrictMono.add apply Odd.strictMono_pow trivial intro a b simp NewDefinitions Injective NewLemmas StrictMono.injective StrictMono.add Odd.strictMono_pow Hint : Injective fun (n : ℤ) => n ^ 3 + (n + 3) => "**Du**: Hmm, das ist etwas schwieriger… **Robo**: Aber ich hab einen Trick auf Lager: Das Lemma `StrictMono.injective` sagt, dass jede strikt monotone Funktion injektive ist, und ich habe das Gefühl Monotonie ist hier einfacher zu zeigen." HiddenHint : Injective fun (n : ℤ) => n ^ 3 + (n + 3) => "**Robo**: `apply` ist wonach du suchst." Hint : StrictMono fun (n : ℤ) => n ^ 3 + (n + 3) => "**Du**: Jetzt möchte ich strikte Monotonie von `n ^ 3` und `n + 3` separat zeigen, schliesslich scheint es mir als wär das zweite wieder einfach. **Robo**: Dafür hab ich `StrictMono.add` bereit!" Hint : StrictMono fun (x : ℤ) => x ^ 3 => "**Du**: Hmm, darauf hab ich jetzt wenig Lust. Gibt's dafür auch was? Das gilt ja nur wenn der Exponent ungerade ist. **Robo**: Du könntest mal `Odd.strictMono_pow` versuchen…" HiddenHint : Odd 3 => "**Du**: Ist das nicht ne Trivialität? Warte mal!" Hint : StrictMono fun (x : ℤ) => x + 3 => "**Du**: Ha! Und dieser Teil funktioniert sicher gleich wie Injektivität vorhin!" Hint (a b : ℤ) : a ^ 3 + (a + 3) = b ^ 3 + (b + 3) → a = b => "**Robo**: Ich glaube, dieser Weg ist zu steinig. Fang doch nochmals von vorne an! " Hint (a b : ℤ) (h : a ^ 3 + (a + 3) = b ^ 3 + (b + 3)) : a = b => "**Robo**: Ich glaube, dieser Weg ist zu steinig. Fang doch nochmals von vorne an! " Conclusion "**Du**: Danke vielmals! Und ihr läst das Wesen mit im Gang stehen weiter über Injectivität nachdenkend."