import GameServer.Commands /-! ## Definitions -/ DefinitionDoc Even as "Even" " `even n` ist definiert als `∃ r, a = 2 * r`. Die Definition kann man mit `unfold even at *` einsetzen. ## Eigenschaften * Mathlib Doc: [#Even](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Parity.html#Even)" DefinitionDoc Odd as "Odd" " `odd n` ist definiert als `∃ r, a = 2 * r + 1`. Die Definition kann man mit `unfold odd at *` einsetzen. * Mathlib Doc: [Odd](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Algebra/Parity.html#Odd)" DefinitionDoc Injective as "Injective" " `Injective f` ist definiert als ``` ∀ a b, f a = f b → a = b ``` definiert. * Mathlib Doc: [Injective](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Init/Function.html#Function.Injective)" DefinitionDoc Surjective as "Surjective" " `Surjective f` ist definiert als ``` ∀ a, (∃ b, f a = b) ``` * Mathlib Doc: [Surjective](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Init/Function.html#Function.Surjective)" DefinitionDoc Bijective as "Bijective" " ## Eigenschaften * Mathlib Doc: [#Bijective](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Init/Function.html#Function.Bijective) " DefinitionDoc LeftInverse as "LeftInverse" " ## Eigenschaften * Mathlib Doc: [#LeftInverse](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Init/Function.html#Function.LeftInverse) " DefinitionDoc RightInverse as "RightInverse" " ## Eigenschaften * Mathlib Doc: [#RightInverse](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Init/Logic.html#RightInverse) " DefinitionDoc StrictMono as "StrictMono" " `StrictMono f` ist definiert als ``` ∀ a b, a < b → f a < f b ``` ## Eigenschaften * Mathlib Doc: [#StrictMono](https://leanprover-community.github.io/mathlib4_docs/Mathlib/Order/Monotone/Basic.html#StrictMono) " DefinitionDoc Disjoint as "Disjoint" " " DefinitionDoc Set.preimage as "preimage" " " DefinitionDoc Set.Nonempty as "Nonempty" " `A.Nonemty` ist als `∃ x, x ∈ A` definiert. " DefinitionDoc Symbol.Subset as "⊆" " Auf Mengen (`Set`) ist `A ⊆ B` als `∀x, x ∈ A → x ∈ B` implementiert. Im goal kann man direkt `intro x hx` machen, in einer Annahme, kann man mit `rcases` loslegen. Alternativ kann man mit `rw[Set.subset_def]` die Definition explizit einsetzen. " DefinitionDoc Symbol.function as "fun x => _" " Anonyme funktionen kann man mit `fun (x : ℤ) => 2 * x` definieren und wie andere Objekte verwenden. Note: `=>` wird in mathlib oft auch `↦` (`\\maps`) geschrieben. " DefinitionDoc Inhabited as "Inhabited" " `Inhabited U` ist eine Instanz, die aussagt, dass `U` mindestens ein Element enthält. Hat man eine solche Instanz, kann man immer das Element `(default : U)` verwenden. Was `default` genau ist hängt davon ab, wie `Inhabited U` bewiesen wurde. Es könnte also alles sein und man sollte sich nicht darauf verlassen, dass `default` eine bestimmte Eigenschaft hat. Z.B. ist `(default : ℕ) = 0` aber es hätte genau so gut als `1` oder `2` definiert werden können. "