Multiplicative opposite and algebraic operations on it #
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.
Additive opposite of a type. This type inherits all multiplicative structures on
α
and reverses left and right in addition.
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
- mul_opposite.has_scalar α R = {smul := λ (c : R) (x : αᵐᵒᵖ), mul_opposite.op (c • mul_opposite.unop x)}
Equations
- add_opposite.has_scalar α R = {vadd := λ (c : R) (x : αᵃᵒᵖ), add_opposite.op (c +ᵥ add_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)}