Squares and even elements #
This file defines square and even elements in a monoid.
Main declarations #
IsSquare ameans that there is somersuch thata = r * rEven ameans that there is somersuch thata = r + r
Note #
- Many lemmas about
Even/IsSquare, including importantsimplemmas, are inMathlib/Algebra/Ring/Parity.lean.
TODO #
- Try to generalize
IsSquare/Evenlemmas further. For example, there are still a few lemmas inAlgebra.Ring.ParitywhoseSemiringassumptions I (DT) am not convinced are necessary. - The "old" definition of
Even aasked for the existence of an elementcsuch thata = 2 * c. For this reason, several fixes introduce an extratwo_mulor← two_mul. It might be the case that by making a careful choice ofsimplemma, this can be avoided.
See also #
Mathlib/Algebra/Ring/Parity.lean for the definition of odd elements as well as facts about
Even / IsSquare in rings.
@[instance_reducible]
Equations
@[instance_reducible]
Equations
@[simp]
@[simp]
@[instance_reducible]
Equations
- x✝.instDecidablePredEven = decidable_of_iff (IsSquare (Additive.toMul x✝)) ⋯
@[simp]
@[simp]
@[instance_reducible]
Equations
theorem IsSquare.map {F : Type u_1} {α : Type u_2} {β : Type u_3} [MulOneClass α] [MulOneClass β] [FunLike F α β] [MonoidHomClass F α β] {a : α} (f : F) :
theorem Even.map {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddZeroClass α] [AddZeroClass β] [FunLike F α β] [AddMonoidHomClass F α β] {a : α} (f : F) :
theorem isSquare_subset_image_isSquare {F : Type u_1} {α : Type u_2} {β : Type u_3} [MulOneClass α] [MulOneClass β] [FunLike F α β] [MonoidHomClass F α β] {f : F} (hf : Function.Surjective ⇑f) :
theorem even_subset_image_even {F : Type u_1} {α : Type u_2} {β : Type u_3} [AddZeroClass α] [AddZeroClass β] [FunLike F α β] [AddMonoidHomClass F α β] {f : F} (hf : Function.Surjective ⇑f) :
@[simp]
Alias of the reverse direction of isSquare_inv.
theorem IsSquare.div {α : Type u_2} [DivisionCommMonoid α] {a b : α} (ha : IsSquare a) (hb : IsSquare b) :