mathlib documentation

algebra.opposites

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 α

def mul_opposite (α : Type u) :
Type u

Multiplicative opposite of a type. This type inherits all additive structures on α and reverses left and right in multiplication.

Equations
def mul_opposite.op {α : Type u} :
α → αᵐᵒᵖ

The element of mul_opposite α that represents x : α.

Equations
def mul_opposite.unop {α : Type u} :
αᵐᵒᵖ → α

The element of α represented by x : αᵐᵒᵖ.

Equations
@[simp]
theorem mul_opposite.unop_op {α : Type u} (x : α) :
@[simp]
theorem mul_opposite.op_unop {α : Type u} (x : αᵐᵒᵖ) :
@[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
def mul_opposite.op_equiv {α : Type u} :

The canonical bijection between αᵐᵒᵖ and α.

Equations
@[simp]
theorem mul_opposite.op_inj {α : Type u} {x y : α} :
@[simp]
theorem mul_opposite.unop_inj {α : Type u} {x y : αᵐᵒᵖ} :
@[protected, instance]
@[protected, instance]
def mul_opposite.inhabited (α : Type u) [inhabited α] :
Equations
@[protected, instance]
@[protected, instance]
def mul_opposite.unique (α : Type u) [unique α] :
Equations
@[protected, instance]
def mul_opposite.is_empty (α : Type u) [is_empty α] :
@[protected, instance]
def mul_opposite.has_zero (α : Type u) [has_zero α] :
Equations
@[protected, instance]
def mul_opposite.has_one (α : Type u) [has_one α] :
Equations
@[protected, instance]
def mul_opposite.has_add (α : Type u) [has_add α] :
Equations
@[protected, instance]
def mul_opposite.has_sub (α : Type u) [has_sub α] :
Equations
@[protected, instance]
def mul_opposite.has_neg (α : Type u) [has_neg α] :
Equations
@[protected, instance]
def mul_opposite.has_mul (α : Type u) [has_mul α] :
Equations
@[protected, instance]
def mul_opposite.has_inv (α : Type u) [has_inv α] :
Equations
@[protected, instance]
def mul_opposite.has_scalar (α : Type u) (R : Type u_1) [has_scalar R α] :
Equations
@[simp]
theorem mul_opposite.op_zero (α : Type u) [has_zero α] :
@[simp]
theorem mul_opposite.unop_zero (α : Type u) [has_zero α] :
@[simp]
theorem mul_opposite.op_one (α : Type u) [has_one α] :
@[simp]
theorem mul_opposite.unop_one (α : Type u) [has_one α] :
@[simp]
theorem mul_opposite.op_add {α : Type u} [has_add α] (x y : α) :
@[simp]
@[simp]
theorem mul_opposite.op_neg {α : Type u} [has_neg α] (x : α) :
@[simp]
theorem mul_opposite.unop_neg {α : Type u} [has_neg α] (x : αᵐᵒᵖ) :
@[simp]
theorem mul_opposite.op_mul {α : Type u} [has_mul α] (x y : α) :
@[simp]
theorem mul_opposite.unop_mul {α : Type u} [has_mul α] (x y : αᵐᵒᵖ) :
@[simp]
theorem mul_opposite.op_inv {α : Type u} [has_inv α] (x : α) :
@[simp]
@[simp]
theorem mul_opposite.op_sub {α : Type u} [has_sub α] (x y : α) :
@[simp]
@[simp]
theorem mul_opposite.op_smul {α : Type u} {R : Type u_1} [has_scalar R α] (c : R) (a : α) :
@[simp]
theorem mul_opposite.unop_smul {α : Type u} {R : Type u_1} [has_scalar R α] (c : R) (a : αᵐᵒᵖ) :
@[simp]
theorem mul_opposite.unop_eq_zero_iff {α : Type u_1} [has_zero α] (a : αᵐᵒᵖ) :
@[simp]
theorem mul_opposite.op_eq_zero_iff {α : Type u_1} [has_zero α] (a : α) :
theorem mul_opposite.unop_ne_zero_iff {α : Type u_1} [has_zero α] (a : αᵐᵒᵖ) :
theorem mul_opposite.op_ne_zero_iff {α : Type u_1} [has_zero α] (a : α) :
@[simp]
theorem mul_opposite.unop_eq_one_iff {α : Type u_1} [has_one α] (a : αᵐᵒᵖ) :
@[simp]
theorem mul_opposite.op_eq_one_iff {α : Type u_1} [has_one α] (a : α) :