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
- 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.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.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_zero_class.to_opposite_smul_with_zero
- monoid_with_zero.to_opposite_mul_action_with_zero
- mul_opposite.has_rat_cast
- mul_opposite.division_semiring
- mul_opposite.division_ring
- mul_opposite.semifield
- mul_opposite.field
- 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
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_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.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.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.has_distrib_neg
- 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
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)}