Module docstring
{"# Opposites of groups with zero "}
{"# Opposites of groups with zero "}
MulOpposite.instMulZeroClass
instance
[MulZeroClass α] : MulZeroClass αᵐᵒᵖ
instance instMulZeroClass [MulZeroClass α] : MulZeroClass αᵐᵒᵖ where
zero_mul _ := unop_injective <| mul_zero _
mul_zero _ := unop_injective <| zero_mul _
MulOpposite.instMulZeroOneClass
instance
[MulZeroOneClass α] : MulZeroOneClass αᵐᵒᵖ
instance instMulZeroOneClass [MulZeroOneClass α] : MulZeroOneClass αᵐᵒᵖ where
__ := instMulOneClass
__ := instMulZeroClass
MulOpposite.instSemigroupWithZero
instance
[SemigroupWithZero α] : SemigroupWithZero αᵐᵒᵖ
instance instSemigroupWithZero [SemigroupWithZero α] : SemigroupWithZero αᵐᵒᵖ where
__ := instSemigroup
__ := instMulZeroClass
MulOpposite.instMonoidWithZero
instance
[MonoidWithZero α] : MonoidWithZero αᵐᵒᵖ
instance instMonoidWithZero [MonoidWithZero α] : MonoidWithZero αᵐᵒᵖ where
__ := instMonoid
__ := instMulZeroOneClass
MulOpposite.instGroupWithZero
instance
[GroupWithZero α] : GroupWithZero αᵐᵒᵖ
instance instGroupWithZero [GroupWithZero α] : GroupWithZero αᵐᵒᵖ where
__ := instMonoidWithZero
__ := instNontrivial
__ := instDivInvMonoid
mul_inv_cancel _ hx := unop_injective <| inv_mul_cancel₀ <| unop_injective.ne hx
inv_zero := unop_injective inv_zero
MulOpposite.instNoZeroDivisors
instance
[Zero α] [Mul α] [NoZeroDivisors α] : NoZeroDivisors αᵐᵒᵖ
instance instNoZeroDivisors [Zero α] [Mul α] [NoZeroDivisors α] : NoZeroDivisors αᵐᵒᵖ where
eq_zero_or_eq_zero_of_mul_eq_zero (H : op (_ * _) = op (0 : α)) :=
Or.casesOn (eq_zero_or_eq_zero_of_mul_eq_zero <| op_injective H)
(fun hy => Or.inr <| unop_injective <| hy) fun hx => Or.inl <| unop_injective <| hx
AddOpposite.instMulZeroClass
instance
[MulZeroClass α] : MulZeroClass αᵃᵒᵖ
instance instMulZeroClass [MulZeroClass α] : MulZeroClass αᵃᵒᵖ where
zero_mul _ := unop_injective <| zero_mul _
mul_zero _ := unop_injective <| mul_zero _
AddOpposite.instMulZeroOneClass
instance
[MulZeroOneClass α] : MulZeroOneClass αᵃᵒᵖ
instance instMulZeroOneClass [MulZeroOneClass α] : MulZeroOneClass αᵃᵒᵖ where
__ := instMulOneClass
__ := instMulZeroClass
AddOpposite.instSemigroupWithZero
instance
[SemigroupWithZero α] : SemigroupWithZero αᵃᵒᵖ
instance instSemigroupWithZero [SemigroupWithZero α] : SemigroupWithZero αᵃᵒᵖ where
__ := instSemigroup
__ := instMulZeroClass
AddOpposite.instMonoidWithZero
instance
[MonoidWithZero α] : MonoidWithZero αᵃᵒᵖ
instance instMonoidWithZero [MonoidWithZero α] : MonoidWithZero αᵃᵒᵖ where
__ := instMonoid
__ := instMulZeroOneClass
AddOpposite.instNoZeroDivisors
instance
[Zero α] [Mul α] [NoZeroDivisors α] : NoZeroDivisors αᵃᵒᵖ
instance instNoZeroDivisors [Zero α] [Mul α] [NoZeroDivisors α] : NoZeroDivisors αᵃᵒᵖ where
eq_zero_or_eq_zero_of_mul_eq_zero (H : op (_ * _) = op (0 : α)) :=
Or.imp (fun hx => unop_injective hx) (fun hy => unop_injective hy)
(@eq_zero_or_eq_zero_of_mul_eq_zero α _ _ _ _ _ <| op_injective H)
AddOpposite.instGroupWithZero
instance
[GroupWithZero α] : GroupWithZero αᵃᵒᵖ
instance instGroupWithZero [GroupWithZero α] : GroupWithZero αᵃᵒᵖ where
__ := instMonoidWithZero
__ := instNontrivial
__ := instDivInvMonoid
mul_inv_cancel _ hx := unop_injective <| mul_inv_cancel₀ <| unop_injective.ne hx
inv_zero := unop_injective inv_zero