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 x * op y
, where mul_opposite.op
is the canonical map from α
to αᵐᵒᵖ
.
Notation #
αᵐᵒᵖ = mul_opposite α
Multiplicative opposite of a type. This type inherits all additive structures on α
and
reverses left and right in multiplication.
The element of mul_opposite α
that represents x : α
.
Equations
The element of α
represented by x : αᵐᵒᵖ
.
Equations
@[simp]
@[simp]
@[simp]
@[simp]
@[protected, simp]
def
mul_opposite.rec
{α : Type u}
{F : αᵐᵒᵖ → Sort v}
(h : Π (X : α), F (mul_opposite.op X))
(X : αᵐᵒᵖ) :
F X
A recursor for opposite
. Use as induction x using mul_opposite.rec
.
Equations
- mul_opposite.rec h = λ (X : αᵐᵒᵖ), h (mul_opposite.unop X)
@[simp]
The canonical bijection between αᵐᵒᵖ
and α
.
Equations
- mul_opposite.op_equiv = {to_fun := mul_opposite.op α, inv_fun := mul_opposite.unop α, left_inv := _, right_inv := _}
@[simp]
@[simp]
@[simp]
theorem
mul_opposite.unop_inj
{α : Type u}
{x y : αᵐᵒᵖ} :
mul_opposite.unop x = mul_opposite.unop y ↔ x = y
@[protected, instance]
@[protected, instance]
Equations
- mul_opposite.inhabited α = {default := mul_opposite.op (default α)}
@[protected, instance]
@[protected, instance]
Equations
@[protected, instance]
Equations
- mul_opposite.has_zero α = {zero := mul_opposite.op 0}
@[protected, instance]
Equations
- mul_opposite.has_one α = {one := mul_opposite.op 1}
@[protected, instance]
Equations
- mul_opposite.has_add α = {add := λ (x y : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x + mul_opposite.unop y)}
@[protected, instance]
Equations
- mul_opposite.has_sub α = {sub := λ (x y : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x - mul_opposite.unop y)}
@[protected, instance]
Equations
- mul_opposite.has_neg α = {neg := λ (x : αᵐᵒᵖ), mul_opposite.op (-mul_opposite.unop x)}
@[protected, instance]
Equations
- mul_opposite.has_mul α = {mul := λ (x y : αᵐᵒᵖ), mul_opposite.op ((mul_opposite.unop y) * mul_opposite.unop x)}
@[protected, instance]
Equations
- mul_opposite.has_inv α = {inv := λ (x : αᵐᵒᵖ), mul_opposite.op (mul_opposite.unop x)⁻¹}
@[protected, instance]
Equations
- mul_opposite.has_scalar α R = {smul := λ (c : R) (x : αᵐᵒᵖ), mul_opposite.op (c • mul_opposite.unop x)}
@[simp]
theorem
mul_opposite.op_add
{α : Type u}
[has_add α]
(x y : α) :
mul_opposite.op (x + y) = mul_opposite.op x + mul_opposite.op y
@[simp]
theorem
mul_opposite.unop_add
{α : Type u}
[has_add α]
(x y : αᵐᵒᵖ) :
mul_opposite.unop (x + y) = mul_opposite.unop x + mul_opposite.unop y
@[simp]
@[simp]
@[simp]
theorem
mul_opposite.op_mul
{α : Type u}
[has_mul α]
(x y : α) :
mul_opposite.op (x * y) = (mul_opposite.op y) * mul_opposite.op x
@[simp]
theorem
mul_opposite.unop_mul
{α : Type u}
[has_mul α]
(x y : αᵐᵒᵖ) :
mul_opposite.unop (x * y) = (mul_opposite.unop y) * mul_opposite.unop x
@[simp]
@[simp]
@[simp]
theorem
mul_opposite.op_sub
{α : Type u}
[has_sub α]
(x y : α) :
mul_opposite.op (x - y) = mul_opposite.op x - mul_opposite.op y
@[simp]
theorem
mul_opposite.unop_sub
{α : Type u}
[has_sub α]
(x y : αᵐᵒᵖ) :
mul_opposite.unop (x - y) = mul_opposite.unop x - mul_opposite.unop y
@[simp]
theorem
mul_opposite.op_smul
{α : Type u}
{R : Type u_1}
[has_scalar R α]
(c : R)
(a : α) :
mul_opposite.op (c • a) = c • mul_opposite.op a
@[simp]
theorem
mul_opposite.unop_smul
{α : Type u}
{R : Type u_1}
[has_scalar R α]
(c : R)
(a : αᵐᵒᵖ) :
mul_opposite.unop (c • a) = c • mul_opposite.unop a
@[simp]
theorem
mul_opposite.unop_eq_zero_iff
{α : Type u_1}
[has_zero α]
(a : αᵐᵒᵖ) :
mul_opposite.unop a = 0 ↔ a = 0
@[simp]
theorem
mul_opposite.op_eq_zero_iff
{α : Type u_1}
[has_zero α]
(a : α) :
mul_opposite.op a = 0 ↔ a = 0
theorem
mul_opposite.unop_ne_zero_iff
{α : Type u_1}
[has_zero α]
(a : αᵐᵒᵖ) :
mul_opposite.unop a ≠ 0 ↔ a ≠ 0
theorem
mul_opposite.op_ne_zero_iff
{α : Type u_1}
[has_zero α]
(a : α) :
mul_opposite.op a ≠ 0 ↔ a ≠ 0
@[simp]
theorem
mul_opposite.unop_eq_one_iff
{α : Type u_1}
[has_one α]
(a : αᵐᵒᵖ) :
mul_opposite.unop a = 1 ↔ a = 1
@[simp]
theorem
mul_opposite.op_eq_one_iff
{α : Type u_1}
[has_one α]
(a : α) :
mul_opposite.op a = 1 ↔ a = 1