Lifting groups with zero along injective/surjective maps #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Pullback a mul_zero_class
instance along an injective function.
See note [reducible non-instances].
Equations
- function.injective.mul_zero_class f hf zero mul = {mul := has_mul.mul _inst_2, zero := 0, zero_mul := _, mul_zero := _}
Pushforward a mul_zero_class
instance along an surjective function.
See note [reducible non-instances].
Equations
- function.surjective.mul_zero_class f hf zero mul = {mul := has_mul.mul _inst_2, zero := 0, zero_mul := _, mul_zero := _}
Pushforward a no_zero_divisors
instance along an injective function.
Pullback a mul_zero_one_class
instance along an injective function.
See note [reducible non-instances].
Equations
- function.injective.mul_zero_one_class f hf zero one mul = {one := mul_one_class.one (function.injective.mul_one_class f hf one mul), mul := mul_zero_class.mul (function.injective.mul_zero_class f hf zero mul), one_mul := _, mul_one := _, zero := mul_zero_class.zero (function.injective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pushforward a mul_zero_one_class
instance along an surjective function.
See note [reducible non-instances].
Equations
- function.surjective.mul_zero_one_class f hf zero one mul = {one := mul_one_class.one (function.surjective.mul_one_class f hf one mul), mul := mul_zero_class.mul (function.surjective.mul_zero_class f hf zero mul), one_mul := _, mul_one := _, zero := mul_zero_class.zero (function.surjective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pullback a semigroup_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.semigroup_with_zero f hf zero mul = {mul := mul_zero_class.mul (function.injective.mul_zero_class f hf zero mul), mul_assoc := _, zero := mul_zero_class.zero (function.injective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pushforward a semigroup_with_zero
class along an surjective function.
See note [reducible non-instances].
Equations
- function.surjective.semigroup_with_zero f hf zero mul = {mul := mul_zero_class.mul (function.surjective.mul_zero_class f hf zero mul), mul_assoc := _, zero := mul_zero_class.zero (function.surjective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pullback a monoid_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.monoid_with_zero f hf zero one mul npow = {mul := monoid.mul (function.injective.monoid f hf one mul npow), mul_assoc := _, one := monoid.one (function.injective.monoid f hf one mul npow), one_mul := _, mul_one := _, npow := monoid.npow (function.injective.monoid f hf one mul npow), npow_zero' := _, npow_succ' := _, zero := mul_zero_class.zero (function.injective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pushforward a monoid_with_zero
class along a surjective function.
See note [reducible non-instances].
Equations
- function.surjective.monoid_with_zero f hf zero one mul npow = {mul := monoid.mul (function.surjective.monoid f hf one mul npow), mul_assoc := _, one := monoid.one (function.surjective.monoid f hf one mul npow), one_mul := _, mul_one := _, npow := monoid.npow (function.surjective.monoid f hf one mul npow), npow_zero' := _, npow_succ' := _, zero := mul_zero_class.zero (function.surjective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pullback a monoid_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.comm_monoid_with_zero f hf zero one mul npow = {mul := comm_monoid.mul (function.injective.comm_monoid f hf one mul npow), mul_assoc := _, one := comm_monoid.one (function.injective.comm_monoid f hf one mul npow), one_mul := _, mul_one := _, npow := comm_monoid.npow (function.injective.comm_monoid f hf one mul npow), npow_zero' := _, npow_succ' := _, mul_comm := _, zero := mul_zero_class.zero (function.injective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pushforward a monoid_with_zero
class along a surjective function.
See note [reducible non-instances].
Equations
- function.surjective.comm_monoid_with_zero f hf zero one mul npow = {mul := comm_monoid.mul (function.surjective.comm_monoid f hf one mul npow), mul_assoc := _, one := comm_monoid.one (function.surjective.comm_monoid f hf one mul npow), one_mul := _, mul_one := _, npow := comm_monoid.npow (function.surjective.comm_monoid f hf one mul npow), npow_zero' := _, npow_succ' := _, mul_comm := _, zero := mul_zero_class.zero (function.surjective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _}
Pullback a monoid_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.cancel_monoid_with_zero f hf zero one mul npow = {mul := monoid.mul (function.injective.monoid f hf one mul npow), mul_assoc := _, one := monoid.one (function.injective.monoid f hf one mul npow), one_mul := _, mul_one := _, npow := monoid.npow (function.injective.monoid f hf one mul npow), npow_zero' := _, npow_succ' := _, zero := mul_zero_class.zero (function.injective.mul_zero_class f hf zero mul), zero_mul := _, mul_zero := _, mul_left_cancel_of_ne_zero := _, mul_right_cancel_of_ne_zero := _}
Pullback a cancel_comm_monoid_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.cancel_comm_monoid_with_zero f hf zero one mul npow = {mul := comm_monoid_with_zero.mul (function.injective.comm_monoid_with_zero f hf zero one mul npow), mul_assoc := _, one := comm_monoid_with_zero.one (function.injective.comm_monoid_with_zero f hf zero one mul npow), one_mul := _, mul_one := _, npow := comm_monoid_with_zero.npow (function.injective.comm_monoid_with_zero f hf zero one mul npow), npow_zero' := _, npow_succ' := _, mul_comm := _, zero := comm_monoid_with_zero.zero (function.injective.comm_monoid_with_zero f hf zero one mul npow), zero_mul := _, mul_zero := _, mul_left_cancel_of_ne_zero := _}
Pullback a group_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.group_with_zero f hf zero one mul inv div npow zpow = {mul := monoid_with_zero.mul (function.injective.monoid_with_zero f hf zero one mul npow), mul_assoc := _, one := monoid_with_zero.one (function.injective.monoid_with_zero f hf zero one mul npow), one_mul := _, mul_one := _, npow := monoid_with_zero.npow (function.injective.monoid_with_zero f hf zero one mul npow), npow_zero' := _, npow_succ' := _, zero := monoid_with_zero.zero (function.injective.monoid_with_zero f hf zero one mul npow), zero_mul := _, mul_zero := _, inv := div_inv_monoid.inv (function.injective.div_inv_monoid f hf one mul inv div npow zpow), div := div_inv_monoid.div (function.injective.div_inv_monoid f hf one mul inv div npow zpow), div_eq_mul_inv := _, zpow := div_inv_monoid.zpow (function.injective.div_inv_monoid f hf one mul inv div npow zpow), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}
Pushforward a group_with_zero
class along an surjective function.
See note [reducible non-instances].
Equations
- function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow = {mul := monoid_with_zero.mul (function.surjective.monoid_with_zero f hf zero one mul npow), mul_assoc := _, one := monoid_with_zero.one (function.surjective.monoid_with_zero f hf zero one mul npow), one_mul := _, mul_one := _, npow := monoid_with_zero.npow (function.surjective.monoid_with_zero f hf zero one mul npow), npow_zero' := _, npow_succ' := _, zero := monoid_with_zero.zero (function.surjective.monoid_with_zero f hf zero one mul npow), zero_mul := _, mul_zero := _, inv := div_inv_monoid.inv (function.surjective.div_inv_monoid f hf one mul inv div npow zpow), div := div_inv_monoid.div (function.surjective.div_inv_monoid f hf one mul inv div npow zpow), div_eq_mul_inv := _, zpow := div_inv_monoid.zpow (function.surjective.div_inv_monoid f hf one mul inv div npow zpow), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}
Pullback a comm_group_with_zero
class along an injective function.
See note [reducible non-instances].
Equations
- function.injective.comm_group_with_zero f hf zero one mul inv div npow zpow = {mul := group_with_zero.mul (function.injective.group_with_zero f hf zero one mul inv div npow zpow), mul_assoc := _, one := group_with_zero.one (function.injective.group_with_zero f hf zero one mul inv div npow zpow), one_mul := _, mul_one := _, npow := group_with_zero.npow (function.injective.group_with_zero f hf zero one mul inv div npow zpow), npow_zero' := _, npow_succ' := _, mul_comm := _, zero := group_with_zero.zero (function.injective.group_with_zero f hf zero one mul inv div npow zpow), zero_mul := _, mul_zero := _, inv := group_with_zero.inv (function.injective.group_with_zero f hf zero one mul inv div npow zpow), div := group_with_zero.div (function.injective.group_with_zero f hf zero one mul inv div npow zpow), div_eq_mul_inv := _, zpow := group_with_zero.zpow (function.injective.group_with_zero f hf zero one mul inv div npow zpow), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}
Pushforward a comm_group_with_zero
class along a surjective function.
Equations
- function.surjective.comm_group_with_zero h01 f hf zero one mul inv div npow zpow = {mul := group_with_zero.mul (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), mul_assoc := _, one := group_with_zero.one (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), one_mul := _, mul_one := _, npow := group_with_zero.npow (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), npow_zero' := _, npow_succ' := _, mul_comm := _, zero := group_with_zero.zero (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), zero_mul := _, mul_zero := _, inv := group_with_zero.inv (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), div := group_with_zero.div (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), div_eq_mul_inv := _, zpow := group_with_zero.zpow (function.surjective.group_with_zero h01 f hf zero one mul inv div npow zpow), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}