File: Mathlib/Algebra/Group/Even.lean

full_name: Even
code: /-- An element `a` of a type `α` with multiplication satisfies `IsSquare a` if `a = r * r`,
for some `r : α`. -/
@[to_additive "An element `a` of a type `α` with addition satisfies `Even a` if `a = r + r`,
for some `r : α`."]
def IsSquare (a : α) : Prop 
goal: Prop

full_name: IsSquare
code: /-- An element `a` of a type `α` with multiplication satisfies `IsSquare a` if `a = r * r`,
for some `r : α`. -/
@[to_additive "An element `a` of a type `α` with addition satisfies `Even a` if `a = r + r`,
for some `r : α`."]
def IsSquare (a : α) : Prop 
goal: Prop

full_name: even_add_self
code: @[to_additive (attr := simp)] lemma isSquare_mul_self (m : α) : IsSquare (m * m) 
goal: Even (m + m)

full_name: isSquare_mul_self
code: @[to_additive (attr := simp)] lemma isSquare_mul_self (m : α) : IsSquare (m * m) 
goal: IsSquare (m * m)

full_name: isSquare_op_iff
code: @[to_additive]
lemma isSquare_op_iff {a : α} : IsSquare (op a) ↔ IsSquare a 
goal: IsSquare (MulOpposite.op a) ↔ IsSquare a

full_name: even_op_iff
code: @[to_additive]
lemma isSquare_op_iff {a : α} : IsSquare (op a) ↔ IsSquare a 
goal: Even (AddOpposite.op a) ↔ Even a

full_name: isSquare_unop_iff
code: @[to_additive]
lemma isSquare_unop_iff {a : αᵐᵒᵖ} : IsSquare (unop a) ↔ IsSquare a 
goal: IsSquare (MulOpposite.unop a) ↔ IsSquare a

full_name: even_unop_iff
code: @[to_additive]
lemma isSquare_unop_iff {a : αᵐᵒᵖ} : IsSquare (unop a) ↔ IsSquare a 
goal: Even (AddOpposite.unop a) ↔ Even a

full_name: instDecidablePredAddOppositeEven
code: @[to_additive]
instance [DecidablePred (IsSquare : α → Prop)] : DecidablePred (IsSquare : αᵐᵒᵖ → Prop) 
goal: DecidablePred Even

full_name: instDecidablePredMulOppositeIsSquare
code: @[to_additive]
instance [DecidablePred (IsSquare : α → Prop)] : DecidablePred (IsSquare : αᵐᵒᵖ → Prop) 
goal: DecidablePred IsSquare

full_name: even_ofMul_iff
code: @[simp]
lemma even_ofMul_iff {a : α} : Even (Additive.ofMul a) ↔ IsSquare a 
goal: Even (Additive.ofMul a) ↔ IsSquare a

full_name: isSquare_toMul_iff
code: @[simp]
lemma isSquare_toMul_iff {a : Additive α} : IsSquare (Additive.toMul a) ↔ Even a 
goal: IsSquare (Additive.toMul a) ↔ Even a

full_name: Additive.instDecidablePredEven
code: instance Additive.instDecidablePredEven [DecidablePred (IsSquare : α → Prop)] :
    DecidablePred (Even : Additive α → Prop) 
goal: DecidablePred Even

full_name: isSquare_ofAdd_iff
code: @[simp] lemma isSquare_ofAdd_iff {a : α} : IsSquare (Multiplicative.ofAdd a) ↔ Even a 
goal: IsSquare (Multiplicative.ofAdd a) ↔ Even a

full_name: even_toAdd_iff
code: @[simp]
lemma even_toAdd_iff {a : Multiplicative α} : Even (Multiplicative.toAdd a) ↔ IsSquare a 
goal: Even (Multiplicative.toAdd a) ↔ IsSquare a

full_name: Multiplicative.instDecidablePredIsSquare
code: instance Multiplicative.instDecidablePredIsSquare [DecidablePred (Even : α → Prop)] :
    DecidablePred (IsSquare : Multiplicative α → Prop) 
goal: DecidablePred IsSquare

full_name: even_zero
code: @[to_additive (attr := simp)]
lemma isSquare_one [MulOneClass α] : IsSquare (1 : α) 
goal: Even 0

full_name: isSquare_one
code: @[to_additive (attr := simp)]
lemma isSquare_one [MulOneClass α] : IsSquare (1 : α) 
goal: IsSquare 1

full_name: IsSquare.map
code: @[to_additive]
lemma IsSquare.map [MulOneClass α] [MulOneClass β] [FunLike F α β] [MonoidHomClass F α β]
    {m : α} (f : F) :
    IsSquare m → IsSquare (f m) 
goal: IsSquare m → IsSquare (f m)

full_name: Even.map
code: @[to_additive]
lemma IsSquare.map [MulOneClass α] [MulOneClass β] [FunLike F α β] [MonoidHomClass F α β]
    {m : α} (f : F) :
    IsSquare m → IsSquare (f m) 
goal: Even m → Even (f m)

full_name: even_iff_exists_two_nsmul
code: @[to_additive even_iff_exists_two_nsmul]
lemma isSquare_iff_exists_sq (m : α) : IsSquare m ↔ ∃ c, m = c ^ 2 
goal: Even m ↔ ∃ c, m = 2 • c

full_name: isSquare_iff_exists_sq
code: @[to_additive even_iff_exists_two_nsmul]
lemma isSquare_iff_exists_sq (m : α) : IsSquare m ↔ ∃ c, m = c ^ 2 
goal: IsSquare m ↔ ∃ c, m = c ^ 2

full_name: IsSquare.pow
code: @[to_additive] lemma IsSquare.pow (n : ℕ) : IsSquare a → IsSquare (a ^ n) 
goal: IsSquare a → IsSquare (a ^ n)

full_name: Even.nsmul
code: @[to_additive] lemma IsSquare.pow (n : ℕ) : IsSquare a → IsSquare (a ^ n) 
goal: Even a → Even (n • a)

full_name: Even.isSquare_pow
code: @[to_additive Even.nsmul'] lemma Even.isSquare_pow : Even n → ∀ a : α, IsSquare (a ^ n) 
goal: Even n → ∀ (a : α), IsSquare (a ^ n)

full_name: Even.nsmul'
code: @[to_additive Even.nsmul'] lemma Even.isSquare_pow : Even n → ∀ a : α, IsSquare (a ^ n) 
goal: Even n → ∀ (a : α), Even (n • a)

full_name: IsSquare_sq
code: @[to_additive even_two_nsmul] lemma IsSquare_sq (a : α) : IsSquare (a ^ 2) 
goal: IsSquare (a ^ 2)

full_name: even_two_nsmul
code: @[to_additive even_two_nsmul] lemma IsSquare_sq (a : α) : IsSquare (a ^ 2) 
goal: Even (2 • a)

full_name: Even.add
code: @[to_additive]
lemma IsSquare.mul [CommSemigroup α] {a b : α} : IsSquare a → IsSquare b → IsSquare (a * b) 
goal: Even a → Even b → Even (a + b)

full_name: IsSquare.mul
code: @[to_additive]
lemma IsSquare.mul [CommSemigroup α] {a b : α} : IsSquare a → IsSquare b → IsSquare (a * b) 
goal: IsSquare a → IsSquare b → IsSquare (a * b)

full_name: even_neg
code: @[to_additive (attr := simp)] lemma isSquare_inv : IsSquare a⁻¹ ↔ IsSquare a 
goal: Even (-a) ↔ Even a

full_name: isSquare_inv
code: @[to_additive (attr := simp)] lemma isSquare_inv : IsSquare a⁻¹ ↔ IsSquare a 
goal: IsSquare a⁻¹ ↔ IsSquare a

full_name: IsSquare.zpow
code: @[to_additive] lemma IsSquare.zpow (n : ℤ) : IsSquare a → IsSquare (a ^ n) 
goal: IsSquare a → IsSquare (a ^ n)

full_name: Even.zsmul
code: @[to_additive] lemma IsSquare.zpow (n : ℤ) : IsSquare a → IsSquare (a ^ n) 
goal: Even a → Even (n • a)

full_name: Even.sub
code: @[to_additive]
lemma IsSquare.div [DivisionCommMonoid α] {a b : α} (ha : IsSquare a) (hb : IsSquare b) :
    IsSquare (a / b) 
goal: Even (a - b)

full_name: IsSquare.div
code: @[to_additive]
lemma IsSquare.div [DivisionCommMonoid α] {a b : α} (ha : IsSquare a) (hb : IsSquare b) :
    IsSquare (a / b) 
goal: IsSquare (a / b)

full_name: Even.zsmul'
code: @[to_additive (attr := simp) Even.zsmul']
lemma Even.isSquare_zpow [Group α] {n : ℤ} : Even n → ∀ a : α, IsSquare (a ^ n) 
goal: Even n → ∀ (a : α), Even (n • a)

full_name: Even.isSquare_zpow
code: @[to_additive (attr := simp) Even.zsmul']
lemma Even.isSquare_zpow [Group α] {n : ℤ} : Even n → ∀ a : α, IsSquare (a ^ n) 
goal: Even n → ∀ (a : α), IsSquare (a ^ n)