# Documentation

Mathlib.Algebra.Group.ULift

# ULift instances for groups and monoids #

This file defines instances for group, monoid, semigroup and related structures on ULift types.

(Recall ULift α is just a "copy" of a type α in a higher universe.)

We also provide MulEquiv.ulift : ULift R ≃* R≃* R (and its additive analogue).

instance ULift.zero {α : Type u} [inst : Zero α] :
Zero ()
Equations
• ULift.zero = { zero := { down := 0 } }
instance ULift.one {α : Type u} [inst : One α] :
One ()
Equations
• ULift.one = { one := { down := 1 } }
@[simp]
theorem ULift.zero_down {α : Type u} [inst : Zero α] :
0.down = 0
@[simp]
theorem ULift.one_down {α : Type u} [inst : One α] :
1.down = 1
Equations
• ULift.add = { add := fun f g => { down := f.down + g.down } }
instance ULift.mul {α : Type u} [inst : Mul α] :
Mul ()
Equations
• ULift.mul = { mul := fun f g => { down := f.down * g.down } }
@[simp]
theorem ULift.add_down {α : Type u} {x : } {y : } [inst : Add α] :
(x + y).down = x.down + y.down
@[simp]
theorem ULift.mul_down {α : Type u} {x : } {y : } [inst : Mul α] :
(x * y).down = x.down * y.down
instance ULift.sub {α : Type u} [inst : Sub α] :
Sub ()
Equations
• ULift.sub = { sub := fun f g => { down := f.down - g.down } }
instance ULift.div {α : Type u} [inst : Div α] :
Div ()
Equations
• ULift.div = { div := fun f g => { down := f.down / g.down } }
@[simp]
theorem ULift.sub_down {α : Type u} {x : } {y : } [inst : Sub α] :
(x - y).down = x.down - y.down
@[simp]
theorem ULift.div_down {α : Type u} {x : } {y : } [inst : Div α] :
(x / y).down = x.down / y.down
instance ULift.neg {α : Type u} [inst : Neg α] :
Neg ()
Equations
• ULift.neg = { neg := fun f => { down := -f.down } }
instance ULift.inv {α : Type u} [inst : Inv α] :
Inv ()
Equations
• ULift.inv = { inv := fun f => { down := f.down⁻¹ } }
@[simp]
theorem ULift.neg_down {α : Type u} {x : } [inst : Neg α] :
(-x).down = -x.down
@[simp]
theorem ULift.inv_down {α : Type u} {x : } [inst : Inv α] :
x⁻¹.down = x.down⁻¹
instance ULift.vadd {α : Type u} {β : Type u_1} [inst : VAdd α β] :
Equations
• ULift.vadd = { vadd := fun n x => { down := n +ᵥ x.down } }
instance ULift.smul {α : Type u} {β : Type u_1} [inst : SMul α β] :
SMul α ()
Equations
• ULift.smul = { smul := fun n x => { down := n x.down } }
@[simp]
theorem ULift.vadd_down {α : Type u} {β : Type u_1} [inst : VAdd α β] (a : α) (b : ) :
(a +ᵥ b).down = a +ᵥ b.down
@[simp]
theorem ULift.smul_down {α : Type u} {β : Type u_1} [inst : SMul α β] (a : α) (b : ) :
(a b).down = a b.down
instance ULift.pow {α : Type u} {β : Type u_1} [inst : Pow α β] :
Pow () β
Equations
• ULift.pow = { pow := fun x n => { down := x.down ^ n } }
@[simp]
theorem ULift.pow_down {α : Type u} {β : Type u_1} [inst : Pow α β] (a : ) (b : β) :
(a ^ b).down = a.down ^ b
def ULift.MulEquiv.ulift {α : Type u} [inst : Mul α] :
≃* α

The multiplicative equivalence between ULift α and α.

Equations
• One or more equations did not get rendered due to their size.
instance ULift.semigroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.addSemigroup {α : Type u} [inst : ] :
Equations
Equations
instance ULift.addCommSemigroup {α : Type u} [inst : ] :
Equations
def ULift.addCommSemigroup.proof_2 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.commSemigroup {α : Type u} [inst : ] :
Equations
def ULift.addZeroClass.proof_1 {α : Type u_1} :
Function.Injective Equiv.ulift
Equations
instance ULift.addZeroClass {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addZeroClass.proof_3 {α : Type u_2} [inst : ] :
∀ (x y : ), Equiv.ulift (x + y) = Equiv.ulift (x + y)
Equations
• (_ : Equiv.ulift (x + y) = Equiv.ulift (x + y)) = (_ : Equiv.ulift (x + y) = Equiv.ulift (x + y))
def ULift.addZeroClass.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
instance ULift.mulOneClass {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.mulZeroOneClass {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addMonoid.proof_1 {α : Type u_1} :
Function.Injective Equiv.ulift
Equations
instance ULift.addMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
def ULift.addMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.monoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addCommMonoid.proof_1 {α : Type u_1} :
Function.Injective Equiv.ulift
Equations
def ULift.addCommMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
def ULift.addCommMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addCommMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
instance ULift.addCommMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.commMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.natCast {α : Type u} [inst : ] :
Equations
• ULift.natCast = { natCast := fun a => { down := a } }
instance ULift.intCast {α : Type u} [inst : ] :
Equations
• ULift.intCast = { intCast := fun a => { down := a } }
@[simp]
theorem ULift.up_natCast {α : Type u} [inst : ] (n : ) :
{ down := n } = n
@[simp]
theorem ULift.up_intCast {α : Type u} [inst : ] (n : ) :
{ down := n } = n
@[simp]
theorem ULift.down_natCast {α : Type u} [inst : ] (n : ) :
(n).down = n
@[simp]
theorem ULift.down_intCast {α : Type u} [inst : ] (n : ) :
(n).down = n
instance ULift.addMonoidWithOne {α : Type u} [inst : ] :
Equations
instance ULift.addCommMonoidWithOne {α : Type u} [inst : ] :
Equations
• ULift.addCommMonoidWithOne = let src := ULift.addMonoidWithOne; let src_1 := ULift.addCommMonoid; AddCommMonoidWithOne.mk (_ : ∀ (a b : ), a + b = b + a)
instance ULift.monoidWithZero {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.commMonoidWithZero {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.subNegAddMonoid.proof_6 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.subNegAddMonoid.proof_7 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.subNegAddMonoid.proof_5 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x - x_1) = Equiv.ulift (x - x_1)
Equations
• (_ : Equiv.ulift (x - x) = Equiv.ulift (x - x)) = (_ : Equiv.ulift (x - x) = Equiv.ulift (x - x))
def ULift.subNegAddMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ), Equiv.ulift (-x) = Equiv.ulift (-x)
Equations
• (_ : Equiv.ulift (-x) = Equiv.ulift (-x)) = (_ : Equiv.ulift (-x) = Equiv.ulift (-x))
def ULift.subNegAddMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
Equations
instance ULift.subNegAddMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.subNegAddMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
instance ULift.divInvMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addGroup.proof_5 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x - x_1) = Equiv.ulift (x - x_1)
Equations
• (_ : Equiv.ulift (x - x) = Equiv.ulift (x - x)) = (_ : Equiv.ulift (x - x) = Equiv.ulift (x - x))
def ULift.addGroup.proof_1 {α : Type u_1} :
Function.Injective Equiv.ulift
Equations
def ULift.addGroup.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
def ULift.addGroup.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
def ULift.addGroup.proof_7 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addGroup.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ), Equiv.ulift (-x) = Equiv.ulift (-x)
Equations
• (_ : Equiv.ulift (-x) = Equiv.ulift (-x)) = (_ : Equiv.ulift (-x) = Equiv.ulift (-x))
instance ULift.addGroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addGroup.proof_6 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
instance ULift.group {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.addCommGroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addCommGroup.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ), Equiv.ulift (-x) = Equiv.ulift (-x)
Equations
• (_ : Equiv.ulift (-x) = Equiv.ulift (-x)) = (_ : Equiv.ulift (-x) = Equiv.ulift (-x))
def ULift.addCommGroup.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
def ULift.addCommGroup.proof_7 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addCommGroup.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
def ULift.addCommGroup.proof_6 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addCommGroup.proof_1 {α : Type u_1} :
Function.Injective Equiv.ulift
Equations
def ULift.addCommGroup.proof_5 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x - x_1) = Equiv.ulift (x - x_1)
Equations
• (_ : Equiv.ulift (x - x) = Equiv.ulift (x - x)) = (_ : Equiv.ulift (x - x) = Equiv.ulift (x - x))
instance ULift.commGroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.addGroupWithOne {α : Type u} [inst : ] :
Equations
• ULift.addGroupWithOne = let src := ULift.addMonoidWithOne; let src_1 := ULift.addGroup; AddGroupWithOne.mk SubNegMonoid.zsmul (_ : ∀ (a : ), -a + a = 0)
instance ULift.addCommGroupWithOne {α : Type u} [inst : ] :
Equations
instance ULift.groupWithZero {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.commGroupWithZero {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.addLeftCancelSemigroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
Equations
def ULift.addLeftCancelSemigroup.proof_2 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.leftCancelSemigroup {α : Type u} [inst : ] :
Equations
Equations
def ULift.addRightCancelSemigroup.proof_2 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.addRightCancelSemigroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.rightCancelSemigroup {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.addLeftCancelMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addLeftCancelMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
Equations
def ULift.addLeftCancelMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addLeftCancelMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.leftCancelMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
Equations
def ULift.addRightCancelMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
def ULift.addRightCancelMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
instance ULift.addRightCancelMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addRightCancelMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.rightCancelMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.addCancelMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addCancelMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
Equations
def ULift.addCancelMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
def ULift.addCancelMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
instance ULift.cancelMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addCancelCommMonoid.proof_4 {α : Type u_2} [inst : ] :
∀ (x : ) (x_1 : ), Equiv.ulift (x_1 x) = Equiv.ulift (x_1 x)
Equations
• (_ : Equiv.ulift (x x) = Equiv.ulift (x x)) = (_ : Equiv.ulift (x x) = Equiv.ulift (x x))
Equations
def ULift.addCancelCommMonoid.proof_3 {α : Type u_2} [inst : ] :
∀ (x x_1 : ), Equiv.ulift (x + x_1) = Equiv.ulift (x + x_1)
Equations
• (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x)) = (_ : Equiv.ulift (x + x) = Equiv.ulift (x + x))
instance ULift.addCancelCommMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
def ULift.addCancelCommMonoid.proof_2 {α : Type u_1} [inst : ] :
Equiv.ulift 0 = Equiv.ulift 0
Equations
• (_ : Equiv.ulift 0 = Equiv.ulift 0) = (_ : Equiv.ulift 0 = Equiv.ulift 0)
instance ULift.cancelCommMonoid {α : Type u} [inst : ] :
Equations
• One or more equations did not get rendered due to their size.
instance ULift.nontrivial {α : Type u} [inst : ] :
Equations