# Documentation

Mathlib.Algebra.Group.OrderSynonym

# Group structure on the order type synonyms #

Transfer algebraic instances from α to αᵒᵈ and Lex α.

### OrderDual#

instance instZeroOrderDual {α : Type u_1} [h : Zero α] :
instance instOneOrderDual {α : Type u_1} [h : One α] :
instance instMulOrderDual {α : Type u_1} [h : Mul α] :
instance instNegOrderDual {α : Type u_1} [h : Neg α] :
instance instInvOrderDual {α : Type u_1} [h : Inv α] :
instance instSubOrderDual {α : Type u_1} [h : Sub α] :
instance instDivOrderDual {α : Type u_1} [h : Div α] :
instance OrderDual.instSMul {β : Type u_2} {α : Type u_1} [h : SMul β α] :
instance OrderDual.instVAdd {β : Type u_2} {α : Type u_1} [h : VAdd β α] :
instance OrderDual.instPow {α : Type u_1} {β : Type u_2} [h : Pow α β] :
Pow αᵒᵈ β
instance OrderDual.instSMul' {β : Type u_2} {α : Type u_1} [h : SMul β α] :
instance OrderDual.instVAdd' {β : Type u_2} {α : Type u_1} [h : VAdd β α] :
instance OrderDual.instPow' {α : Type u_1} {β : Type u_2} [h : Pow α β] :
Pow α βᵒᵈ
instance instAddSemigroupOrderDual {α : Type u_1} [h : ] :
instance instSemigroupOrderDual {α : Type u_1} [h : ] :
instance instAddCommSemigroupOrderDual {α : Type u_1} [h : ] :
instance instCommSemigroupOrderDual {α : Type u_1} [h : ] :
instance instAddLeftCancelSemigroupOrderDual {α : Type u_1} [h : ] :
instance instLeftCancelSemigroupOrderDual {α : Type u_1} [h : ] :
instance instRightCancelSemigroupOrderDual {α : Type u_1} [h : ] :
instance instAddZeroClassOrderDual {α : Type u_1} [h : ] :
instance instMulOneClassOrderDual {α : Type u_1} [h : ] :
instance instAddMonoidOrderDual {α : Type u_1} [h : ] :
instance instMonoidOrderDual {α : Type u_1} [h : ] :
instance OrderDual.instAddCommMonoid {α : Type u_1} [h : ] :
instance OrderDual.instCommMonoid {α : Type u_1} [h : ] :
instance instAddLeftCancelMonoidOrderDual {α : Type u_1} [h : ] :
instance instLeftCancelMonoidOrderDual {α : Type u_1} [h : ] :
instance instAddRightCancelMonoidOrderDual {α : Type u_1} [h : ] :
instance instRightCancelMonoidOrderDual {α : Type u_1} [h : ] :
instance instAddCancelMonoidOrderDual {α : Type u_1} [h : ] :
instance instCancelMonoidOrderDual {α : Type u_1} [h : ] :
instance OrderDual.instAddCancelCommMonoid {α : Type u_1} [h : ] :
instance OrderDual.instCancelCommMonoid {α : Type u_1} [h : ] :
instance instInvolutiveNegOrderDual {α : Type u_1} [h : ] :
instance instInvolutiveInvOrderDual {α : Type u_1} [h : ] :
instance instSubNegAddMonoidOrderDual {α : Type u_1} [h : ] :
instance instDivInvMonoidOrderDual {α : Type u_1} [h : ] :
instance OrderDual.subtractionMonoid {α : Type u_1} [h : ] :
instance instDivisionMonoidOrderDual {α : Type u_1} [h : ] :
instance OrderDual.subtractionCommMonoid {α : Type u_1} [h : ] :
instance instDivisionCommMonoidOrderDual {α : Type u_1} [h : ] :
instance OrderDual.instAddGroup {α : Type u_1} [h : ] :
instance OrderDual.instGroup {α : Type u_1} [h : ] :
instance instAddCommGroupOrderDual {α : Type u_1} [h : ] :
instance instCommGroupOrderDual {α : Type u_1} [h : ] :
@[simp]
theorem toDual_zero {α : Type u_1} [Zero α] :
OrderDual.toDual 0 = 0
@[simp]
theorem toDual_one {α : Type u_1} [One α] :
OrderDual.toDual 1 = 1
@[simp]
theorem ofDual_zero {α : Type u_1} [Zero α] :
OrderDual.ofDual 0 = 0
@[simp]
theorem ofDual_one {α : Type u_1} [One α] :
OrderDual.ofDual 1 = 1
@[simp]
theorem toDual_add {α : Type u_1} [Add α] (a : α) (b : α) :
OrderDual.toDual (a + b) = OrderDual.toDual a + OrderDual.toDual b
@[simp]
theorem toDual_mul {α : Type u_1} [Mul α] (a : α) (b : α) :
OrderDual.toDual (a * b) = OrderDual.toDual a * OrderDual.toDual b
@[simp]
theorem ofDual_add {α : Type u_1} [Add α] (a : αᵒᵈ) (b : αᵒᵈ) :
OrderDual.ofDual (a + b) = OrderDual.ofDual a + OrderDual.ofDual b
@[simp]
theorem ofDual_mul {α : Type u_1} [Mul α] (a : αᵒᵈ) (b : αᵒᵈ) :
OrderDual.ofDual (a * b) = OrderDual.ofDual a * OrderDual.ofDual b
@[simp]
theorem toDual_neg {α : Type u_1} [Neg α] (a : α) :
OrderDual.toDual (-a) = -OrderDual.toDual a
@[simp]
theorem toDual_inv {α : Type u_1} [Inv α] (a : α) :
OrderDual.toDual a⁻¹ = (OrderDual.toDual a)⁻¹
@[simp]
theorem ofDual_neg {α : Type u_1} [Neg α] (a : αᵒᵈ) :
OrderDual.ofDual (-a) = -OrderDual.ofDual a
@[simp]
theorem ofDual_inv {α : Type u_1} [Inv α] (a : αᵒᵈ) :
OrderDual.ofDual a⁻¹ = (OrderDual.ofDual a)⁻¹
@[simp]
theorem toDual_sub {α : Type u_1} [Sub α] (a : α) (b : α) :
OrderDual.toDual (a - b) = OrderDual.toDual a - OrderDual.toDual b
@[simp]
theorem toDual_div {α : Type u_1} [Div α] (a : α) (b : α) :
OrderDual.toDual (a / b) = OrderDual.toDual a / OrderDual.toDual b
@[simp]
theorem ofDual_sub {α : Type u_1} [Sub α] (a : αᵒᵈ) (b : αᵒᵈ) :
OrderDual.ofDual (a - b) = OrderDual.ofDual a - OrderDual.ofDual b
@[simp]
theorem ofDual_div {α : Type u_1} [Div α] (a : αᵒᵈ) (b : αᵒᵈ) :
OrderDual.ofDual (a / b) = OrderDual.ofDual a / OrderDual.ofDual b
@[simp]
theorem toDual_smul {β : Type u_2} {α : Type u_1} [SMul β α] (b : β) (a : α) :
OrderDual.toDual (b a) = b OrderDual.toDual a
@[simp]
theorem toDual_vadd {β : Type u_2} {α : Type u_1} [VAdd β α] (b : β) (a : α) :
OrderDual.toDual (b +ᵥ a) = b +ᵥ OrderDual.toDual a
@[simp]
theorem toDual_pow {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : β) :
OrderDual.toDual (a ^ b) = OrderDual.toDual a ^ b
@[simp]
theorem ofDual_smul {β : Type u_2} {α : Type u_1} [SMul β α] (b : β) (a : αᵒᵈ) :
OrderDual.ofDual (b a) = b OrderDual.ofDual a
@[simp]
theorem ofDual_vadd {β : Type u_2} {α : Type u_1} [VAdd β α] (b : β) (a : αᵒᵈ) :
OrderDual.ofDual (b +ᵥ a) = b +ᵥ OrderDual.ofDual a
@[simp]
theorem ofDual_pow {α : Type u_1} {β : Type u_2} [Pow α β] (a : αᵒᵈ) (b : β) :
OrderDual.ofDual (a ^ b) = OrderDual.ofDual a ^ b
@[simp]
theorem toDual_smul' {β : Type u_2} {α : Type u_1} [SMul β α] (b : β) (a : α) :
OrderDual.toDual b a = b a
@[simp]
theorem toDual_vadd' {β : Type u_2} {α : Type u_1} [VAdd β α] (b : β) (a : α) :
OrderDual.toDual b +ᵥ a = b +ᵥ a
@[simp]
theorem pow_toDual {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : β) :
a ^ OrderDual.toDual b = a ^ b
@[simp]
theorem ofDual_vadd' {β : Type u_2} {α : Type u_1} [VAdd β α] (b : βᵒᵈ) (a : α) :
OrderDual.ofDual b +ᵥ a = b +ᵥ a
@[simp]
theorem ofDual_smul' {β : Type u_2} {α : Type u_1} [SMul β α] (b : βᵒᵈ) (a : α) :
OrderDual.ofDual b a = b a
@[simp]
theorem pow_ofDual {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : βᵒᵈ) :
a ^ OrderDual.ofDual b = a ^ b

### Lexicographical order #

instance instZeroLex {α : Type u_1} [h : Zero α] :
Zero (Lex α)
instance instOneLex {α : Type u_1} [h : One α] :
One (Lex α)
instance instMulLex {α : Type u_1} [h : Mul α] :
Mul (Lex α)
instance instNegLex {α : Type u_1} [h : Neg α] :
Neg (Lex α)
instance instInvLex {α : Type u_1} [h : Inv α] :
Inv (Lex α)
instance instSubLex {α : Type u_1} [h : Sub α] :
Sub (Lex α)
instance instDivLex {α : Type u_1} [h : Div α] :
Div (Lex α)
instance Lex.instVAdd {β : Type u_2} {α : Type u_1} [h : VAdd β α] :
instance Lex.instSMul {β : Type u_2} {α : Type u_1} [h : SMul β α] :
SMul β (Lex α)
instance Lex.instPow {α : Type u_1} {β : Type u_2} [h : Pow α β] :
Pow (Lex α) β
instance Lex.instSMul' {β : Type u_2} {α : Type u_1} [h : SMul β α] :
SMul (Lex β) α
instance Lex.instVAdd' {β : Type u_2} {α : Type u_1} [h : VAdd β α] :
instance Lex.instPow' {α : Type u_1} {β : Type u_2} [h : Pow α β] :
Pow α (Lex β)
instance instAddSemigroupLex {α : Type u_1} [h : ] :
instance instSemigroupLex {α : Type u_1} [h : ] :
instance instAddCommSemigroupLex {α : Type u_1} [h : ] :
instance instCommSemigroupLex {α : Type u_1} [h : ] :
instance instAddLeftCancelSemigroupLex {α : Type u_1} [h : ] :
instance instLeftCancelSemigroupLex {α : Type u_1} [h : ] :
instance instAddRightCancelSemigroupLex {α : Type u_1} [h : ] :
instance instRightCancelSemigroupLex {α : Type u_1} [h : ] :
instance instAddZeroClassLex {α : Type u_1} [h : ] :
instance instMulOneClassLex {α : Type u_1} [h : ] :
instance instAddMonoidLex {α : Type u_1} [h : ] :
instance instMonoidLex {α : Type u_1} [h : ] :
Monoid (Lex α)
instance instAddCommMonoidLex {α : Type u_1} [h : ] :
instance instCommMonoidLex {α : Type u_1} [h : ] :
instance instAddLeftCancelMonoidLex {α : Type u_1} [h : ] :
instance instLeftCancelMonoidLex {α : Type u_1} [h : ] :
instance instAddRightCancelMonoidLex {α : Type u_1} [h : ] :
instance instRightCancelMonoidLex {α : Type u_1} [h : ] :
instance instAddCancelMonoidLex {α : Type u_1} [h : ] :
instance instCancelMonoidLex {α : Type u_1} [h : ] :
instance instAddCancelCommMonoidLex {α : Type u_1} [h : ] :
instance instCancelCommMonoidLex {α : Type u_1} [h : ] :
instance instInvolutiveNegLex {α : Type u_1} [h : ] :
instance instInvolutiveInvLex {α : Type u_1} [h : ] :
instance instSubNegAddMonoidLex {α : Type u_1} [h : ] :
instance instDivInvMonoidLex {α : Type u_1} [h : ] :
instance instDivisionMonoidLex {α : Type u_1} [h : ] :
instance instDivisionCommMonoidLex {α : Type u_1} [h : ] :
instance instAddGroupLex {α : Type u_1} [h : ] :
instance instGroupLex {α : Type u_1} [h : ] :
Group (Lex α)
instance instAddCommGroupLex {α : Type u_1} [h : ] :
instance instCommGroupLex {α : Type u_1} [h : ] :
@[simp]
theorem toLex_zero {α : Type u_1} [Zero α] :
toLex 0 = 0
@[simp]
theorem toLex_one {α : Type u_1} [One α] :
toLex 1 = 1
@[simp]
theorem ofLex_zero {α : Type u_1} [Zero α] :
ofLex 0 = 0
@[simp]
theorem ofLex_one {α : Type u_1} [One α] :
ofLex 1 = 1
@[simp]
theorem toLex_add {α : Type u_1} [Add α] (a : α) (b : α) :
toLex (a + b) = toLex a + toLex b
@[simp]
theorem toLex_mul {α : Type u_1} [Mul α] (a : α) (b : α) :
toLex (a * b) = toLex a * toLex b
@[simp]
theorem ofLex_add {α : Type u_1} [Add α] (a : Lex α) (b : Lex α) :
ofLex (a + b) = ofLex a + ofLex b
@[simp]
theorem ofLex_mul {α : Type u_1} [Mul α] (a : Lex α) (b : Lex α) :
ofLex (a * b) = ofLex a * ofLex b
@[simp]
theorem toLex_neg {α : Type u_1} [Neg α] (a : α) :
toLex (-a) = -toLex a
@[simp]
theorem toLex_inv {α : Type u_1} [Inv α] (a : α) :
toLex a⁻¹ = (toLex a)⁻¹
@[simp]
theorem ofLex_neg {α : Type u_1} [Neg α] (a : Lex α) :
ofLex (-a) = -ofLex a
@[simp]
theorem ofLex_inv {α : Type u_1} [Inv α] (a : Lex α) :
ofLex a⁻¹ = (ofLex a)⁻¹
@[simp]
theorem toLex_sub {α : Type u_1} [Sub α] (a : α) (b : α) :
toLex (a - b) = toLex a - toLex b
@[simp]
theorem toLex_div {α : Type u_1} [Div α] (a : α) (b : α) :
toLex (a / b) = toLex a / toLex b
@[simp]
theorem ofLex_sub {α : Type u_1} [Sub α] (a : Lex α) (b : Lex α) :
ofLex (a - b) = ofLex a - ofLex b
@[simp]
theorem ofLex_div {α : Type u_1} [Div α] (a : Lex α) (b : Lex α) :
ofLex (a / b) = ofLex a / ofLex b
@[simp]
theorem toLex_vadd {β : Type u_2} {α : Type u_1} [VAdd β α] (b : β) (a : α) :
toLex (b +ᵥ a) = b +ᵥ toLex a
@[simp]
theorem toLex_smul {β : Type u_2} {α : Type u_1} [SMul β α] (b : β) (a : α) :
toLex (b a) = b toLex a
@[simp]
theorem toLex_pow {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : β) :
toLex (a ^ b) = toLex a ^ b
@[simp]
theorem ofLex_vadd {β : Type u_2} {α : Type u_1} [VAdd β α] (b : β) (a : Lex α) :
ofLex (b +ᵥ a) = b +ᵥ ofLex a
@[simp]
theorem ofLex_smul {β : Type u_2} {α : Type u_1} [SMul β α] (b : β) (a : Lex α) :
ofLex (b a) = b ofLex a
@[simp]
theorem ofLex_pow {α : Type u_1} {β : Type u_2} [Pow α β] (a : Lex α) (b : β) :
ofLex (a ^ b) = ofLex a ^ b
@[simp]
theorem toLex_vadd' {β : Type u_2} {α : Type u_1} [VAdd β α] (b : β) (a : α) :
toLex b +ᵥ a = b +ᵥ a
@[simp]
theorem toLex_smul' {β : Type u_2} {α : Type u_1} [SMul β α] (b : β) (a : α) :
toLex b a = b a
@[simp]
theorem pow_toLex {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : β) :
a ^ toLex b = a ^ b
@[simp]
theorem ofLex_smul' {β : Type u_2} {α : Type u_1} [SMul β α] (b : Lex β) (a : α) :
ofLex b a = b a
@[simp]
theorem ofLex_vadd' {β : Type u_2} {α : Type u_1} [VAdd β α] (b : Lex β) (a : α) :
ofLex b +ᵥ a = b +ᵥ a
@[simp]
theorem pow_ofLex {α : Type u_1} {β : Type u_2} [Pow α β] (a : α) (b : Lex β) :
a ^ ofLex b = a ^ b