Multiplicative opposite and algebraic operations on it #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define mul_opposite α = αᵐᵒᵖ to be the multiplicative opposite of α. It inherits
all additive algebraic structures on α (in other files), and reverses the order of multipliers in
multiplicative structures, i.e., op (x * y) = op y * op x, where mul_opposite.op is the
canonical map from α to αᵐᵒᵖ.
We also define add_opposite α = αᵃᵒᵖ to be the additive opposite of α. It inherits all
multiplicative algebraic structures on α (in other files), and reverses the order of summands in
additive structures, i.e. op (x + y) = op y + op x, where add_opposite.op is the canonical map
from α to αᵃᵒᵖ.
Notation #
αᵐᵒᵖ = mul_opposite ααᵃᵒᵖ = add_opposite α
Tags #
multiplicative opposite, additive opposite
Multiplicative opposite of a type. This type inherits all additive structures on α and
reverses left and right in multiplication.
Instances for mul_opposite
        
        - smul_comm_class.op_left
 - smul_comm_class.op_right
 - is_scalar_tower.op_left
 - is_scalar_tower.op_right
 - has_uniform_continuous_const_smul.op
 - has_isometric_smul.opposite_of_comm
 - ring_invo_class.to_ring_equiv_class
 - semiring.to_opposite_module
 - mul_opposite.nontrivial
 - mul_opposite.inhabited
 - mul_opposite.subsingleton
 - mul_opposite.unique
 - mul_opposite.is_empty
 - mul_opposite.has_zero
 - mul_opposite.has_one
 - mul_opposite.has_add
 - mul_opposite.has_sub
 - mul_opposite.has_neg
 - mul_opposite.has_involutive_neg
 - mul_opposite.has_mul
 - mul_opposite.has_inv
 - mul_opposite.has_involutive_inv
 - mul_opposite.has_smul
 - mul_opposite.has_distrib_neg
 - mul_opposite.has_nat_cast
 - mul_opposite.has_int_cast
 - mul_opposite.add_semigroup
 - mul_opposite.add_left_cancel_semigroup
 - mul_opposite.add_right_cancel_semigroup
 - mul_opposite.add_comm_semigroup
 - mul_opposite.add_zero_class
 - mul_opposite.add_monoid
 - mul_opposite.add_comm_monoid
 - mul_opposite.add_monoid_with_one
 - mul_opposite.add_comm_monoid_with_one
 - mul_opposite.sub_neg_monoid
 - mul_opposite.add_group
 - mul_opposite.add_comm_group
 - mul_opposite.add_group_with_one
 - mul_opposite.add_comm_group_with_one
 - mul_opposite.semigroup
 - mul_opposite.left_cancel_semigroup
 - mul_opposite.right_cancel_semigroup
 - mul_opposite.comm_semigroup
 - mul_opposite.mul_one_class
 - mul_opposite.monoid
 - mul_opposite.left_cancel_monoid
 - mul_opposite.right_cancel_monoid
 - mul_opposite.cancel_monoid
 - mul_opposite.comm_monoid
 - mul_opposite.cancel_comm_monoid
 - mul_opposite.div_inv_monoid
 - mul_opposite.division_monoid
 - mul_opposite.division_comm_monoid
 - mul_opposite.group
 - mul_opposite.comm_group
 - mul_opposite.mul_action
 - mul_opposite.distrib_mul_action
 - mul_opposite.mul_distrib_mul_action
 - mul_opposite.is_scalar_tower
 - mul_opposite.smul_comm_class
 - mul_opposite.is_central_scalar
 - has_mul.to_has_opposite_smul
 - mul_action.opposite_regular.is_pretransitive
 - semigroup.opposite_smul_comm_class
 - semigroup.opposite_smul_comm_class'
 - monoid.to_opposite_mul_action
 - is_scalar_tower.opposite_mid
 - smul_comm_class.opposite_mid
 - left_cancel_monoid.to_has_faithful_opposite_scalar
 - cancel_monoid_with_zero.to_has_faithful_opposite_scalar
 - mul_opposite.distrib
 - mul_opposite.mul_zero_class
 - mul_opposite.mul_zero_one_class
 - mul_opposite.semigroup_with_zero
 - mul_opposite.monoid_with_zero
 - mul_opposite.non_unital_non_assoc_semiring
 - mul_opposite.non_unital_semiring
 - mul_opposite.non_assoc_semiring
 - mul_opposite.semiring
 - mul_opposite.non_unital_comm_semiring
 - mul_opposite.comm_semiring
 - mul_opposite.non_unital_non_assoc_ring
 - mul_opposite.non_unital_ring
 - mul_opposite.non_assoc_ring
 - mul_opposite.ring
 - mul_opposite.non_unital_comm_ring
 - mul_opposite.comm_ring
 - mul_opposite.no_zero_divisors
 - mul_opposite.is_domain
 - mul_opposite.group_with_zero
 - mul_opposite.has_rat_cast
 - mul_opposite.division_semiring
 - mul_opposite.division_ring
 - mul_opposite.semifield
 - mul_opposite.field
 - mul_zero_class.to_opposite_smul_with_zero
 - monoid_with_zero.to_opposite_mul_action_with_zero
 - mul_opposite.has_star
 - mul_opposite.has_involutive_star
 - mul_opposite.star_semigroup
 - mul_opposite.star_add_monoid
 - mul_opposite.star_ring
 - star_semigroup.to_opposite_star_module
 - mul_opposite.algebra
 - mul_opposite.module
 - restrict_scalars.op_module
 - mul_action.right_quotient_action'
 - mul_opposite.char_p
 - mul_opposite.uniform_space
 - mul_opposite.topological_space
 - mul_opposite.t2_space
 - complete_space.mul_opposite
 - has_continuous_const_smul.op
 - mul_opposite.has_continuous_const_smul
 - has_continuous_smul.op
 - mul_opposite.has_continuous_smul
 - has_continuous_mul.to_has_continuous_smul_op
 - mul_opposite.has_continuous_mul
 - mul_opposite.has_continuous_inv
 - mul_opposite.topological_group
 - mul_opposite.uniform_group
 - mul_opposite.has_continuous_star
 - mul_opposite.has_continuous_add
 - mul_opposite.topological_semiring
 - mul_opposite.has_continuous_neg
 - mul_opposite.topological_ring
 - mul_opposite.pseudo_emetric_space
 - mul_opposite.emetric_space
 - mul_opposite.pseudo_metric_space
 - mul_opposite.metric_space
 - ring.has_uniform_continuous_const_op_smul
 - mul_opposite.has_uniform_continuous_const_smul
 - mul_opposite.has_lipschitz_mul
 - has_bounded_smul.op
 - prod.has_isometric_smul''
 - mul_opposite.has_isometric_smul
 - pi.has_isometric_smul''
 - multiplicative.has_isometric_vadd''
 - normed_group.to_has_isometric_smul_right
 - mul_opposite.seminormed_add_group
 - mul_opposite.normed_add_group
 - mul_opposite.seminormed_add_comm_group
 - mul_opposite.normed_add_comm_group
 - mul_opposite.norm_one_class
 - mul_opposite.non_unital_semi_normed_ring
 - mul_opposite.semi_normed_ring
 - mul_opposite.non_unital_normed_ring
 - mul_opposite.normed_ring
 - non_unital_semi_normed_ring.to_has_bounded_op_smul
 - mul_opposite.normed_space
 - mul_opposite.normed_algebra
 - mul_opposite.measurable_space
 - mul_opposite.has_measurable_mul
 - mul_opposite.has_measurable_mul₂
 - has_measurable_smul.op
 - has_measurable_smul₂.op
 - has_measurable_smul_opposite_of_mul
 - has_measurable_smul₂_opposite_of_mul
 - measure_theory.is_mul_right_invariant.to_smul_invariant_measure_op
 - rack.opposite_rack
 - quandle.opposite_quandle
 
Additive opposite of a type. This type inherits all multiplicative structures on
α and reverses left and right in addition.
Instances for add_opposite
        
        - vadd_comm_class.op_left
 - vadd_comm_class.op_right
 - vadd_assoc_class.op_left
 - vadd_assoc_class.op_right
 - has_uniform_continuous_const_vadd.op
 - has_isometric_vadd.opposite_of_comm
 - add_opposite.nontrivial
 - add_opposite.inhabited
 - add_opposite.subsingleton
 - add_opposite.unique
 - add_opposite.is_empty
 - add_opposite.has_zero
 - add_opposite.has_add
 - add_opposite.has_neg
 - add_opposite.has_involutive_neg
 - add_opposite.has_vadd
 - add_opposite.has_one
 - add_opposite.has_mul
 - add_opposite.has_inv
 - add_opposite.has_involutive_inv
 - add_opposite.has_div
 - add_opposite.has_distrib_neg
 - add_opposite.has_nat_cast
 - add_opposite.has_int_cast
 - add_opposite.add_semigroup
 - add_opposite.left_cancel_add_semigroup
 - add_opposite.right_cancel_add_semigroup
 - add_opposite.add_comm_semigroup
 - add_opposite.add_zero_class
 - add_opposite.add_monoid
 - add_opposite.left_cancel_add_monoid
 - add_opposite.right_cancel_add_monoid
 - add_opposite.cancel_add_monoid
 - add_opposite.add_comm_monoid
 - add_opposite.cancel_add_comm_monoid
 - add_opposite.sub_neg_monoid
 - add_opposite.subtraction_monoid
 - add_opposite.subtraction_comm_monoid
 - add_opposite.add_group
 - add_opposite.add_comm_group
 - add_opposite.semigroup
 - add_opposite.left_cancel_semigroup
 - add_opposite.right_cancel_semigroup
 - add_opposite.comm_semigroup
 - add_opposite.mul_one_class
 - add_opposite.has_pow
 - add_opposite.monoid
 - add_opposite.comm_monoid
 - add_opposite.div_inv_monoid
 - add_opposite.group
 - add_opposite.comm_group
 - add_opposite.add_comm_monoid_with_one
 - add_opposite.add_comm_group_with_one
 - add_opposite.add_action
 - add_opposite.vadd_assoc_class
 - add_opposite.vadd_comm_class
 - add_opposite.is_central_vadd
 - has_add.to_has_opposite_vadd
 - add_action.opposite_regular.is_pretransitive
 - add_semigroup.opposite_vadd_comm_class
 - add_semigroup.opposite_vadd_comm_class'
 - add_monoid.to_opposite_add_action
 - vadd_assoc_class.opposite_mid
 - vadd_comm_class.opposite_mid
 - add_left_cancel_monoid.to_has_faithful_opposite_scalar
 - add_opposite.distrib
 - add_opposite.mul_zero_class
 - add_opposite.mul_zero_one_class
 - add_opposite.semigroup_with_zero
 - add_opposite.monoid_with_zero
 - add_opposite.non_unital_non_assoc_semiring
 - add_opposite.non_unital_semiring
 - add_opposite.non_assoc_semiring
 - add_opposite.semiring
 - add_opposite.non_unital_comm_semiring
 - add_opposite.comm_semiring
 - add_opposite.non_unital_non_assoc_ring
 - add_opposite.non_unital_ring
 - add_opposite.non_assoc_ring
 - add_opposite.ring
 - add_opposite.non_unital_comm_ring
 - add_opposite.comm_ring
 - add_opposite.no_zero_divisors
 - add_opposite.is_domain
 - add_opposite.group_with_zero
 - add_opposite.has_rat_cast
 - add_opposite.division_semiring
 - add_opposite.division_ring
 - add_opposite.semifield
 - add_opposite.field
 - add_action.right_quotient_action'
 - add_opposite.uniform_space
 - add_opposite.topological_space
 - add_opposite.t2_space
 - complete_space.add_opposite
 - has_continuous_const_vadd.op
 - add_opposite.has_continuous_const_vadd
 - has_continuous_vadd.op
 - add_opposite.has_continuous_vadd
 - has_continuous_add.to_has_continuous_vadd_op
 - add_opposite.has_continuous_add
 - add_opposite.has_continuous_neg
 - add_opposite.topological_add_group
 - add_opposite.uniform_add_group
 - add_opposite.has_continuous_mul
 - add_opposite.topological_semiring
 - add_opposite.topological_ring
 - add_opposite.pseudo_emetric_space
 - add_opposite.emetric_space
 - add_opposite.pseudo_metric_space
 - add_opposite.metric_space
 - add_opposite.has_uniform_continuous_const_vadd
 - add_opposite.has_lipschitz_add
 - prod.has_isometric_vadd''
 - add_opposite.has_isometric_vadd
 - pi.has_isometric_vadd''
 - additive.has_isometric_vadd''
 - normed_add_group.to_has_isometric_vadd_right
 - add_opposite.measurable_space
 - add_opposite.has_measurable_add
 - add_opposite.has_measurable_mul₂
 - has_measurable_vadd_opposite_of_add
 - has_measurable_smul₂_opposite_of_add
 - measure_theory.is_mul_right_invariant.to_vadd_invariant_measure_op
 
The element of mul_opposite α that represents x : α.
Equations
The element of αᵃᵒᵖ that represents x : α.
Equations
The element of α represented by x : αᵐᵒᵖ.
Equations
The element of α represented by x : αᵃᵒᵖ.
Equations
A recursor for mul_opposite. Use as induction x using mul_opposite.rec.
Equations
- mul_opposite.rec h = λ (X : αᵐᵒᵖ), h (mul_opposite.unop X)
 
A recursor for add_opposite. Use as induction x using add_opposite.rec.
Equations
- add_opposite.rec h = λ (X : αᵃᵒᵖ), h (add_opposite.unop X)
 
The canonical bijection between α and αᵐᵒᵖ.
Equations
- mul_opposite.op_equiv = {to_fun := mul_opposite.op α, inv_fun := mul_opposite.unop α, left_inv := _, right_inv := _}
 
The canonical bijection between α and αᵃᵒᵖ.
Equations
- add_opposite.op_equiv = {to_fun := add_opposite.op α, inv_fun := add_opposite.unop α, left_inv := _, right_inv := _}
 
Equations
Equations
Equations
Equations
Equations
- mul_opposite.has_zero α = {zero := mul_opposite.op 0}
 
Equations
- mul_opposite.has_one α = {one := mul_opposite.op 1}
 
Equations
- add_opposite.has_zero α = {zero := add_opposite.op 0}
 
Equations
- mul_opposite.has_add α = {add := λ (x y : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x + mul_opposite.unop y)}
 
Equations
- mul_opposite.has_sub α = {sub := λ (x y : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x - mul_opposite.unop y)}
 
Equations
- mul_opposite.has_neg α = {neg := λ (x : αᵐᵒᵖ), mul_opposite.op (-mul_opposite.unop x)}
 
Equations
- mul_opposite.has_involutive_neg α = {neg := has_neg.neg (mul_opposite.has_neg α), neg_neg := _}
 
Equations
- add_opposite.has_add α = {add := λ (x y : αᵃᵒᵖ), add_opposite.op (add_opposite.unop y + add_opposite.unop x)}
 
Equations
- mul_opposite.has_mul α = {mul := λ (x y : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop y * mul_opposite.unop x)}
 
Equations
- mul_opposite.has_inv α = {inv := λ (x : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x)⁻¹}
 
Equations
- add_opposite.has_neg α = {neg := λ (x : αᵃᵒᵖ), add_opposite.op (-add_opposite.unop x)}
 
Equations
- mul_opposite.has_involutive_inv α = {inv := has_inv.inv (mul_opposite.has_inv α), inv_inv := _}
 
Equations
- add_opposite.has_involutive_neg α = {neg := has_neg.neg (add_opposite.has_neg α), neg_neg := _}
 
Equations
- add_opposite.has_vadd α R = {vadd := λ (c : R) (x : αᵃᵒᵖ), add_opposite.op (c +ᵥ add_opposite.unop x)}
 
Equations
- mul_opposite.has_smul α R = {smul := λ (c : R) (x : αᵐᵒᵖ), mul_opposite.op (c • mul_opposite.unop x)}
 
Equations
Equations
- add_opposite.has_mul = {mul := λ (a b : αᵃᵒᵖ), add_opposite.op (add_opposite.unop a * add_opposite.unop b)}
 
Equations
- add_opposite.has_inv = {inv := λ (a : αᵃᵒᵖ), add_opposite.op (add_opposite.unop a)⁻¹}
 
Equations
Equations
- add_opposite.has_div = {div := λ (a b : αᵃᵒᵖ), add_opposite.op (add_opposite.unop a / add_opposite.unop b)}